func()

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
}