@@ -26,21 +26,17 @@ import (
2626 "github.com/aws/aws-sdk-go-v2/service/iam"
2727 rgapi "github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi"
2828 "github.com/aws/aws-sdk-go-v2/service/s3"
29+ "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
2930 "github.com/aws/aws-sdk-go-v2/service/sqs"
3031 "github.com/aws/aws-sdk-go-v2/service/ssm"
31- "github.com/aws/aws-sdk-go/aws "
32+ "github.com/aws/aws-sdk-go-v2/service/sts "
3233 "github.com/aws/aws-sdk-go/aws/awserr"
3334 "github.com/aws/aws-sdk-go/aws/request"
34- "github.com/aws/aws-sdk-go/service/secretsmanager"
35- "github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface"
36- "github.com/aws/aws-sdk-go/service/sts"
37- "github.com/aws/aws-sdk-go/service/sts/stsiface"
3835 "k8s.io/apimachinery/pkg/runtime"
3936
4037 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud"
4138 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/endpointsv2"
4239 awslogs "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/logs"
43- awsmetrics "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metrics"
4440 awsmetricsv2 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metricsv2"
4541 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/throttle"
4642 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/logger"
@@ -50,7 +46,7 @@ import (
5046
5147// NewASGClient creates a new ASG API client for a given session.
5248func NewASGClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * autoscaling.Client {
53- cfg := session .SessionV2 ()
49+ cfg := session .Session ()
5450
5551 autoscalingOpts := []func (* autoscaling.Options ){
5652 func (o * autoscaling.Options ) {
@@ -68,7 +64,7 @@ func NewASGClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
6864
6965// NewEC2Client creates a new EC2 API client for a given session.
7066func NewEC2Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * ec2.Client {
71- cfg := session .SessionV2 ()
67+ cfg := session .Session ()
7268 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
7369 ec2EndpointResolver := & endpointsv2.EC2EndpointResolver {
7470 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -92,7 +88,7 @@ func NewEC2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
9288
9389// NewELBClient creates a new ELB API client for a given session.
9490func NewELBClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * elb.Client {
95- cfg := session .SessionV2 ()
91+ cfg := session .Session ()
9692 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
9793 endpointResolver := & endpointsv2.ELBEndpointResolver {
9894 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -116,7 +112,7 @@ func NewELBClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
116112
117113// NewELBv2Client creates a new ELB v2 API client for a given session.
118114func NewELBv2Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * elbv2.Client {
119- cfg := session .SessionV2 ()
115+ cfg := session .Session ()
120116 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
121117 endpointResolver := & endpointsv2.ELBV2EndpointResolver {
122118 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -140,7 +136,7 @@ func NewELBv2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger lo
140136
141137// NewEventBridgeClient creates a new EventBridge API client for a given session.
142138func NewEventBridgeClient (scopeUser cloud.ScopeUsage , session cloud.Session , target runtime.Object ) * eventbridge.Client {
143- cfg := session .SessionV2 ()
139+ cfg := session .Session ()
144140 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
145141 endpointResolver := & endpointsv2.EventBridgeEndpointResolver {
146142 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -161,7 +157,7 @@ func NewEventBridgeClient(scopeUser cloud.ScopeUsage, session cloud.Session, tar
161157
162158// NewSQSClient creates a new SQS API client for a given session.
163159func NewSQSClient (scopeUser cloud.ScopeUsage , session cloud.Session , target runtime.Object ) * sqs.Client {
164- cfg := session .SessionV2 ()
160+ cfg := session .Session ()
165161 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
166162 endpointResolver := & endpointsv2.SQSEndpointResolver {
167163 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -182,7 +178,7 @@ func NewSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session, target runt
182178
183179// NewGlobalSQSClient for creating a new SQS API client that isn't tied to a cluster.
184180func NewGlobalSQSClient (scopeUser cloud.ScopeUsage , session cloud.Session ) * sqs.Client {
185- cfg := session .SessionV2 ()
181+ cfg := session .Session ()
186182 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
187183 endpointResolver := & endpointsv2.SQSEndpointResolver {
188184 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -203,7 +199,7 @@ func NewGlobalSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session) *sqs.
203199
204200// NewResourgeTaggingClient creates a new Resource Tagging API client for a given session.
205201func NewResourgeTaggingClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * rgapi.Client {
206- cfg := session .SessionV2 ()
202+ cfg := session .Session ()
207203 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
208204 endpointResolver := & endpointsv2.RGAPIEndpointResolver {
209205 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -215,27 +211,38 @@ func NewResourgeTaggingClient(scopeUser cloud.ScopeUsage, session cloud.Session,
215211 o .ClientLogMode = awslogs .GetAWSLogLevelV2 (logger .GetLogger ())
216212 o .EndpointResolverV2 = endpointResolver
217213 },
218- rgapi .WithAPIOptions (awsmetricsv2 .WithMiddlewares (scopeUser .ControllerName (), target ), awsmetricsv2 .WithCAPAUserAgentMiddleware ()),
214+ rgapi .WithAPIOptions (
215+ awsmetricsv2 .WithMiddlewares (scopeUser .ControllerName (), target ),
216+ awsmetricsv2 .WithCAPAUserAgentMiddleware (),
217+ throttle .WithServiceLimiterMiddleware (session .ServiceLimiter (rgapi .ServiceID )),
218+ ),
219219 }
220220
221221 return rgapi .NewFromConfig (cfg , opts ... )
222222}
223223
224224// NewSecretsManagerClient creates a new Secrets API client for a given session..
225- func NewSecretsManagerClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) secretsmanageriface.SecretsManagerAPI {
226- secretsClient := secretsmanager .New (session .Session (), aws .NewConfig ().WithLogLevel (awslogs .GetAWSLogLevel (logger .GetLogger ())).WithLogger (awslogs .NewWrapLogr (logger .GetLogger ())))
227- secretsClient .Handlers .Build .PushFrontNamed (getUserAgentHandler ())
228- secretsClient .Handlers .Sign .PushFront (session .ServiceLimiter (secretsClient .ServiceID ).LimitRequest )
229- secretsClient .Handlers .CompleteAttempt .PushFront (awsmetrics .CaptureRequestMetrics (scopeUser .ControllerName ()))
230- secretsClient .Handlers .CompleteAttempt .PushFront (session .ServiceLimiter (secretsClient .ServiceID ).ReviewResponse )
231- secretsClient .Handlers .Complete .PushBack (recordAWSPermissionsIssue (target ))
232-
233- return secretsClient
225+ func NewSecretsManagerClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * secretsmanager.Client {
226+ cfg := session .Session ()
227+
228+ secretsOpts := []func (* secretsmanager.Options ){
229+ func (o * secretsmanager.Options ) {
230+ o .Logger = logger .GetAWSLogger ()
231+ o .ClientLogMode = awslogs .GetAWSLogLevelV2 (logger .GetLogger ())
232+ },
233+ secretsmanager .WithAPIOptions (
234+ awsmetricsv2 .WithMiddlewares (scopeUser .ControllerName (), target ),
235+ awsmetricsv2 .WithCAPAUserAgentMiddleware (),
236+ throttle .WithServiceLimiterMiddleware (session .ServiceLimiter (secretsmanager .ServiceID )),
237+ ),
238+ }
239+
240+ return secretsmanager .NewFromConfig (cfg , secretsOpts ... )
234241}
235242
236243// NewEKSClient creates a new EKS API client for a given session.
237244func NewEKSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * eks.Client {
238- cfg := session .SessionV2 ()
245+ cfg := session .Session ()
239246 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
240247 eksEndpointResolver := & endpointsv2.EKSEndpointResolver {
241248 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -253,7 +260,7 @@ func NewEKSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
253260
254261// NewIAMClient creates a new IAM API client for a given session.
255262func NewIAMClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * iam.Client {
256- cfg := session .SessionV2 ()
263+ cfg := session .Session ()
257264
258265 iamOpts := []func (* iam.Options ){
259266 func (o * iam.Options ) {
@@ -270,18 +277,26 @@ func NewIAMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
270277}
271278
272279// NewSTSClient creates a new STS API client for a given session.
273- func NewSTSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) stsiface.STSAPI {
274- stsClient := sts .New (session .Session (), aws .NewConfig ().WithLogLevel (awslogs .GetAWSLogLevel (logger .GetLogger ())).WithLogger (awslogs .NewWrapLogr (logger .GetLogger ())))
275- stsClient .Handlers .Build .PushFrontNamed (getUserAgentHandler ())
276- stsClient .Handlers .CompleteAttempt .PushFront (awsmetrics .CaptureRequestMetrics (scopeUser .ControllerName ()))
277- stsClient .Handlers .Complete .PushBack (recordAWSPermissionsIssue (target ))
280+ func NewSTSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * sts.Client {
281+ cfg := session .Session ()
282+
283+ stsOpts := []func (* sts.Options ){
284+ func (o * sts.Options ) {
285+ o .Logger = logger .GetAWSLogger ()
286+ o .ClientLogMode = awslogs .GetAWSLogLevelV2 (logger .GetLogger ())
287+ },
288+ sts .WithAPIOptions (
289+ awsmetricsv2 .WithMiddlewares (scopeUser .ControllerName (), target ),
290+ awsmetricsv2 .WithCAPAUserAgentMiddleware (),
291+ ),
292+ }
278293
279- return stsClient
294+ return sts . NewFromConfig ( cfg , stsOpts ... )
280295}
281296
282297// NewSSMClient creates a new Secrets API client for a given session.
283298func NewSSMClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * ssm.Client {
284- cfg := session .SessionV2 ()
299+ cfg := session .Session ()
285300 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
286301 ssmEndpointResolver := & endpointsv2.SSMEndpointResolver {
287302 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -303,7 +318,7 @@ func NewSSMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
303318
304319// NewS3Client creates a new S3 API client for a given session.
305320func NewS3Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * s3.Client {
306- cfg := session .SessionV2 ()
321+ cfg := session .Session ()
307322 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
308323 s3EndpointResolver := & endpointsv2.S3EndpointResolver {
309324 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -340,7 +355,7 @@ func getUserAgentHandler() request.NamedHandler {
340355// AWSClients contains all the aws clients used by the scopes.
341356type AWSClients struct {
342357 ELB * elb.Client
343- SecretsManager secretsmanageriface. SecretsManagerAPI
358+ SecretsManager * secretsmanager. Client
344359 ResourceTagging * rgapi.Client
345360 ASG * autoscaling.Client
346361 EC2 * ec2.Client
0 commit comments