env_provider.go 1.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. package credentials
  2. import (
  3. "errors"
  4. "os"
  5. "github.com/alibabacloud-go/tea/tea"
  6. )
  7. type envProvider struct{}
  8. var providerEnv = new(envProvider)
  9. const (
  10. // EnvVarAccessKeyId is a name of ALIBABA_CLOUD_ACCESS_KEY_Id
  11. EnvVarAccessKeyId = "ALIBABA_CLOUD_ACCESS_KEY_Id"
  12. // EnvVarAccessKeySecret is a name of ALIBABA_CLOUD_ACCESS_KEY_SECRET
  13. EnvVarAccessKeySecret = "ALIBABA_CLOUD_ACCESS_KEY_SECRET"
  14. )
  15. func newEnvProvider() Provider {
  16. return &envProvider{}
  17. }
  18. func (p *envProvider) resolve() (*Config, error) {
  19. accessKeyId, ok1 := os.LookupEnv(EnvVarAccessKeyId)
  20. accessKeySecret, ok2 := os.LookupEnv(EnvVarAccessKeySecret)
  21. if !ok1 || !ok2 {
  22. return nil, nil
  23. }
  24. if accessKeyId == "" {
  25. return nil, errors.New(EnvVarAccessKeyId + " cannot be empty")
  26. }
  27. if accessKeySecret == "" {
  28. return nil, errors.New(EnvVarAccessKeySecret + " cannot be empty")
  29. }
  30. config := &Config{
  31. Type: tea.String("access_key"),
  32. AccessKeyId: tea.String(accessKeyId),
  33. AccessKeySecret: tea.String(accessKeySecret),
  34. }
  35. return config, nil
  36. }