]> git.immae.eu Git - github/fretlink/terraform-provider-statuscake.git/blob - vendor/github.com/aws/aws-sdk-go/aws/credentials/env_provider.go
Upgrade to 0.12
[github/fretlink/terraform-provider-statuscake.git] / vendor / github.com / aws / aws-sdk-go / aws / credentials / env_provider.go
1 package credentials
2
3 import (
4 "os"
5
6 "github.com/aws/aws-sdk-go/aws/awserr"
7 )
8
9 // EnvProviderName provides a name of Env provider
10 const EnvProviderName = "EnvProvider"
11
12 var (
13 // ErrAccessKeyIDNotFound is returned when the AWS Access Key ID can't be
14 // found in the process's environment.
15 ErrAccessKeyIDNotFound = awserr.New("EnvAccessKeyNotFound", "AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY not found in environment", nil)
16
17 // ErrSecretAccessKeyNotFound is returned when the AWS Secret Access Key
18 // can't be found in the process's environment.
19 ErrSecretAccessKeyNotFound = awserr.New("EnvSecretNotFound", "AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY not found in environment", nil)
20 )
21
22 // A EnvProvider retrieves credentials from the environment variables of the
23 // running process. Environment credentials never expire.
24 //
25 // Environment variables used:
26 //
27 // * Access Key ID: AWS_ACCESS_KEY_ID or AWS_ACCESS_KEY
28 //
29 // * Secret Access Key: AWS_SECRET_ACCESS_KEY or AWS_SECRET_KEY
30 type EnvProvider struct {
31 retrieved bool
32 }
33
34 // NewEnvCredentials returns a pointer to a new Credentials object
35 // wrapping the environment variable provider.
36 func NewEnvCredentials() *Credentials {
37 return NewCredentials(&EnvProvider{})
38 }
39
40 // Retrieve retrieves the keys from the environment.
41 func (e *EnvProvider) Retrieve() (Value, error) {
42 e.retrieved = false
43
44 id := os.Getenv("AWS_ACCESS_KEY_ID")
45 if id == "" {
46 id = os.Getenv("AWS_ACCESS_KEY")
47 }
48
49 secret := os.Getenv("AWS_SECRET_ACCESS_KEY")
50 if secret == "" {
51 secret = os.Getenv("AWS_SECRET_KEY")
52 }
53
54 if id == "" {
55 return Value{ProviderName: EnvProviderName}, ErrAccessKeyIDNotFound
56 }
57
58 if secret == "" {
59 return Value{ProviderName: EnvProviderName}, ErrSecretAccessKeyNotFound
60 }
61
62 e.retrieved = true
63 return Value{
64 AccessKeyID: id,
65 SecretAccessKey: secret,
66 SessionToken: os.Getenv("AWS_SESSION_TOKEN"),
67 ProviderName: EnvProviderName,
68 }, nil
69 }
70
71 // IsExpired returns if the credentials have been retrieved.
72 func (e *EnvProvider) IsExpired() bool {
73 return !e.retrieved
74 }