@@ -26,31 +26,24 @@ import (
26
26
"github.com/aws/aws-sdk-go-v2/service/iam"
27
27
rgapi "github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi"
28
28
"github.com/aws/aws-sdk-go-v2/service/s3"
29
+ "github.com/aws/aws-sdk-go-v2/service/secretsmanager"
29
30
"github.com/aws/aws-sdk-go-v2/service/sqs"
30
31
"github.com/aws/aws-sdk-go-v2/service/ssm"
31
32
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"
37
33
"k8s.io/apimachinery/pkg/runtime"
38
34
39
35
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud"
40
36
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/endpointsv2"
41
37
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"
43
38
awsmetricsv2 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metricsv2"
44
39
stsservice "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/sts"
45
40
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/throttle"
46
41
"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"
49
42
)
50
43
51
44
// NewASGClient creates a new ASG API client for a given session.
52
45
func NewASGClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * autoscaling.Client {
53
- cfg := session .SessionV2 ()
46
+ cfg := session .Session ()
54
47
55
48
autoscalingOpts := []func (* autoscaling.Options ){
56
49
func (o * autoscaling.Options ) {
@@ -68,7 +61,7 @@ func NewASGClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
68
61
69
62
// NewEC2Client creates a new EC2 API client for a given session.
70
63
func NewEC2Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * ec2.Client {
71
- cfg := session .SessionV2 ()
64
+ cfg := session .Session ()
72
65
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
73
66
ec2EndpointResolver := & endpointsv2.EC2EndpointResolver {
74
67
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -92,7 +85,7 @@ func NewEC2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
92
85
93
86
// NewELBClient creates a new ELB API client for a given session.
94
87
func NewELBClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * elb.Client {
95
- cfg := session .SessionV2 ()
88
+ cfg := session .Session ()
96
89
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
97
90
endpointResolver := & endpointsv2.ELBEndpointResolver {
98
91
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -116,7 +109,7 @@ func NewELBClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
116
109
117
110
// NewELBv2Client creates a new ELB v2 API client for a given session.
118
111
func NewELBv2Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * elbv2.Client {
119
- cfg := session .SessionV2 ()
112
+ cfg := session .Session ()
120
113
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
121
114
endpointResolver := & endpointsv2.ELBV2EndpointResolver {
122
115
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -140,7 +133,7 @@ func NewELBv2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger lo
140
133
141
134
// NewEventBridgeClient creates a new EventBridge API client for a given session.
142
135
func NewEventBridgeClient (scopeUser cloud.ScopeUsage , session cloud.Session , target runtime.Object ) * eventbridge.Client {
143
- cfg := session .SessionV2 ()
136
+ cfg := session .Session ()
144
137
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
145
138
endpointResolver := & endpointsv2.EventBridgeEndpointResolver {
146
139
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -161,7 +154,7 @@ func NewEventBridgeClient(scopeUser cloud.ScopeUsage, session cloud.Session, tar
161
154
162
155
// NewSQSClient creates a new SQS API client for a given session.
163
156
func NewSQSClient (scopeUser cloud.ScopeUsage , session cloud.Session , target runtime.Object ) * sqs.Client {
164
- cfg := session .SessionV2 ()
157
+ cfg := session .Session ()
165
158
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
166
159
endpointResolver := & endpointsv2.SQSEndpointResolver {
167
160
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -182,7 +175,7 @@ func NewSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session, target runt
182
175
183
176
// NewGlobalSQSClient for creating a new SQS API client that isn't tied to a cluster.
184
177
func NewGlobalSQSClient (scopeUser cloud.ScopeUsage , session cloud.Session ) * sqs.Client {
185
- cfg := session .SessionV2 ()
178
+ cfg := session .Session ()
186
179
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
187
180
endpointResolver := & endpointsv2.SQSEndpointResolver {
188
181
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -203,7 +196,7 @@ func NewGlobalSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session) *sqs.
203
196
204
197
// NewResourgeTaggingClient creates a new Resource Tagging API client for a given session.
205
198
func NewResourgeTaggingClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * rgapi.Client {
206
- cfg := session .SessionV2 ()
199
+ cfg := session .Session ()
207
200
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
208
201
endpointResolver := & endpointsv2.RGAPIEndpointResolver {
209
202
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -222,20 +215,27 @@ func NewResourgeTaggingClient(scopeUser cloud.ScopeUsage, session cloud.Session,
222
215
}
223
216
224
217
// 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 ... )
234
234
}
235
235
236
236
// NewEKSClient creates a new EKS API client for a given session.
237
237
func NewEKSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * eks.Client {
238
- cfg := session .SessionV2 ()
238
+ cfg := session .Session ()
239
239
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
240
240
eksEndpointResolver := & endpointsv2.EKSEndpointResolver {
241
241
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -253,7 +253,7 @@ func NewEKSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
253
253
254
254
// NewIAMClient creates a new IAM API client for a given session.
255
255
func NewIAMClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * iam.Client {
256
- cfg := session .SessionV2 ()
256
+ cfg := session .Session ()
257
257
258
258
iamOpts := []func (* iam.Options ){
259
259
func (o * iam.Options ) {
@@ -271,7 +271,7 @@ func NewIAMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
271
271
272
272
// NewSTSClient creates a new STS API client for a given session.
273
273
func NewSTSClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) stsservice.STSClient {
274
- cfg := session .SessionV2 ()
274
+ cfg := session .Session ()
275
275
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
276
276
stsEndpointResolver := & endpointsv2.STSEndpointResolver {
277
277
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -294,7 +294,7 @@ func NewSTSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
294
294
295
295
// NewSSMClient creates a new Secrets API client for a given session.
296
296
func NewSSMClient (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * ssm.Client {
297
- cfg := session .SessionV2 ()
297
+ cfg := session .Session ()
298
298
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
299
299
ssmEndpointResolver := & endpointsv2.SSMEndpointResolver {
300
300
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -316,7 +316,7 @@ func NewSSMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
316
316
317
317
// NewS3Client creates a new S3 API client for a given session.
318
318
func NewS3Client (scopeUser cloud.ScopeUsage , session cloud.Session , logger logger.Wrapper , target runtime.Object ) * s3.Client {
319
- cfg := session .SessionV2 ()
319
+ cfg := session .Session ()
320
320
multiSvcEndpointResolver := endpointsv2 .NewMultiServiceEndpointResolver ()
321
321
s3EndpointResolver := & endpointsv2.S3EndpointResolver {
322
322
MultiServiceEndpointResolver : multiSvcEndpointResolver ,
@@ -332,28 +332,10 @@ func NewS3Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logge
332
332
return s3 .NewFromConfig (cfg , s3Opts ... )
333
333
}
334
334
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
-
353
335
// AWSClients contains all the aws clients used by the scopes.
354
336
type AWSClients struct {
355
337
ELB * elb.Client
356
- SecretsManager secretsmanageriface. SecretsManagerAPI
338
+ SecretsManager * secretsmanager. Client
357
339
ResourceTagging * rgapi.Client
358
340
ASG * autoscaling.Client
359
341
EC2 * ec2.Client
0 commit comments