@@ -26,31 +26,24 @@ 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"
3132 stsv2 "github.com/aws/aws-sdk-go-v2/service/sts"
32- "github.com/aws/aws-sdk-go/aws"
33- "github.com/aws/aws-sdk-go/aws/awserr"
34- "github.com/aws/aws-sdk-go/aws/request"
35- "github.com/aws/aws-sdk-go/service/secretsmanager"
36- "github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface"
3733 "k8s.io/apimachinery/pkg/runtime"
3834
3935 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud"
4036 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/endpointsv2"
4137 awslogs "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/logs"
42- awsmetrics "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metrics"
4338 awsmetricsv2 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metricsv2"
4439 stsservice "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/sts"
4540 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/throttle"
4641 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/logger"
47- "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/record"
48- "sigs.k8s.io/cluster-api-provider-aws/v2/version"
4942)
5043
5144// NewASGClient creates a new ASG API client for a given session.
5245func NewASGClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * autoscaling.Client {
53- cfg := session .SessionV2 ()
46+ cfg := session .Session ()
5447
5548 autoscalingOpts := []func (* autoscaling.Options ){
5649 func (o * autoscaling.Options ) {
@@ -68,7 +61,7 @@ func NewASGClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
6861
6962// NewEC2Client creates a new EC2 API client for a given session.
7063func NewEC2Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * ec2.Client {
71- cfg := session .SessionV2 ()
64+ cfg := session .Session ()
7265 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
7366 ec2EndpointResolver := & endpointsv2.EC2EndpointResolver {
7467 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -92,7 +85,7 @@ func NewEC2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
9285
9386// NewELBClient creates a new ELB API client for a given session.
9487func NewELBClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * elb.Client {
95- cfg := session .SessionV2 ()
88+ cfg := session .Session ()
9689 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
9790 endpointResolver := & endpointsv2.ELBEndpointResolver {
9891 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -116,7 +109,7 @@ func NewELBClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
116109
117110// NewELBv2Client creates a new ELB v2 API client for a given session.
118111func NewELBv2Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * elbv2.Client {
119- cfg := session .SessionV2 ()
112+ cfg := session .Session ()
120113 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
121114 endpointResolver := & endpointsv2.ELBV2EndpointResolver {
122115 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -140,7 +133,7 @@ func NewELBv2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger lo
140133
141134// NewEventBridgeClient creates a new EventBridge API client for a given session.
142135func NewEventBridgeClient (scopeUser cloud.ScopeUsage , session cloud.Session , target runtime.Object ) * eventbridge.Client {
143- cfg := session .SessionV2 ()
136+ cfg := session .Session ()
144137 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
145138 endpointResolver := & endpointsv2.EventBridgeEndpointResolver {
146139 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -161,7 +154,7 @@ func NewEventBridgeClient(scopeUser cloud.ScopeUsage, session cloud.Session, tar
161154
162155// NewSQSClient creates a new SQS API client for a given session.
163156func NewSQSClient (scopeUser cloud.ScopeUsage , session cloud.Session , target runtime.Object ) * sqs.Client {
164- cfg := session .SessionV2 ()
157+ cfg := session .Session ()
165158 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
166159 endpointResolver := & endpointsv2.SQSEndpointResolver {
167160 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -182,7 +175,7 @@ func NewSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session, target runt
182175
183176// NewGlobalSQSClient for creating a new SQS API client that isn't tied to a cluster.
184177func NewGlobalSQSClient (scopeUser cloud.ScopeUsage , session cloud.Session ) * sqs.Client {
185- cfg := session .SessionV2 ()
178+ cfg := session .Session ()
186179 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
187180 endpointResolver := & endpointsv2.SQSEndpointResolver {
188181 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -203,7 +196,7 @@ func NewGlobalSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session) *sqs.
203196
204197// NewResourgeTaggingClient creates a new Resource Tagging API client for a given session.
205198func NewResourgeTaggingClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * rgapi.Client {
206- cfg := session .SessionV2 ()
199+ cfg := session .Session ()
207200 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
208201 endpointResolver := & endpointsv2.RGAPIEndpointResolver {
209202 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -222,20 +215,27 @@ func NewResourgeTaggingClient(scopeUser cloud.ScopeUsage, session cloud.Session,
222215}
223216
224217// 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
218+ func NewSecretsManagerClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * secretsmanager.Client {
219+ cfg := session .Session ()
220+
221+ secretsOpts := []func (* secretsmanager.Options ){
222+ func (o * secretsmanager.Options ) {
223+ o .Logger = logger .GetAWSLogger ()
224+ o .ClientLogMode = awslogs .GetAWSLogLevelV2 (logger .GetLogger ())
225+ },
226+ secretsmanager .WithAPIOptions (
227+ awsmetricsv2 .WithMiddlewares (scopeUser .ControllerName (), target ),
228+ awsmetricsv2 .WithCAPAUserAgentMiddleware (),
229+ throttle .WithServiceLimiterMiddleware (session .ServiceLimiter (secretsmanager .ServiceID )),
230+ ),
231+ }
232+
233+ return secretsmanager .NewFromConfig (cfg , secretsOpts ... )
234234}
235235
236236// NewEKSClient creates a new EKS API client for a given session.
237237func NewEKSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * eks.Client {
238- cfg := session .SessionV2 ()
238+ cfg := session .Session ()
239239 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
240240 eksEndpointResolver := & endpointsv2.EKSEndpointResolver {
241241 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -253,7 +253,7 @@ func NewEKSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
253253
254254// NewIAMClient creates a new IAM API client for a given session.
255255func NewIAMClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * iam.Client {
256- cfg := session .SessionV2 ()
256+ cfg := session .Session ()
257257
258258 iamOpts := []func (* iam.Options ){
259259 func (o * iam.Options ) {
@@ -271,7 +271,7 @@ func NewIAMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
271271
272272// NewSTSClient creates a new STS API client for a given session.
273273func NewSTSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) stsservice.STSClient {
274- cfg := session .SessionV2 ()
274+ cfg := session .Session ()
275275 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
276276 stsEndpointResolver := & endpointsv2.STSEndpointResolver {
277277 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -294,7 +294,7 @@ func NewSTSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
294294
295295// NewSSMClient creates a new Secrets API client for a given session.
296296func NewSSMClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * ssm.Client {
297- cfg := session .SessionV2 ()
297+ cfg := session .Session ()
298298 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
299299 ssmEndpointResolver := & endpointsv2.SSMEndpointResolver {
300300 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -316,7 +316,7 @@ func NewSSMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
316316
317317// NewS3Client creates a new S3 API client for a given session.
318318func NewS3Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * s3.Client {
319- cfg := session .SessionV2 ()
319+ cfg := session .Session ()
320320 multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
321321 s3EndpointResolver := & endpointsv2.S3EndpointResolver {
322322 MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -332,28 +332,10 @@ func NewS3Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logge
332332 return s3 .NewFromConfig (cfg , s3Opts ... )
333333}
334334
335- func recordAWSPermissionsIssue (target runtime.Object ) func (r * request.Request ) {
336- return func (r * request.Request ) {
337- if awsErr , ok := r .Error .(awserr.Error ); ok {
338- switch awsErr .Code () {
339- case "AuthFailure" , "UnauthorizedOperation" , "NoCredentialProviders" :
340- record .Warnf (target , awsErr .Code (), "Operation %s failed with a credentials or permission issue" , r .Operation .Name )
341- }
342- }
343- }
344- }
345-
346- func getUserAgentHandler () request.NamedHandler {
347- return request.NamedHandler {
348- Name : "capa/user-agent" ,
349- Fn : request .MakeAddToUserAgentHandler ("aws.cluster.x-k8s.io" , version .Get ().String ()),
350- }
351- }
352-
353335// AWSClients contains all the aws clients used by the scopes.
354336type AWSClients struct {
355337 ELB * elb.Client
356- SecretsManager secretsmanageriface. SecretsManagerAPI
338+ SecretsManager * secretsmanager. Client
357339 ResourceTagging * rgapi.Client
358340 ASG * autoscaling.Client
359341 EC2 * ec2.Client
0 commit comments