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}