static_provider.go 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package credentials
  2. import (
  3. "github.com/aws/aws-sdk-go/aws/awserr"
  4. )
  5. // StaticProviderName provides a name of Static provider
  6. const StaticProviderName = "StaticProvider"
  7. var (
  8. // ErrStaticCredentialsEmpty is emitted when static credentials are empty.
  9. //
  10. // @readonly
  11. ErrStaticCredentialsEmpty = awserr.New("EmptyStaticCreds", "static credentials are empty", nil)
  12. )
  13. // A StaticProvider is a set of credentials which are set programmatically,
  14. // and will never expire.
  15. type StaticProvider struct {
  16. Value
  17. }
  18. // NewStaticCredentials returns a pointer to a new Credentials object
  19. // wrapping a static credentials value provider.
  20. func NewStaticCredentials(id, secret, token string) *Credentials {
  21. return NewCredentials(&StaticProvider{Value: Value{
  22. AccessKeyID: id,
  23. SecretAccessKey: secret,
  24. SessionToken: token,
  25. }})
  26. }
  27. // NewStaticCredentialsFromCreds returns a pointer to a new Credentials object
  28. // wrapping the static credentials value provide. Same as NewStaticCredentials
  29. // but takes the creds Value instead of individual fields
  30. func NewStaticCredentialsFromCreds(creds Value) *Credentials {
  31. return NewCredentials(&StaticProvider{Value: creds})
  32. }
  33. // Retrieve returns the credentials or error if the credentials are invalid.
  34. func (s *StaticProvider) Retrieve() (Value, error) {
  35. if s.AccessKeyID == "" || s.SecretAccessKey == "" {
  36. return Value{ProviderName: StaticProviderName}, ErrStaticCredentialsEmpty
  37. }
  38. if len(s.Value.ProviderName) == 0 {
  39. s.Value.ProviderName = StaticProviderName
  40. }
  41. return s.Value, nil
  42. }
  43. // IsExpired returns if the credentials are expired.
  44. //
  45. // For StaticProvider, the credentials never expired.
  46. func (s *StaticProvider) IsExpired() bool {
  47. return false
  48. }