credentials_adapter.go 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package smithy
  2. import (
  3. "context"
  4. "fmt"
  5. "time"
  6. "github.com/aws/aws-sdk-go-v2/aws"
  7. "github.com/aws/smithy-go"
  8. "github.com/aws/smithy-go/auth"
  9. )
  10. // CredentialsAdapter adapts aws.Credentials to auth.Identity.
  11. type CredentialsAdapter struct {
  12. Credentials aws.Credentials
  13. }
  14. var _ auth.Identity = (*CredentialsAdapter)(nil)
  15. // Expiration returns the time of expiration for the credentials.
  16. func (v *CredentialsAdapter) Expiration() time.Time {
  17. return v.Credentials.Expires
  18. }
  19. // CredentialsProviderAdapter adapts aws.CredentialsProvider to auth.IdentityResolver.
  20. type CredentialsProviderAdapter struct {
  21. Provider aws.CredentialsProvider
  22. }
  23. var _ (auth.IdentityResolver) = (*CredentialsProviderAdapter)(nil)
  24. // GetIdentity retrieves AWS credentials using the underlying provider.
  25. func (v *CredentialsProviderAdapter) GetIdentity(ctx context.Context, _ smithy.Properties) (
  26. auth.Identity, error,
  27. ) {
  28. if v.Provider == nil {
  29. return &CredentialsAdapter{Credentials: aws.Credentials{}}, nil
  30. }
  31. creds, err := v.Provider.Retrieve(ctx)
  32. if err != nil {
  33. return nil, fmt.Errorf("get credentials: %w", err)
  34. }
  35. return &CredentialsAdapter{Credentials: creds}, nil
  36. }