Skip to content

Commit 58bb06d

Browse files
committed
Upgraded aws sdk to v2
Signed-off-by: Patrick Assuied <[email protected]>
1 parent c14b496 commit 58bb06d

File tree

11 files changed

+115
-73
lines changed

11 files changed

+115
-73
lines changed

common/authentication/aws/aws.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,8 +85,8 @@ type Provider interface {
8585
Sqs() *SqsClients
8686
Sns() *SnsClients
8787
SnsSqs() *SnsSqsClients
88-
SecretManager() *SecretManagerClients
8988
ParameterStore() *ParameterStoreClients
89+
SecretManager() *SecretManagerClients
9090
Kinesis() *KinesisClients
9191
Ses() *SesClients
9292
Kafka(KafkaOptions) (*KafkaClients, error)

common/authentication/aws/client.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import (
2323
"github.com/IBM/sarama"
2424
"github.com/aws/aws-msk-iam-sasl-signer-go/signer"
2525
aws2 "github.com/aws/aws-sdk-go-v2/aws"
26+
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
2627
"github.com/aws/aws-sdk-go/aws"
2728
"github.com/aws/aws-sdk-go/aws/credentials"
2829
"github.com/aws/aws-sdk-go/aws/session"
@@ -32,8 +33,6 @@ import (
3233
"github.com/aws/aws-sdk-go/service/kinesis/kinesisiface"
3334
"github.com/aws/aws-sdk-go/service/s3"
3435
"github.com/aws/aws-sdk-go/service/s3/s3manager"
35-
"github.com/aws/aws-sdk-go/service/secretsmanager"
36-
"github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface"
3736
"github.com/aws/aws-sdk-go/service/ses"
3837
"github.com/aws/aws-sdk-go/service/sns"
3938
"github.com/aws/aws-sdk-go/service/sqs"
@@ -77,8 +76,6 @@ func (c *Clients) refresh(session *session.Session) error {
7776
c.sqs.New(session)
7877
case c.snssqs != nil:
7978
c.snssqs.New(session)
80-
case c.Secret != nil:
81-
c.Secret.New(session)
8279
case c.ParameterStore != nil:
8380
c.ParameterStore.New(session)
8481
case c.kinesis != nil:
@@ -121,8 +118,14 @@ type SqsClients struct {
121118
Sqs sqsiface.SQSAPI
122119
}
123120

121+
// SecretManagerClientInterface defines the interface for AWS Secrets Manager operations
122+
type SecretManagerClientInterface interface {
123+
GetSecretValue(ctx context.Context, input *secretsmanager.GetSecretValueInput, opts ...func(*secretsmanager.Options)) (*secretsmanager.GetSecretValueOutput, error)
124+
ListSecrets(ctx context.Context, input *secretsmanager.ListSecretsInput, opts ...func(*secretsmanager.Options)) (*secretsmanager.ListSecretsOutput, error)
125+
}
126+
124127
type SecretManagerClients struct {
125-
Manager secretsmanageriface.SecretsManagerAPI
128+
Manager SecretManagerClientInterface
126129
}
127130

128131
type ParameterStoreClients struct {
@@ -186,8 +189,8 @@ func (c *SqsClients) QueueURL(ctx context.Context, queueName string) (*string, e
186189
return nil, errors.New("unable to get queue url due to empty client")
187190
}
188191

189-
func (c *SecretManagerClients) New(session *session.Session) {
190-
c.Manager = secretsmanager.New(session, session.Config)
192+
func (c *SecretManagerClients) New(cfg aws2.Config) {
193+
c.Manager = secretsmanager.NewFromConfig(cfg)
191194
}
192195

193196
func (c *ParameterStoreClients) New(session *session.Session) {

common/authentication/aws/client_fake.go

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ package aws
1616
import (
1717
"context"
1818

19+
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
1920
"github.com/aws/aws-sdk-go/aws"
2021
"github.com/aws/aws-sdk-go/aws/request"
2122
"github.com/aws/aws-sdk-go/service/dynamodb"
2223
"github.com/aws/aws-sdk-go/service/dynamodb/dynamodbiface"
23-
"github.com/aws/aws-sdk-go/service/secretsmanager"
24-
"github.com/aws/aws-sdk-go/service/secretsmanager/secretsmanageriface"
2524
"github.com/aws/aws-sdk-go/service/ssm"
2625
"github.com/aws/aws-sdk-go/service/ssm/ssmiface"
2726
)
@@ -41,18 +40,16 @@ func (m *MockParameterStore) DescribeParametersWithContext(ctx context.Context,
4140
}
4241

4342
type MockSecretManager struct {
44-
GetSecretValueFn func(context.Context, *secretsmanager.GetSecretValueInput, ...request.Option) (*secretsmanager.GetSecretValueOutput, error)
45-
secretsmanageriface.SecretsManagerAPI
46-
47-
ListSecretsFn func(context.Context, *secretsmanager.ListSecretsInput, ...request.Option) (*secretsmanager.ListSecretsOutput, error)
43+
GetSecretValueFn func(context.Context, *secretsmanager.GetSecretValueInput, ...func(*secretsmanager.Options)) (*secretsmanager.GetSecretValueOutput, error)
44+
ListSecretsFn func(context.Context, *secretsmanager.ListSecretsInput, ...func(*secretsmanager.Options)) (*secretsmanager.ListSecretsOutput, error)
4845
}
4946

50-
func (m *MockSecretManager) GetSecretValueWithContext(ctx context.Context, input *secretsmanager.GetSecretValueInput, option ...request.Option) (*secretsmanager.GetSecretValueOutput, error) {
51-
return m.GetSecretValueFn(ctx, input, option...)
47+
func (m *MockSecretManager) GetSecretValue(ctx context.Context, input *secretsmanager.GetSecretValueInput, opts ...func(*secretsmanager.Options)) (*secretsmanager.GetSecretValueOutput, error) {
48+
return m.GetSecretValueFn(ctx, input, opts...)
5249
}
5350

54-
func (m *MockSecretManager) ListSecretsWithContext(ctx context.Context, input *secretsmanager.ListSecretsInput, option ...request.Option) (*secretsmanager.ListSecretsOutput, error) {
55-
return m.ListSecretsFn(ctx, input, option...)
51+
func (m *MockSecretManager) ListSecrets(ctx context.Context, input *secretsmanager.ListSecretsInput, opts ...func(*secretsmanager.Options)) (*secretsmanager.ListSecretsOutput, error) {
52+
return m.ListSecretsFn(ctx, input, opts...)
5653
}
5754

5855
type MockDynamoDB struct {

common/authentication/aws/static.go

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,21 @@ func (a *StaticAuth) SecretManager() *SecretManagerClients {
188188

189189
clients := SecretManagerClients{}
190190
a.clients.Secret = &clients
191-
a.clients.Secret.New(a.session)
191+
192+
// Create v2 client
193+
if a.region != nil {
194+
v2Config, err := GetConfigV2(
195+
aws.StringValue(a.accessKey),
196+
aws.StringValue(a.secretKey),
197+
a.sessionToken,
198+
*a.region,
199+
aws.StringValue(a.endpoint),
200+
)
201+
if err == nil {
202+
a.clients.Secret.New(v2Config)
203+
}
204+
}
205+
192206
return a.clients.Secret
193207
}
194208

common/authentication/aws/x509.go

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,30 @@ func (a *x509) SecretManager() *SecretManagerClients {
262262

263263
clients := SecretManagerClients{}
264264
a.clients.Secret = &clients
265-
a.clients.Secret.New(a.session)
265+
266+
// Create v2 client
267+
if a.region != nil {
268+
// Get credentials from the current session
269+
creds, err := a.session.Config.Credentials.Get()
270+
if err == nil {
271+
// Extract endpoint from the aws config if present
272+
endpoint := ""
273+
if a.cfg != nil {
274+
endpoint = aws.StringValue(a.cfg.Endpoint)
275+
}
276+
v2Config, err := GetConfigV2(
277+
creds.AccessKeyID,
278+
creds.SecretAccessKey,
279+
creds.SessionToken,
280+
*a.region,
281+
endpoint,
282+
)
283+
if err == nil {
284+
a.clients.Secret.New(v2Config)
285+
}
286+
}
287+
}
288+
266289
return a.clients.Secret
267290
}
268291

go.mod

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,12 @@ require (
4141
github.com/apache/thrift v0.13.0
4242
github.com/aws/aws-msk-iam-sasl-signer-go v1.0.1-0.20241125194140-078c08b8574a
4343
github.com/aws/aws-sdk-go v1.55.6
44-
github.com/aws/aws-sdk-go-v2 v1.32.4
44+
github.com/aws/aws-sdk-go-v2 v1.36.5
4545
github.com/aws/aws-sdk-go-v2/config v1.28.2
4646
github.com/aws/aws-sdk-go-v2/credentials v1.17.43
4747
github.com/aws/aws-sdk-go-v2/feature/rds/auth v1.3.10
4848
github.com/aws/aws-sdk-go-v2/service/bedrockruntime v1.17.3
49+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.7
4950
github.com/aws/aws-sdk-go-v2/service/sts v1.32.4
5051
github.com/aws/rolesanywhere-credential-helper v1.0.4
5152
github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874
@@ -192,14 +193,14 @@ require (
192193
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
193194
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 // indirect
194195
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19 // indirect
195-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 // indirect
196-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 // indirect
196+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 // indirect
197+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 // indirect
197198
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 // indirect
198199
github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0 // indirect
199200
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4 // indirect
200201
github.com/aws/aws-sdk-go-v2/service/sso v1.24.4 // indirect
201202
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.28.4 // indirect
202-
github.com/aws/smithy-go v1.22.0 // indirect
203+
github.com/aws/smithy-go v1.22.4 // indirect
203204
github.com/awslabs/kinesis-aggregation/go v0.0.0-20210630091500-54e17340d32f // indirect
204205
github.com/benbjohnson/clock v1.3.5 // indirect
205206
github.com/beorn7/perks v1.0.1 // indirect

go.sum

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,8 @@ github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk
281281
github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
282282
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
283283
github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4=
284-
github.com/aws/aws-sdk-go-v2 v1.32.4 h1:S13INUiTxgrPueTmrm5DZ+MiAo99zYzHEFh1UNkOxNE=
285-
github.com/aws/aws-sdk-go-v2 v1.32.4/go.mod h1:2SK5n0a2karNTv5tbP1SjsX0uhttou00v/HpXKM1ZUo=
284+
github.com/aws/aws-sdk-go-v2 v1.36.5 h1:0OF9RiEMEdDdZEMqF9MRjevyxAQcf6gY+E7vwBILFj0=
285+
github.com/aws/aws-sdk-go-v2 v1.36.5/go.mod h1:EYrzvCCN9CMUTa5+6lf6MM4tq3Zjp8UhSGR/cBsjai0=
286286
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5 h1:xDAuZTn4IMm8o1LnBZvmrL8JA1io4o3YWNXgohbf20g=
287287
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.6.5/go.mod h1:wYSv6iDS621sEFLfKvpPE2ugjTuGlAG7iROg0hLOkfc=
288288
github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw=
@@ -296,10 +296,10 @@ github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19 h1:woXadbf0c7enQ2UGCi8gW/
296296
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.19/go.mod h1:zminj5ucw7w0r65bP6nhyOd3xL6veAUMc3ElGMoLVb4=
297297
github.com/aws/aws-sdk-go-v2/feature/rds/auth v1.3.10 h1:z6fAXB4HSuYjrE/P8RU3NdCaN+EPaeq/+80aisCjuF8=
298298
github.com/aws/aws-sdk-go-v2/feature/rds/auth v1.3.10/go.mod h1:PoPjOi7j+/DtKIGC58HRfcdWKBPYYXwdKnRG+po+hzo=
299-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23 h1:A2w6m6Tmr+BNXjDsr7M90zkWjsu4JXHwrzPg235STs4=
300-
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.23/go.mod h1:35EVp9wyeANdujZruvHiQUAo9E3vbhnIO1mTCAxMlY0=
301-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23 h1:pgYW9FCabt2M25MoHYCfMrVY2ghiiBKYWUVXfwZs+sU=
302-
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.23/go.mod h1:c48kLgzO19wAu3CPkDWC28JbaJ+hfQlsdl7I2+oqIbk=
299+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36 h1:SsytQyTMHMDPspp+spo7XwXTP44aJZZAC7fBV2C5+5s=
300+
github.com/aws/aws-sdk-go-v2/internal/configsources v1.3.36/go.mod h1:Q1lnJArKRXkenyog6+Y+zr7WDpk4e6XlR6gs20bbeNo=
301+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36 h1:i2vNHQiXUvKhs3quBR6aqlgJaiaexz/aNvdCktW/kAM=
302+
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.6.36/go.mod h1:UdyGa7Q91id/sdyHPwth+043HhmP6yP9MBHgbZM0xo8=
303303
github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ=
304304
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1 h1:VaRN3TlFdd6KxX1x3ILT5ynH6HvKgqdiXoTxAF4HQcQ=
305305
github.com/aws/aws-sdk-go-v2/internal/ini v1.8.1/go.mod h1:FbtygfRFze9usAadmnGJNc8KsP346kEe+y2/oyhGAGc=
@@ -311,6 +311,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.12.0/go.mod h1:
311311
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8=
312312
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4 h1:tHxQi/XHPK0ctd/wdOw0t7Xrc2OxcRCnVzv8lwWPu0c=
313313
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.12.4/go.mod h1:4GQbF1vJzG60poZqWatZlhP31y8PGCCVTvIGPdaaYJ0=
314+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.7 h1:d+mnMa4JbJlooSbYQfrJpit/YINaB30JEVgrhtjZneA=
315+
github.com/aws/aws-sdk-go-v2/service/secretsmanager v1.35.7/go.mod h1:1X1NotbcGHH7PCQJ98PsExSxsJj/VWzz8MfFz43+02M=
314316
github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk=
315317
github.com/aws/aws-sdk-go-v2/service/sso v1.24.4 h1:BqE3NRG6bsODh++VMKMsDmFuJTHrdD4rJZqHjDeF6XI=
316318
github.com/aws/aws-sdk-go-v2/service/sso v1.24.4/go.mod h1:wrMCEwjFPms+V86TCQQeOxQF/If4vT44FGIOFiMC2ck=
@@ -322,8 +324,8 @@ github.com/aws/aws-sdk-go-v2/service/sts v1.32.4/go.mod h1:9XEUty5v5UAsMiFOBJrNi
322324
github.com/aws/rolesanywhere-credential-helper v1.0.4 h1:kHIVVdyQQiFZoKBP+zywBdFilGCS8It+UvW5LolKbW8=
323325
github.com/aws/rolesanywhere-credential-helper v1.0.4/go.mod h1:QVGNxlDlYhjR0/ZUee7uGl0hNChWidNpe2+GD87Buqk=
324326
github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E=
325-
github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM=
326-
github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg=
327+
github.com/aws/smithy-go v1.22.4 h1:uqXzVZNuNexwc/xrh6Tb56u89WDlJY6HS+KC0S4QSjw=
328+
github.com/aws/smithy-go v1.22.4/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI=
327329
github.com/awslabs/kinesis-aggregation/go v0.0.0-20210630091500-54e17340d32f h1:Pf0BjJDga7C98f0vhw+Ip5EaiE07S3lTKpIYPNS0nMo=
328330
github.com/awslabs/kinesis-aggregation/go v0.0.0-20210630091500-54e17340d32f/go.mod h1:SghidfnxvX7ribW6nHI7T+IBbc9puZ9kk5Tx/88h8P4=
329331
github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk=

secretstores/aws/secretmanager/secretmanager.go

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,11 @@ import (
1919
"fmt"
2020
"reflect"
2121

22-
"github.com/aws/aws-sdk-go/service/secretsmanager"
23-
2422
awsAuth "github.com/dapr/components-contrib/common/authentication/aws"
23+
24+
"github.com/aws/aws-sdk-go-v2/aws"
25+
"github.com/aws/aws-sdk-go-v2/service/secretsmanager"
26+
2527
"github.com/dapr/components-contrib/metadata"
2628
"github.com/dapr/components-contrib/secretstores"
2729
"github.com/dapr/kit/logger"
@@ -123,13 +125,13 @@ func (s *smSecretStore) GetSecret(ctx context.Context, req secretstores.GetSecre
123125
if value, ok := req.Metadata[VersionStage]; ok {
124126
versionStage = &value
125127
}
126-
output, err := s.authProvider.SecretManager().Manager.GetSecretValueWithContext(ctx, &secretsmanager.GetSecretValueInput{
128+
output, err := s.authProvider.SecretManager().Manager.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{
127129
SecretId: &req.Name,
128130
VersionId: versionID,
129131
VersionStage: versionStage,
130132
})
131133
if err != nil {
132-
return secretstores.GetSecretResponse{Data: nil}, fmt.Errorf("couldn't get secret: %s", err)
134+
return secretstores.GetSecretResponse{Data: nil}, fmt.Errorf("couldn't get secret: %w", err)
133135
}
134136

135137
resp := secretstores.GetSecretResponse{
@@ -150,23 +152,23 @@ func (s *smSecretStore) BulkGetSecret(ctx context.Context, req secretstores.Bulk
150152
var nextToken *string = nil
151153

152154
for search {
153-
output, err := s.authProvider.SecretManager().Manager.ListSecretsWithContext(ctx, &secretsmanager.ListSecretsInput{
155+
output, err := s.authProvider.SecretManager().Manager.ListSecrets(ctx, &secretsmanager.ListSecretsInput{
154156
MaxResults: nil,
155157
NextToken: nextToken,
156158
})
157159
if err != nil {
158-
return secretstores.BulkGetSecretResponse{Data: nil}, fmt.Errorf("couldn't list secrets: %s", err)
160+
return secretstores.BulkGetSecretResponse{Data: nil}, fmt.Errorf("couldn't list secrets: %w", err)
159161
}
160162

161163
for _, entry := range output.SecretList {
162-
secrets, err := s.authProvider.SecretManager().Manager.GetSecretValueWithContext(ctx, &secretsmanager.GetSecretValueInput{
164+
secrets, err := s.authProvider.SecretManager().Manager.GetSecretValue(ctx, &secretsmanager.GetSecretValueInput{
163165
SecretId: entry.Name,
164166
})
165167
if err != nil {
166-
return secretstores.BulkGetSecretResponse{Data: nil}, fmt.Errorf("couldn't get secret: %s", *entry.Name)
168+
return secretstores.BulkGetSecretResponse{Data: nil}, fmt.Errorf("couldn't get secret: %s", aws.ToString(entry.Name))
167169
}
168170

169-
resp.Data[*entry.Name] = s.formatSecret(secrets)
171+
resp.Data[aws.ToString(entry.Name)] = s.formatSecret(secrets)
170172
}
171173

172174
nextToken = output.NextToken
@@ -207,8 +209,5 @@ func (s *smSecretStore) GetComponentMetadata() (metadataInfo metadata.MetadataMa
207209
}
208210

209211
func (s *smSecretStore) Close() error {
210-
if s.authProvider != nil {
211-
return s.authProvider.Close()
212-
}
213-
return nil
212+
return s.authProvider.Close()
214213
}

0 commit comments

Comments
 (0)