github.com/aliyun/credentials-go@v1.4.7/credentials/instance_provider.go (about)

     1  package credentials
     2  
     3  import (
     4  	"os"
     5  	"strings"
     6  
     7  	"github.com/alibabacloud-go/tea/tea"
     8  )
     9  
    10  type instanceCredentialsProvider struct{}
    11  
    12  var providerInstance = new(instanceCredentialsProvider)
    13  
    14  func newInstanceCredentialsProvider() Provider {
    15  	return &instanceCredentialsProvider{}
    16  }
    17  
    18  func (p *instanceCredentialsProvider) resolve() (*Config, error) {
    19  	roleName, ok := os.LookupEnv(ENVEcsMetadata)
    20  	if !ok {
    21  		return nil, nil
    22  	}
    23  	enableIMDSv2, _ := os.LookupEnv(ENVEcsMetadataIMDSv2Enable)
    24  
    25  	config := &Config{
    26  		Type:         tea.String("ecs_ram_role"),
    27  		RoleName:     tea.String(roleName),
    28  		EnableIMDSv2: tea.Bool(strings.ToLower(enableIMDSv2) == "true"),
    29  	}
    30  	return config, nil
    31  }