2022-03-02 10:30:48 +00:00
// Code generated by smithy-go-codegen DO NOT EDIT.
package sts
import (
"context"
2023-08-01 12:43:19 +00:00
"errors"
"fmt"
"github.com/aws/aws-sdk-go-v2/aws"
2022-03-02 10:30:48 +00:00
awsmiddleware "github.com/aws/aws-sdk-go-v2/aws/middleware"
"github.com/aws/aws-sdk-go-v2/aws/signer/v4"
2023-08-01 12:43:19 +00:00
internalauth "github.com/aws/aws-sdk-go-v2/internal/auth"
smithyendpoints "github.com/aws/smithy-go/endpoints"
2022-03-02 10:30:48 +00:00
"github.com/aws/smithy-go/middleware"
smithyhttp "github.com/aws/smithy-go/transport/http"
)
// Returns the account identifier for the specified access key ID. Access keys
2023-05-01 20:59:21 +00:00
// consist of two parts: an access key ID (for example, AKIAIOSFODNN7EXAMPLE ) and
// a secret access key (for example, wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY ).
// For more information about access keys, see Managing Access Keys for IAM Users (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_access-keys.html)
2022-03-02 10:30:48 +00:00
// in the IAM User Guide. When you pass an access key ID to this operation, it
// returns the ID of the Amazon Web Services account to which the keys belong.
// Access key IDs beginning with AKIA are long-term credentials for an IAM user or
// the Amazon Web Services account root user. Access key IDs beginning with ASIA
// are temporary credentials that are created using STS operations. If the account
// in the response belongs to you, you can sign in as the root user and review your
2023-05-01 20:59:21 +00:00
// root user access keys. Then, you can pull a credentials report (https://docs.aws.amazon.com/IAM/latest/UserGuide/id_credentials_getting-report.html)
2022-03-02 10:30:48 +00:00
// to learn which IAM user owns the keys. To learn who requested the temporary
2023-05-01 20:59:21 +00:00
// credentials for an ASIA access key, view the STS events in your CloudTrail logs (https://docs.aws.amazon.com/IAM/latest/UserGuide/cloudtrail-integration.html)
2022-03-02 10:30:48 +00:00
// in the IAM User Guide. This operation does not indicate the state of the access
// key. The key might be active, inactive, or deleted. Active keys might not have
// permissions to perform an operation. Providing a deleted access key might return
// an error that the key doesn't exist.
func ( c * Client ) GetAccessKeyInfo ( ctx context . Context , params * GetAccessKeyInfoInput , optFns ... func ( * Options ) ) ( * GetAccessKeyInfoOutput , error ) {
if params == nil {
params = & GetAccessKeyInfoInput { }
}
result , metadata , err := c . invokeOperation ( ctx , "GetAccessKeyInfo" , params , optFns , c . addOperationGetAccessKeyInfoMiddlewares )
if err != nil {
return nil , err
}
out := result . ( * GetAccessKeyInfoOutput )
out . ResultMetadata = metadata
return out , nil
}
type GetAccessKeyInfoInput struct {
// The identifier of an access key. This parameter allows (through its regex
// pattern) a string of characters that can consist of any upper- or lowercase
// letter or digit.
//
// This member is required.
AccessKeyId * string
noSmithyDocumentSerde
}
type GetAccessKeyInfoOutput struct {
// The number used to identify the Amazon Web Services account.
Account * string
// Metadata pertaining to the operation's result.
ResultMetadata middleware . Metadata
noSmithyDocumentSerde
}
func ( c * Client ) addOperationGetAccessKeyInfoMiddlewares ( stack * middleware . Stack , options Options ) ( err error ) {
err = stack . Serialize . Add ( & awsAwsquery_serializeOpGetAccessKeyInfo { } , middleware . After )
if err != nil {
return err
}
err = stack . Deserialize . Add ( & awsAwsquery_deserializeOpGetAccessKeyInfo { } , middleware . After )
if err != nil {
return err
}
2023-08-01 12:43:19 +00:00
if err = addlegacyEndpointContextSetter ( stack , options ) ; err != nil {
return err
}
2022-03-02 10:30:48 +00:00
if err = addSetLoggerMiddleware ( stack , options ) ; err != nil {
return err
}
if err = awsmiddleware . AddClientRequestIDMiddleware ( stack ) ; err != nil {
return err
}
if err = smithyhttp . AddComputeContentLengthMiddleware ( stack ) ; err != nil {
return err
}
if err = addResolveEndpointMiddleware ( stack , options ) ; err != nil {
return err
}
if err = v4 . AddComputePayloadSHA256Middleware ( stack ) ; err != nil {
return err
}
if err = addRetryMiddlewares ( stack , options ) ; err != nil {
return err
}
if err = addHTTPSignerV4Middleware ( stack , options ) ; err != nil {
return err
}
if err = awsmiddleware . AddRawResponseToMetadata ( stack ) ; err != nil {
return err
}
if err = awsmiddleware . AddRecordResponseTiming ( stack ) ; err != nil {
return err
}
2023-07-18 07:48:48 +00:00
if err = addClientUserAgent ( stack , options ) ; err != nil {
2022-03-02 10:30:48 +00:00
return err
}
if err = smithyhttp . AddErrorCloseResponseBodyMiddleware ( stack ) ; err != nil {
return err
}
if err = smithyhttp . AddCloseResponseBodyMiddleware ( stack ) ; err != nil {
return err
}
2023-08-01 12:43:19 +00:00
if err = addGetAccessKeyInfoResolveEndpointMiddleware ( stack , options ) ; err != nil {
return err
}
2022-03-02 10:30:48 +00:00
if err = addOpGetAccessKeyInfoValidationMiddleware ( stack ) ; err != nil {
return err
}
if err = stack . Initialize . Add ( newServiceMetadataMiddleware_opGetAccessKeyInfo ( options . Region ) , middleware . Before ) ; err != nil {
return err
}
2023-05-01 20:59:21 +00:00
if err = awsmiddleware . AddRecursionDetection ( stack ) ; err != nil {
return err
}
2022-03-02 10:30:48 +00:00
if err = addRequestIDRetrieverMiddleware ( stack ) ; err != nil {
return err
}
if err = addResponseErrorMiddleware ( stack ) ; err != nil {
return err
}
if err = addRequestResponseLogging ( stack , options ) ; err != nil {
return err
}
2023-08-01 12:43:19 +00:00
if err = addendpointDisableHTTPSMiddleware ( stack , options ) ; err != nil {
return err
}
2022-03-02 10:30:48 +00:00
return nil
}
func newServiceMetadataMiddleware_opGetAccessKeyInfo ( region string ) * awsmiddleware . RegisterServiceMetadata {
return & awsmiddleware . RegisterServiceMetadata {
Region : region ,
ServiceID : ServiceID ,
SigningName : "sts" ,
OperationName : "GetAccessKeyInfo" ,
}
}
2023-08-01 12:43:19 +00:00
type opGetAccessKeyInfoResolveEndpointMiddleware struct {
EndpointResolver EndpointResolverV2
BuiltInResolver builtInParameterResolver
}
func ( * opGetAccessKeyInfoResolveEndpointMiddleware ) ID ( ) string {
return "ResolveEndpointV2"
}
func ( m * opGetAccessKeyInfoResolveEndpointMiddleware ) HandleSerialize ( ctx context . Context , in middleware . SerializeInput , next middleware . SerializeHandler ) (
out middleware . SerializeOutput , metadata middleware . Metadata , err error ,
) {
if awsmiddleware . GetRequiresLegacyEndpoints ( ctx ) {
return next . HandleSerialize ( ctx , in )
}
req , ok := in . Request . ( * smithyhttp . Request )
if ! ok {
return out , metadata , fmt . Errorf ( "unknown transport type %T" , in . Request )
}
if m . EndpointResolver == nil {
return out , metadata , fmt . Errorf ( "expected endpoint resolver to not be nil" )
}
params := EndpointParameters { }
m . BuiltInResolver . ResolveBuiltIns ( & params )
var resolvedEndpoint smithyendpoints . Endpoint
resolvedEndpoint , err = m . EndpointResolver . ResolveEndpoint ( ctx , params )
if err != nil {
return out , metadata , fmt . Errorf ( "failed to resolve service endpoint, %w" , err )
}
req . URL = & resolvedEndpoint . URI
for k := range resolvedEndpoint . Headers {
req . Header . Set (
k ,
resolvedEndpoint . Headers . Get ( k ) ,
)
}
authSchemes , err := internalauth . GetAuthenticationSchemes ( & resolvedEndpoint . Properties )
if err != nil {
var nfe * internalauth . NoAuthenticationSchemesFoundError
if errors . As ( err , & nfe ) {
// if no auth scheme is found, default to sigv4
signingName := "sts"
signingRegion := m . BuiltInResolver . ( * builtInResolver ) . Region
ctx = awsmiddleware . SetSigningName ( ctx , signingName )
ctx = awsmiddleware . SetSigningRegion ( ctx , signingRegion )
}
var ue * internalauth . UnSupportedAuthenticationSchemeSpecifiedError
if errors . As ( err , & ue ) {
return out , metadata , fmt . Errorf (
"This operation requests signer version(s) %v but the client only supports %v" ,
ue . UnsupportedSchemes ,
internalauth . SupportedSchemes ,
)
}
}
for _ , authScheme := range authSchemes {
switch authScheme . ( type ) {
case * internalauth . AuthenticationSchemeV4 :
v4Scheme , _ := authScheme . ( * internalauth . AuthenticationSchemeV4 )
var signingName , signingRegion string
if v4Scheme . SigningName == nil {
signingName = "sts"
} else {
signingName = * v4Scheme . SigningName
}
if v4Scheme . SigningRegion == nil {
signingRegion = m . BuiltInResolver . ( * builtInResolver ) . Region
} else {
signingRegion = * v4Scheme . SigningRegion
}
if v4Scheme . DisableDoubleEncoding != nil {
// The signer sets an equivalent value at client initialization time.
// Setting this context value will cause the signer to extract it
// and override the value set at client initialization time.
ctx = internalauth . SetDisableDoubleEncoding ( ctx , * v4Scheme . DisableDoubleEncoding )
}
ctx = awsmiddleware . SetSigningName ( ctx , signingName )
ctx = awsmiddleware . SetSigningRegion ( ctx , signingRegion )
break
case * internalauth . AuthenticationSchemeV4A :
v4aScheme , _ := authScheme . ( * internalauth . AuthenticationSchemeV4A )
if v4aScheme . SigningName == nil {
v4aScheme . SigningName = aws . String ( "sts" )
}
if v4aScheme . DisableDoubleEncoding != nil {
// The signer sets an equivalent value at client initialization time.
// Setting this context value will cause the signer to extract it
// and override the value set at client initialization time.
ctx = internalauth . SetDisableDoubleEncoding ( ctx , * v4aScheme . DisableDoubleEncoding )
}
ctx = awsmiddleware . SetSigningName ( ctx , * v4aScheme . SigningName )
ctx = awsmiddleware . SetSigningRegion ( ctx , v4aScheme . SigningRegionSet [ 0 ] )
break
case * internalauth . AuthenticationSchemeNone :
break
}
}
return next . HandleSerialize ( ctx , in )
}
func addGetAccessKeyInfoResolveEndpointMiddleware ( stack * middleware . Stack , options Options ) error {
return stack . Serialize . Insert ( & opGetAccessKeyInfoResolveEndpointMiddleware {
EndpointResolver : options . EndpointResolverV2 ,
BuiltInResolver : & builtInResolver {
Region : options . Region ,
UseDualStack : options . EndpointOptions . UseDualStackEndpoint ,
UseFIPS : options . EndpointOptions . UseFIPSEndpoint ,
Endpoint : options . BaseEndpoint ,
} ,
} , "ResolveEndpoint" , middleware . After )
}