cache creds for keys/credentials auth type

This commit is contained in:
Mitsuhiro Tanda 2017-08-24 15:33:31 +09:00
parent 83b79dd624
commit d31f264576

View File

@ -96,7 +96,7 @@ var awsCredentialCache map[string]cache = make(map[string]cache)
var credentialCacheLock sync.RWMutex var credentialCacheLock sync.RWMutex
func GetCredentials(dsInfo *DatasourceInfo) (*credentials.Credentials, error) { func GetCredentials(dsInfo *DatasourceInfo) (*credentials.Credentials, error) {
cacheKey := dsInfo.Profile + ":" + dsInfo.AssumeRoleArn cacheKey := dsInfo.AccessKey + ":" + dsInfo.Profile + ":" + dsInfo.AssumeRoleArn
credentialCacheLock.RLock() credentialCacheLock.RLock()
if _, ok := awsCredentialCache[cacheKey]; ok { if _, ok := awsCredentialCache[cacheKey]; ok {
if awsCredentialCache[cacheKey].expiration != nil && if awsCredentialCache[cacheKey].expiration != nil &&
@ -150,6 +150,10 @@ func GetCredentials(dsInfo *DatasourceInfo) (*credentials.Credentials, error) {
sessionToken = *resp.Credentials.SessionToken sessionToken = *resp.Credentials.SessionToken
expiration = resp.Credentials.Expiration expiration = resp.Credentials.Expiration
} }
} else {
now := time.Now()
e := now.Add(5 * time.Minute)
expiration = &e
} }
sess, err := session.NewSession() sess, err := session.NewSession()