in oss/credentials/ecs_role_credentials_provider.go [80:110]
func (p *ecsRoleCredentialsProvider) getCredentialsFromMetaData(ctx context.Context) (ecsRoleCredentials, error) {
var ecsCred ecsRoleCredentials
u, err := url.Parse(p.ramCredUrl)
if err != nil {
return ecsCred, err
}
u.Path = path.Join(u.Path, p.ramRole)
resp, err := p.httpGet(ctx, u.String())
if err != nil {
return ecsCred, err
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
return ecsCred, err
}
err = json.Unmarshal(body, &ecsCred)
if err != nil {
return ecsCred, err
}
if ecsCred.Code != "" && strings.ToUpper(ecsCred.Code) != "SUCCESS" {
return ecsCred, fmt.Errorf("failed to fetch credentials, return code:%s", ecsCred.Code)
}
if ecsCred.AccessKeyId == "" || ecsCred.AccessKeySecret == "" {
return ecsCred, fmt.Errorf("AccessKeyId or AccessKeySecret is empty, response body is '%s'", string(body))
}
return ecsCred, nil
}