instance_provider.go raw

   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  }
  32