in credentials/providers/ecs_ram_role.go [89:134]
func (provider *ECSRAMRoleCredentialsProvider) getRoleName() (roleName string, err error) {
req := &httputil.Request{
Method: "GET",
Protocol: "http",
Host: "100.100.100.200",
Path: "/latest/meta-data/ram/security-credentials/",
Headers: map[string]string{},
}
connectTimeout := 1 * time.Second
readTimeout := 1 * time.Second
if provider.httpOptions != nil && provider.httpOptions.ConnectTimeout > 0 {
connectTimeout = time.Duration(provider.httpOptions.ConnectTimeout) * time.Millisecond
}
if provider.httpOptions != nil && provider.httpOptions.ReadTimeout > 0 {
readTimeout = time.Duration(provider.httpOptions.ReadTimeout) * time.Millisecond
}
if provider.httpOptions != nil && provider.httpOptions.Proxy != "" {
req.Proxy = provider.httpOptions.Proxy
}
req.ConnectTimeout = connectTimeout
req.ReadTimeout = readTimeout
metadataToken, err := provider.getMetadataToken()
if err != nil {
return "", err
}
if metadataToken != "" {
req.Headers["x-aliyun-ecs-metadata-token"] = metadataToken
}
res, err := httpDo(req)
if err != nil {
err = fmt.Errorf("get role name failed: %s", err.Error())
return
}
if res.StatusCode != 200 {
err = fmt.Errorf("get role name failed: %s %d", req.BuildRequestURL(), res.StatusCode)
return
}
roleName = strings.TrimSpace(string(res.Body))
return
}