...
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
16 EnvVarAccessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_Id"
17 EnvVarAccessKeyIdNew = "ALIBABA_CLOUD_ACCESS_KEY_ID"
18
19 EnvVarAccessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET"
20 )
21
22 func newEnvProvider() Provider {
23 return &envProvider{}
24 }
25
26 func (p *envProvider) resolve() (*Config, 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 config := &Config{
42 Type: tea.String("access_key"),
43 AccessKeyId: tea.String(accessKeyId),
44 AccessKeySecret: tea.String(accessKeySecret),
45 }
46 return config, nil
47 }
48
View as plain text