in credentials/providers/ram_role_arn.go [341:371]
func (provider *RAMRoleARNCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
if provider.sessionCredentials == nil || provider.needUpdateCredential() {
// 获取前置凭证
previousCredentials, err1 := provider.credentialsProvider.GetCredentials()
if err1 != nil {
return nil, err1
}
sessionCredentials, err2 := provider.getCredentials(previousCredentials)
if err2 != nil {
return nil, err2
}
expirationTime, err := time.Parse("2006-01-02T15:04:05Z", sessionCredentials.Expiration)
if err != nil {
return nil, err
}
provider.expirationTimestamp = expirationTime.Unix()
provider.lastUpdateTimestamp = time.Now().Unix()
provider.previousProviderName = previousCredentials.ProviderName
provider.sessionCredentials = sessionCredentials
}
cc = &Credentials{
AccessKeyId: provider.sessionCredentials.AccessKeyId,
AccessKeySecret: provider.sessionCredentials.AccessKeySecret,
SecurityToken: provider.sessionCredentials.SecurityToken,
ProviderName: fmt.Sprintf("%s/%s", provider.GetProviderName(), provider.previousProviderName),
}
return
}