func()

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
}