54 lines
1.3 KiB
Go
54 lines
1.3 KiB
Go
package credentials
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/aws/aws-sdk-go-v2/aws"
|
|
)
|
|
|
|
const (
|
|
// StaticCredentialsName provides a name of Static provider
|
|
StaticCredentialsName = "StaticCredentials"
|
|
)
|
|
|
|
// StaticCredentialsEmptyError is emitted when static credentials are empty.
|
|
type StaticCredentialsEmptyError struct{}
|
|
|
|
func (*StaticCredentialsEmptyError) Error() string {
|
|
return "static credentials are empty"
|
|
}
|
|
|
|
// A StaticCredentialsProvider is a set of credentials which are set, and will
|
|
// never expire.
|
|
type StaticCredentialsProvider struct {
|
|
Value aws.Credentials
|
|
}
|
|
|
|
// NewStaticCredentialsProvider return a StaticCredentialsProvider initialized with the AWS
|
|
// credentials passed in.
|
|
func NewStaticCredentialsProvider(key, secret, session string) StaticCredentialsProvider {
|
|
return StaticCredentialsProvider{
|
|
Value: aws.Credentials{
|
|
AccessKeyID: key,
|
|
SecretAccessKey: secret,
|
|
SessionToken: session,
|
|
},
|
|
}
|
|
}
|
|
|
|
// Retrieve returns the credentials or error if the credentials are invalid.
|
|
func (s StaticCredentialsProvider) Retrieve(_ context.Context) (aws.Credentials, error) {
|
|
v := s.Value
|
|
if v.AccessKeyID == "" || v.SecretAccessKey == "" {
|
|
return aws.Credentials{
|
|
Source: StaticCredentialsName,
|
|
}, &StaticCredentialsEmptyError{}
|
|
}
|
|
|
|
if len(v.Source) == 0 {
|
|
v.Source = StaticCredentialsName
|
|
}
|
|
|
|
return v, nil
|
|
}
|