Skip to content

Commit 1e22f5e

Browse files
remove Session() awsclient.ConfigProvider
1 parent 1b83b14 commit 1e22f5e

File tree

15 files changed

+296
-153
lines changed

15 files changed

+296
-153
lines changed

pkg/cloud/interfaces.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import (
2121
"time"
2222

2323
awsv2 "github.com/aws/aws-sdk-go-v2/aws"
24-
awsclient "github.com/aws/aws-sdk-go/aws/client"
2524
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
2625
"sigs.k8s.io/controller-runtime/pkg/client"
2726

@@ -34,8 +33,7 @@ import (
3433

3534
// Session represents an AWS session.
3635
type Session interface {
37-
Session() awsclient.ConfigProvider
38-
SessionV2() awsv2.Config
36+
Session() awsv2.Config
3937
ServiceLimiter(service string) *throttle.ServiceLimiter
4038
}
4139

pkg/cloud/scope/clients.go

Lines changed: 50 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -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.
5248
func 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.
7066
func 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.
9490
func 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.
118114
func 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.
142138
func 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.
163159
func 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.
184180
func 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.
205201
func 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.
237244
func 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.
255262
func 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.
283298
func 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.
305320
func 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.
341356
type 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

pkg/cloud/scope/cluster.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ func NewClusterScope(params ClusterScopeParams) (*ClusterScope, error) {
7777
maxWaitActiveUpdateDelete: params.MaxWaitActiveUpdateDelete,
7878
}
7979

80-
session, serviceLimiters, err := sessionForClusterWithRegion(params.Client, clusterScope, params.AWSCluster.Spec.Region, params.Endpoints, params.Logger)
80+
_, serviceLimiters, err := sessionForClusterWithRegion(params.Client, clusterScope, params.AWSCluster.Spec.Region, params.Endpoints, params.Logger)
8181
if err != nil {
8282
return nil, errors.Errorf("failed to create aws session: %v", err)
8383
}
@@ -93,8 +93,7 @@ func NewClusterScope(params ClusterScopeParams) (*ClusterScope, error) {
9393
}
9494

9595
clusterScope.patchHelper = helper
96-
clusterScope.session = session
97-
clusterScope.sessionV2 = *sessionv2
96+
clusterScope.session = *sessionv2
9897
clusterScope.serviceLimiters = serviceLimiters
9998
clusterScope.serviceLimitersV2 = serviceLimitersv2
10099

@@ -110,8 +109,7 @@ type ClusterScope struct {
110109
Cluster *clusterv1.Cluster
111110
AWSCluster *infrav1.AWSCluster
112111

113-
session awsclient.ConfigProvider
114-
sessionV2 awsv2.Config
112+
session awsv2.Config
115113
serviceLimiters throttle.ServiceLimiters
116114
serviceLimitersV2 throttle.ServiceLimiters
117115
controllerName string
@@ -361,16 +359,11 @@ func (s *ClusterScope) ClusterObj() cloud.ClusterObject {
361359
return s.Cluster
362360
}
363361

364-
// Session returns the AWS SDK session. Used for creating clients.
365-
func (s *ClusterScope) Session() awsclient.ConfigProvider {
362+
// Session returns the AWS SDK V2 session. Used for creating clients.
363+
func (s *ClusterScope) Session() awsv2.Config {
366364
return s.session
367365
}
368366

369-
// SessionV2 returns the AWS SDK V2 session. Used for creating clients.
370-
func (s *ClusterScope) SessionV2() awsv2.Config {
371-
return s.sessionV2
372-
}
373-
374367
// ServiceLimiter returns the AWS SDK session. Used for creating clients.
375368
func (s *ClusterScope) ServiceLimiter(service string) *throttle.ServiceLimiter {
376369
if sl, ok := s.serviceLimiters[service]; ok {

pkg/cloud/scope/fargate.go

Lines changed: 5 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func NewFargateProfileScope(params FargateProfileScopeParams) (*FargateProfileSc
7070
controllerName: params.ControllerName,
7171
}
7272

73-
session, serviceLimiters, err := sessionForClusterWithRegion(params.Client, managedScope, params.ControlPlane.Spec.Region, params.Endpoints, params.Logger)
73+
_, serviceLimiters, err := sessionForClusterWithRegion(params.Client, managedScope, params.ControlPlane.Spec.Region, params.Endpoints, params.Logger)
7474
if err != nil {
7575
return nil, errors.Errorf("failed to create aws session: %v", err)
7676
}
@@ -92,8 +92,7 @@ func NewFargateProfileScope(params FargateProfileScopeParams) (*FargateProfileSc
9292
ControlPlane: params.ControlPlane,
9393
FargateProfile: params.FargateProfile,
9494
patchHelper: helper,
95-
session: session,
96-
sessionV2: *sessionv2,
95+
session: *sessionv2,
9796
serviceLimiters: serviceLimiters,
9897
serviceLimitersV2: serviceLimitersv2,
9998
controllerName: params.ControllerName,
@@ -111,8 +110,7 @@ type FargateProfileScope struct {
111110
ControlPlane *ekscontrolplanev1.AWSManagedControlPlane
112111
FargateProfile *expinfrav1.AWSFargateProfile
113112

114-
session awsclient.ConfigProvider
115-
sessionV2 awsv2.Config
113+
session awsv2.Config
116114
serviceLimiters throttle.ServiceLimiters
117115
serviceLimitersV2 throttle.ServiceLimiters
118116
controllerName string
@@ -225,16 +223,11 @@ func (s *FargateProfileScope) ClusterObj() cloud.ClusterObject {
225223
return s.Cluster
226224
}
227225

228-
// Session returns the AWS SDK session. Used for creating clients.
229-
func (s *FargateProfileScope) Session() awsclient.ConfigProvider {
226+
// Session returns the AWS SDK V2 session. Used for creating clients.
227+
func (s *FargateProfileScope) Session() awsv2.Config {
230228
return s.session
231229
}
232230

233-
// SessionV2 returns the AWS SDK session. Used for creating clients.
234-
func (s *FargateProfileScope) SessionV2() awsv2.Config {
235-
return s.sessionV2
236-
}
237-
238231
// ControllerName returns the name of the controller that
239232
// created the FargateProfile.
240233
func (s *FargateProfileScope) ControllerName() string {

pkg/cloud/scope/global.go

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package scope
1919

2020
import (
2121
awsv2 "github.com/aws/aws-sdk-go-v2/aws"
22-
awsclient "github.com/aws/aws-sdk-go/aws/client"
2322
"github.com/pkg/errors"
2423

2524
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/throttle"
@@ -33,7 +32,7 @@ func NewGlobalScope(params GlobalScopeParams) (*GlobalScope, error) {
3332
if params.ControllerName == "" {
3433
return nil, errors.New("controller name required to generate global scope")
3534
}
36-
ns, limiters, err := sessionForRegion(params.Region, params.Endpoints)
35+
_, limiters, err := sessionForRegion(params.Region, params.Endpoints)
3736
if err != nil {
3837
return nil, errors.Wrap(err, "failed to create aws session")
3938
}
@@ -43,8 +42,7 @@ func NewGlobalScope(params GlobalScopeParams) (*GlobalScope, error) {
4342
return nil, errors.Wrap(err, "failed to create aws V2 session")
4443
}
4544
return &GlobalScope{
46-
session: ns,
47-
sessionV2: *ns2,
45+
session: *ns2,
4846
serviceLimiters: limiters,
4947
controllerName: params.ControllerName,
5048
}, nil
@@ -59,22 +57,16 @@ type GlobalScopeParams struct {
5957

6058
// GlobalScope defines the specs for the GlobalScope.
6159
type GlobalScope struct {
62-
session awsclient.ConfigProvider
63-
sessionV2 awsv2.Config
60+
session awsv2.Config
6461
serviceLimiters throttle.ServiceLimiters
6562
controllerName string
6663
}
6764

68-
// Session returns the AWS SDK session. Used for creating clients.
69-
func (s *GlobalScope) Session() awsclient.ConfigProvider {
65+
// Session returns the AWS SDK V2 config. Used for creating clients.
66+
func (s *GlobalScope) Session() awsv2.Config {
7067
return s.session
7168
}
7269

73-
// SessionV2 returns the AWS SDK V2 config. Used for creating clients.
74-
func (s *GlobalScope) SessionV2() awsv2.Config {
75-
return s.sessionV2
76-
}
77-
7870
// ServiceLimiter returns the AWS SDK session. Used for creating clients.
7971
func (s *GlobalScope) ServiceLimiter(service string) *throttle.ServiceLimiter {
8072
if sl, ok := s.serviceLimiters[service]; ok {

0 commit comments

Comments
 (0)