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