github.com/aliyun/credentials-go@v1.4.7/credentials/env_provider.go (about) 1 package credentials 2 3 import ( 4 "errors" 5 "os" 6 7 "github.com/alibabacloud-go/tea/tea" 8 ) 9 10 type envProvider struct{} 11 12 var providerEnv = new(envProvider) 13 14 const ( 15 // EnvVarAccessKeyId is a name of ALIBABA_CLOUD_ACCESS_KEY_Id 16 EnvVarAccessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_Id" 17 EnvVarAccessKeyIdNew = "ALIBABA_CLOUD_ACCESS_KEY_ID" 18 // EnvVarAccessKeySecret is a name of ALIBABA_CLOUD_ACCESS_KEY_SECRET 19 EnvVarAccessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET" 20 ) 21 22 func newEnvProvider() Provider { 23 return &envProvider{} 24 } 25 26 func (p *envProvider) resolve() (config *Config, err error) { 27 accessKeyId, ok1 := os.LookupEnv(EnvVarAccessKeyIdNew) 28 if !ok1 || accessKeyId == "" { 29 accessKeyId, ok1 = os.LookupEnv(EnvVarAccessKeyId) 30 } 31 accessKeySecret, ok2 := os.LookupEnv(EnvVarAccessKeySecret) 32 if !ok1 || !ok2 { 33 return nil, nil 34 } 35 if accessKeyId == "" { 36 return nil, errors.New(EnvVarAccessKeyIdNew + " or " + EnvVarAccessKeyId + " cannot be empty") 37 } 38 if accessKeySecret == "" { 39 return nil, errors.New(EnvVarAccessKeySecret + " cannot be empty") 40 } 41 42 securityToken := os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN") 43 44 if securityToken != "" { 45 config = &Config{ 46 Type: tea.String("sts"), 47 AccessKeyId: tea.String(accessKeyId), 48 AccessKeySecret: tea.String(accessKeySecret), 49 SecurityToken: tea.String(securityToken), 50 } 51 return 52 } 53 54 config = &Config{ 55 Type: tea.String("access_key"), 56 AccessKeyId: tea.String(accessKeyId), 57 AccessKeySecret: tea.String(accessKeySecret), 58 } 59 60 return 61 }