credentials/providers/env.go (42 lines of code) (raw):
package providers
import (
"fmt"
"os"
)
type EnvironmentVariableCredentialsProvider struct {
}
type EnvironmentVariableCredentialsProviderBuilder struct {
provider *EnvironmentVariableCredentialsProvider
}
func NewEnvironmentVariableCredentialsProviderBuilder() *EnvironmentVariableCredentialsProviderBuilder {
return &EnvironmentVariableCredentialsProviderBuilder{
provider: &EnvironmentVariableCredentialsProvider{},
}
}
func (builder *EnvironmentVariableCredentialsProviderBuilder) Build() (provider *EnvironmentVariableCredentialsProvider, err error) {
provider = builder.provider
return
}
func (provider *EnvironmentVariableCredentialsProvider) GetCredentials() (cc *Credentials, err error) {
accessKeyId := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")
if accessKeyId == "" {
err = fmt.Errorf("unable to get credentials from enviroment variables, Access key ID must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_ID)")
return
}
accessKeySecret := os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")
if accessKeySecret == "" {
err = fmt.Errorf("unable to get credentials from enviroment variables, Access key secret must be specified via environment variable (ALIBABA_CLOUD_ACCESS_KEY_SECRET)")
return
}
securityToken := os.Getenv("ALIBABA_CLOUD_SECURITY_TOKEN")
cc = &Credentials{
AccessKeyId: accessKeyId,
AccessKeySecret: accessKeySecret,
SecurityToken: securityToken,
ProviderName: provider.GetProviderName(),
}
return
}
func (provider *EnvironmentVariableCredentialsProvider) GetProviderName() string {
return "env"
}