mirror of https://github.com/grafana/grafana.git
37 lines
768 B
Go
37 lines
768 B
Go
package cloudwatch
|
|
|
|
import (
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/aws/aws-sdk-go/aws"
|
|
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
|
|
"github.com/aws/aws-sdk-go/aws/ec2metadata"
|
|
"github.com/aws/aws-sdk-go/aws/session"
|
|
)
|
|
|
|
type envelope struct {
|
|
session *session.Session
|
|
expiration time.Time
|
|
}
|
|
|
|
var sessCache = map[string]envelope{}
|
|
var sessCacheLock sync.RWMutex
|
|
|
|
// Session factory.
|
|
// Stubbable by tests.
|
|
//nolint:gocritic
|
|
var newSession = func(cfgs ...*aws.Config) (*session.Session, error) {
|
|
return session.NewSession(cfgs...)
|
|
}
|
|
|
|
// STS credentials factory.
|
|
// Stubbable by tests.
|
|
//nolint:gocritic
|
|
var newSTSCredentials = stscreds.NewCredentials
|
|
|
|
// EC2Metadata service factory.
|
|
// Stubbable by tests.
|
|
//nolint:gocritic
|
|
var newEC2Metadata = ec2metadata.New
|