Skip to content

Commit 754ba90

Browse files
authored
V1.7.0 aws sts endpoint error (#1002)
* Add additional logging * Add error handler exit for failed AWS STS areas * Add error handler to get secret value * Add custom resolver for sts service add error handler for API key values * Endpoint changes * Add default URL for global sts
1 parent e40eda3 commit 754ba90

File tree

1 file changed

+31
-3
lines changed

1 file changed

+31
-3
lines changed

mongodbatlas/provider.go

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -312,12 +312,32 @@ func configureCredentialsSTS(config *Config, secret, region, awsAccessKeyID, aws
312312
return *config, err
313313
}
314314

315-
sess := session.Must(session.NewSession(&aws.Config{
315+
defaultResolver := endpoints.DefaultResolver()
316+
stsCustResolverFn := func(service, region string, optFns ...func(*endpoints.Options)) (endpoints.ResolvedEndpoint, error) {
317+
if service == endpoints.StsServiceID {
318+
if endpoint == "" {
319+
return endpoints.ResolvedEndpoint{
320+
URL: "https://sts.amazonaws.com",
321+
SigningRegion: region,
322+
}, nil
323+
}
324+
return endpoints.ResolvedEndpoint{
325+
URL: endpoint,
326+
SigningRegion: region,
327+
}, nil
328+
}
329+
330+
return defaultResolver.EndpointFor(service, region, optFns...)
331+
}
332+
333+
cfg := aws.Config{
316334
Region: aws.String(region),
317335
Credentials: credentials.NewStaticCredentials(awsAccessKeyID, awsSecretAccessKey, awsSessionToken),
318336
STSRegionalEndpoint: ep,
319-
Endpoint: &endpoint,
320-
}))
337+
EndpointResolver: endpoints.ResolverFunc(stsCustResolverFn),
338+
}
339+
340+
sess := session.Must(session.NewSession(&cfg))
321341

322342
creds := stscreds.NewCredentials(sess, config.AssumeRole.RoleARN)
323343

@@ -342,6 +362,14 @@ func configureCredentialsSTS(config *Config, secret, region, awsAccessKeyID, aws
342362
if err != nil {
343363
return *config, err
344364
}
365+
if secretData.PrivateKey == "" {
366+
return *config, fmt.Errorf("secret missing value for credential PrivateKey")
367+
}
368+
369+
if secretData.PublicKey == "" {
370+
return *config, fmt.Errorf("secret missing value for credential PublicKey")
371+
}
372+
345373
config.PublicKey = secretData.PublicKey
346374
config.PrivateKey = secretData.PrivateKey
347375
return *config, nil

0 commit comments

Comments
 (0)