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  }