Skip to content

Commit 35e6953

Browse files
remove Session() awsclient.ConfigProvider
1 parent d9ded12 commit 35e6953

File tree

13 files changed

+260
-134
lines changed

13 files changed

+260
-134
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: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -26,20 +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"
3132
stsv2 "github.com/aws/aws-sdk-go-v2/service/sts"
32-
"github.com/aws/aws-sdk-go/aws"
3333
"github.com/aws/aws-sdk-go/aws/awserr"
3434
"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"
3735
"k8s.io/apimachinery/pkg/runtime"
3836

3937
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud"
4038
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/endpointsv2"
4139
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"
4340
awsmetricsv2 "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/metricsv2"
4441
stsservice "sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/services/sts"
4542
"sigs.k8s.io/cluster-api-provider-aws/v2/pkg/cloud/throttle"
@@ -50,7 +47,7 @@ import (
5047

5148
// NewASGClient creates a new ASG API client for a given session.
5249
func NewASGClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *autoscaling.Client {
53-
cfg := session.SessionV2()
50+
cfg := session.Session()
5451

5552
autoscalingOpts := []func(*autoscaling.Options){
5653
func(o *autoscaling.Options) {
@@ -68,7 +65,7 @@ func NewASGClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
6865

6966
// NewEC2Client creates a new EC2 API client for a given session.
7067
func NewEC2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *ec2.Client {
71-
cfg := session.SessionV2()
68+
cfg := session.Session()
7269
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
7370
ec2EndpointResolver := &endpointsv2.EC2EndpointResolver{
7471
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -92,7 +89,7 @@ func NewEC2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
9289

9390
// NewELBClient creates a new ELB API client for a given session.
9491
func NewELBClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *elb.Client {
95-
cfg := session.SessionV2()
92+
cfg := session.Session()
9693
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
9794
endpointResolver := &endpointsv2.ELBEndpointResolver{
9895
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -116,7 +113,7 @@ func NewELBClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
116113

117114
// NewELBv2Client creates a new ELB v2 API client for a given session.
118115
func NewELBv2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *elbv2.Client {
119-
cfg := session.SessionV2()
116+
cfg := session.Session()
120117
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
121118
endpointResolver := &endpointsv2.ELBV2EndpointResolver{
122119
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -140,7 +137,7 @@ func NewELBv2Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger lo
140137

141138
// NewEventBridgeClient creates a new EventBridge API client for a given session.
142139
func NewEventBridgeClient(scopeUser cloud.ScopeUsage, session cloud.Session, target runtime.Object) *eventbridge.Client {
143-
cfg := session.SessionV2()
140+
cfg := session.Session()
144141
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
145142
endpointResolver := &endpointsv2.EventBridgeEndpointResolver{
146143
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -161,7 +158,7 @@ func NewEventBridgeClient(scopeUser cloud.ScopeUsage, session cloud.Session, tar
161158

162159
// NewSQSClient creates a new SQS API client for a given session.
163160
func NewSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session, target runtime.Object) *sqs.Client {
164-
cfg := session.SessionV2()
161+
cfg := session.Session()
165162
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
166163
endpointResolver := &endpointsv2.SQSEndpointResolver{
167164
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -182,7 +179,7 @@ func NewSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session, target runt
182179

183180
// NewGlobalSQSClient for creating a new SQS API client that isn't tied to a cluster.
184181
func NewGlobalSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session) *sqs.Client {
185-
cfg := session.SessionV2()
182+
cfg := session.Session()
186183
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
187184
endpointResolver := &endpointsv2.SQSEndpointResolver{
188185
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -203,7 +200,7 @@ func NewGlobalSQSClient(scopeUser cloud.ScopeUsage, session cloud.Session) *sqs.
203200

204201
// NewResourgeTaggingClient creates a new Resource Tagging API client for a given session.
205202
func NewResourgeTaggingClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *rgapi.Client {
206-
cfg := session.SessionV2()
203+
cfg := session.Session()
207204
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
208205
endpointResolver := &endpointsv2.RGAPIEndpointResolver{
209206
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -222,20 +219,27 @@ func NewResourgeTaggingClient(scopeUser cloud.ScopeUsage, session cloud.Session,
222219
}
223220

224221
// 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
222+
func NewSecretsManagerClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *secretsmanager.Client {
223+
cfg := session.Session()
224+
225+
secretsOpts := []func(*secretsmanager.Options){
226+
func(o *secretsmanager.Options) {
227+
o.Logger = logger.GetAWSLogger()
228+
o.ClientLogMode = awslogs.GetAWSLogLevelV2(logger.GetLogger())
229+
},
230+
secretsmanager.WithAPIOptions(
231+
awsmetricsv2.WithMiddlewares(scopeUser.ControllerName(), target),
232+
awsmetricsv2.WithCAPAUserAgentMiddleware(),
233+
throttle.WithServiceLimiterMiddleware(session.ServiceLimiter(secretsmanager.ServiceID)),
234+
),
235+
}
236+
237+
return secretsmanager.NewFromConfig(cfg, secretsOpts...)
234238
}
235239

236240
// NewEKSClient creates a new EKS API client for a given session.
237241
func NewEKSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *eks.Client {
238-
cfg := session.SessionV2()
242+
cfg := session.Session()
239243
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
240244
eksEndpointResolver := &endpointsv2.EKSEndpointResolver{
241245
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -253,7 +257,7 @@ func NewEKSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
253257

254258
// NewIAMClient creates a new IAM API client for a given session.
255259
func NewIAMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *iam.Client {
256-
cfg := session.SessionV2()
260+
cfg := session.Session()
257261

258262
iamOpts := []func(*iam.Options){
259263
func(o *iam.Options) {
@@ -271,7 +275,7 @@ func NewIAMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
271275

272276
// NewSTSClient creates a new STS API client for a given session.
273277
func NewSTSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) stsservice.STSClient {
274-
cfg := session.SessionV2()
278+
cfg := session.Session()
275279
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
276280
stsEndpointResolver := &endpointsv2.STSEndpointResolver{
277281
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -294,7 +298,7 @@ func NewSTSClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
294298

295299
// NewSSMClient creates a new Secrets API client for a given session.
296300
func NewSSMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *ssm.Client {
297-
cfg := session.SessionV2()
301+
cfg := session.Session()
298302
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
299303
ssmEndpointResolver := &endpointsv2.SSMEndpointResolver{
300304
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -316,7 +320,7 @@ func NewSSMClient(scopeUser cloud.ScopeUsage, session cloud.Session, logger logg
316320

317321
// NewS3Client creates a new S3 API client for a given session.
318322
func NewS3Client(scopeUser cloud.ScopeUsage, session cloud.Session, logger logger.Wrapper, target runtime.Object) *s3.Client {
319-
cfg := session.SessionV2()
323+
cfg := session.Session()
320324
multiSvcEndpointResolver := endpointsv2.NewMultiServiceEndpointResolver()
321325
s3EndpointResolver := &endpointsv2.S3EndpointResolver{
322326
MultiServiceEndpointResolver: multiSvcEndpointResolver,
@@ -353,7 +357,7 @@ func getUserAgentHandler() request.NamedHandler {
353357
// AWSClients contains all the aws clients used by the scopes.
354358
type AWSClients struct {
355359
ELB *elb.Client
356-
SecretsManager secretsmanageriface.SecretsManagerAPI
360+
SecretsManager *secretsmanager.Client
357361
ResourceTagging *rgapi.Client
358362
ASG *autoscaling.Client
359363
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 {

pkg/cloud/scope/managedcontrolplane.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -92,14 +92,13 @@ func NewManagedControlPlaneScope(params ManagedControlPlaneScopeParams) (*Manage
9292
ControlPlane: params.ControlPlane,
9393
MaxWaitActiveUpdateDelete: params.MaxWaitActiveUpdateDelete,
9494
patchHelper: nil,
95-
session: nil,
9695
serviceLimiters: nil,
9796
controllerName: params.ControllerName,
9897
allowAdditionalRoles: params.AllowAdditionalRoles,
9998
enableIAM: params.EnableIAM,
10099
tagUnmanagedNetworkResources: params.TagUnmanagedNetworkResources,
101100
}
102-
session, serviceLimiters, err := sessionForClusterWithRegion(params.Client, managedScope, params.ControlPlane.Spec.Region, params.Endpoints, params.Logger)
101+
_, serviceLimiters, err := sessionForClusterWithRegion(params.Client, managedScope, params.ControlPlane.Spec.Region, params.Endpoints, params.Logger)
103102
if err != nil {
104103
return nil, errors.Errorf("failed to create aws session: %v", err)
105104
}
@@ -109,8 +108,7 @@ func NewManagedControlPlaneScope(params ManagedControlPlaneScopeParams) (*Manage
109108
return nil, errors.Errorf("failed to create aws V2 session: %v", err)
110109
}
111110

112-
managedScope.session = session
113-
managedScope.sessionV2 = *sessionv2
111+
managedScope.session = *sessionv2
114112
managedScope.serviceLimiters = serviceLimiters
115113
managedScope.serviceLimitersV2 = serviceLimitersv2
116114

@@ -133,8 +131,7 @@ type ManagedControlPlaneScope struct {
133131
ControlPlane *ekscontrolplanev1.AWSManagedControlPlane
134132
MaxWaitActiveUpdateDelete time.Duration
135133

136-
session awsclient.ConfigProvider
137-
sessionV2 awsv2.Config
134+
session awsv2.Config
138135
serviceLimiters throttle.ServiceLimiters
139136
serviceLimitersV2 throttle.ServiceLimiters
140137
controllerName string
@@ -334,14 +331,14 @@ func (s *ManagedControlPlaneScope) ClusterObj() cloud.ClusterObject {
334331
return s.Cluster
335332
}
336333

337-
// Session returns the AWS SDK session. Used for creating clients.
338-
func (s *ManagedControlPlaneScope) Session() awsclient.ConfigProvider {
334+
// Session returns the AWS SDK V2 config. Used for creating clients.
335+
func (s *ManagedControlPlaneScope) Session() awsv2.Config {
339336
return s.session
340337
}
341338

342-
// SessionV2 returns the AWS SDK config. Used for creating clients.
339+
// SessionV2 returns the AWS SDK V2 config. Used for creating clients.
343340
func (s *ManagedControlPlaneScope) SessionV2() awsv2.Config {
344-
return s.sessionV2
341+
return s.session
345342
}
346343

347344
// Bastion returns the bastion details.

0 commit comments

Comments
 (0)