static_provider.go

 1package credentials
 2
 3import (
 4	"context"
 5
 6	"github.com/aws/aws-sdk-go-v2/aws"
 7)
 8
 9const (
10	// StaticCredentialsName provides a name of Static provider
11	StaticCredentialsName = "StaticCredentials"
12)
13
14// StaticCredentialsEmptyError is emitted when static credentials are empty.
15type StaticCredentialsEmptyError struct{}
16
17func (*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.
23type StaticCredentialsProvider struct {
24	Value aws.Credentials
25}
26
27// NewStaticCredentialsProvider return a StaticCredentialsProvider initialized with the AWS
28// credentials passed in.
29func NewStaticCredentialsProvider(key, secret, session string) StaticCredentialsProvider {
30	return StaticCredentialsProvider{
31		Value: aws.Credentials{
32			AccessKeyID:     key,
33			SecretAccessKey: secret,
34			SessionToken:    session,
35		},
36	}
37}
38
39// Retrieve returns the credentials or error if the credentials are invalid.
40func (s StaticCredentialsProvider) Retrieve(_ context.Context) (aws.Credentials, error) {
41	v := s.Value
42	if v.AccessKeyID == "" || v.SecretAccessKey == "" {
43		return aws.Credentials{
44			Source: StaticCredentialsName,
45		}, &StaticCredentialsEmptyError{}
46	}
47
48	if len(v.Source) == 0 {
49		v.Source = StaticCredentialsName
50	}
51
52	return v, nil
53}