소스 검색

cache creds for keys/credentials auth type

Mitsuhiro Tanda 8 년 전
부모
커밋
d31f264576
1개의 변경된 파일5개의 추가작업 그리고 1개의 파일을 삭제
  1. 5 1
      pkg/api/cloudwatch/cloudwatch.go

+ 5 - 1
pkg/api/cloudwatch/cloudwatch.go

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