in pkg/aws/ec2/api/wrapper.go [579:610]
func (e *ec2Wrapper) createSTSClient(
cfg aws.Config,
client *http.Client,
endpoint string,
sourceAcct, sourceArn string,
) *sts.Client {
stsClient := sts.NewFromConfig(cfg, func(o *sts.Options) {
o.HTTPClient = client
o.EndpointResolver = sts.EndpointResolverFromURL(endpoint)
o.Retryer = retry.AddWithMaxAttempts(retry.NewStandard(), MaxRetries)
if sourceAcct != "" && sourceArn != "" {
o.APIOptions = append(o.APIOptions, func(s *smithymiddleware.Stack) error {
return s.Build.Add(smithymiddleware.BuildMiddlewareFunc(
"AddHeaders",
func(ctx context.Context, in smithymiddleware.BuildInput, next smithymiddleware.BuildHandler) (
smithymiddleware.BuildOutput, smithymiddleware.Metadata, error,
) {
req := in.Request.(*smithyhttp.Request)
req.Header.Set(SourceKey, sourceArn)
req.Header.Set(AccountKey, sourceAcct)
return next.HandleBuild(ctx, in)
},
), smithymiddleware.After)
})
} else {
e.log.Info("Will use default STS client since empty source account or/and empty source arn", "SourceAcct", sourceAcct, "SourceArn", sourceArn)
}
})
return stsClient
}