src

Go monorepo.
git clone git://code.dwrz.net/src
Log | Files | Refs

static_provider.go (1825B)


      1 package credentials
      2 
      3 import (
      4 	"context"
      5 
      6 	"github.com/aws/aws-sdk-go-v2/aws"
      7 )
      8 
      9 const (
     10 	// StaticCredentialsName provides a name of Static provider
     11 	StaticCredentialsName = "StaticCredentials"
     12 )
     13 
     14 // StaticCredentialsEmptyError is emitted when static credentials are empty.
     15 type StaticCredentialsEmptyError struct{}
     16 
     17 func (*StaticCredentialsEmptyError) Error() string {
     18 	return "static credentials are empty"
     19 }
     20 
     21 // A StaticCredentialsProvider is a set of credentials which are set, and will
     22 // never expire.
     23 type StaticCredentialsProvider struct {
     24 	Value aws.Credentials
     25 	// These values are for reporting purposes and are not meant to be set up directly
     26 	Source []aws.CredentialSource
     27 }
     28 
     29 // ProviderSources returns the credential chain that was used to construct this provider
     30 func (s StaticCredentialsProvider) ProviderSources() []aws.CredentialSource {
     31 	if s.Source == nil {
     32 		return []aws.CredentialSource{aws.CredentialSourceCode} // If no source has been set, assume this is used directly which means hardcoded creds
     33 	}
     34 	return s.Source
     35 }
     36 
     37 // NewStaticCredentialsProvider return a StaticCredentialsProvider initialized with the AWS
     38 // credentials passed in.
     39 func NewStaticCredentialsProvider(key, secret, session string) StaticCredentialsProvider {
     40 	return StaticCredentialsProvider{
     41 		Value: aws.Credentials{
     42 			AccessKeyID:     key,
     43 			SecretAccessKey: secret,
     44 			SessionToken:    session,
     45 		},
     46 	}
     47 }
     48 
     49 // Retrieve returns the credentials or error if the credentials are invalid.
     50 func (s StaticCredentialsProvider) Retrieve(_ context.Context) (aws.Credentials, error) {
     51 	v := s.Value
     52 	if v.AccessKeyID == "" || v.SecretAccessKey == "" {
     53 		return aws.Credentials{
     54 			Source: StaticCredentialsName,
     55 		}, &StaticCredentialsEmptyError{}
     56 	}
     57 
     58 	if len(v.Source) == 0 {
     59 		v.Source = StaticCredentialsName
     60 	}
     61 
     62 	return v, nil
     63 }