in credentials/providers/default.go [60:109]
func (provider *DefaultCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
if provider.lastUsedProvider != nil {
inner, err1 := provider.lastUsedProvider.GetCredentials()
if err1 != nil {
err = err1
return
}
providerName := inner.ProviderName
if providerName == "" {
providerName = provider.lastUsedProvider.GetProviderName()
}
cc = &Credentials{
AccessKeyId: inner.AccessKeyId,
AccessKeySecret: inner.AccessKeySecret,
SecurityToken: inner.SecurityToken,
ProviderName: fmt.Sprintf("%s/%s", provider.GetProviderName(), providerName),
}
return
}
errors := []string{}
for _, p := range provider.providerChain {
provider.lastUsedProvider = p
inner, errInLoop := p.GetCredentials()
if errInLoop != nil {
errors = append(errors, errInLoop.Error())
// 如果有错误,进入下一个获取过程
continue
}
if inner != nil {
providerName := inner.ProviderName
if providerName == "" {
providerName = p.GetProviderName()
}
cc = &Credentials{
AccessKeyId: inner.AccessKeyId,
AccessKeySecret: inner.AccessKeySecret,
SecurityToken: inner.SecurityToken,
ProviderName: fmt.Sprintf("%s/%s", provider.GetProviderName(), providerName),
}
return
}
}
err = fmt.Errorf("unable to get credentials from any of the providers in the chain: %s", strings.Join(errors, ", "))
return
}