env.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. package providers
  2. import (
  3. "fmt"
  4. "os"
  5. )
  6. type EnvironmentVariableCredentialsProvider struct {
  7. }
  8. type EnvironmentVariableCredentialsProviderBuilder struct {
  9. provider *EnvironmentVariableCredentialsProvider
  10. }
  11. func NewEnvironmentVariableCredentialsProviderBuilder() *EnvironmentVariableCredentialsProviderBuilder {
  12. return &EnvironmentVariableCredentialsProviderBuilder{
  13. provider: &EnvironmentVariableCredentialsProvider{},
  14. }
  15. }
  16. func (builder *EnvironmentVariableCredentialsProviderBuilder) Build() (provider *EnvironmentVariableCredentialsProvider, err error) {
  17. provider = builder.provider
  18. return
  19. }
  20. func (provider *EnvironmentVariableCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
  21. accessKeyId := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
  22. if accessKeyId == "" {
  23. err = fmt.Errorf("unable to get credentials from enviroment variables, Access key ID must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_ID)")
  24. return
  25. }
  26. accessKeySecret := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
  27. if accessKeySecret == "" {
  28. err = fmt.Errorf("unable to get credentials from enviroment variables, Access key secret must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_SECRET)")
  29. return
  30. }
  31. securityToken := os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
  32. cc = &Credentials{
  33. AccessKeyId: accessKeyId,
  34. AccessKeySecret: accessKeySecret,
  35. SecurityToken: securityToken,
  36. ProviderName: provider.GetProviderName(),
  37. }
  38. return
  39. }
  40. func (provider *EnvironmentVariableCredentialsProvider) GetProviderName() string {
  41. return "env"
  42. }