Skip to content

Commit c5299e1

Browse files
Sessions: Use STS regional endpoint in assume role for opt-in regions (#129)
--------- Co-authored-by: Kevin Yu <[email protected]>
1 parent 825cd34 commit c5299e1

File tree

2 files changed

+9
-1
lines changed

2 files changed

+9
-1
lines changed

pkg/awsds/sessions.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import (
1515
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
1616
"github.com/aws/aws-sdk-go/aws/defaults"
1717
"github.com/aws/aws-sdk-go/aws/ec2metadata"
18+
"github.com/aws/aws-sdk-go/aws/endpoints"
1819
"github.com/aws/aws-sdk-go/aws/request"
1920
"github.com/aws/aws-sdk-go/aws/session"
2021
)
@@ -169,7 +170,11 @@ func (sc *SessionCache) GetSession(c SessionConfig) (*session.Session, error) {
169170
// When assuming a role, the real region is set later in a new session
170171
// so we use a well-known region here (not opt-in) to obtain valid credentials
171172
regionCfg = &aws.Config{Region: aws.String("us-east-1")}
172-
cfgs = append(cfgs, regionCfg)
173+
174+
// set regional endpoint flag to obtain credentials that can be used in opt-in regions as well
175+
optInRegionCfg := &aws.Config{STSRegionalEndpoint: endpoints.RegionalSTSEndpoint}
176+
177+
cfgs = append(cfgs, regionCfg, optInRegionCfg)
173178
} else {
174179
regionCfg = &aws.Config{Region: aws.String(c.Settings.Region)}
175180
cfgs = append(cfgs, regionCfg)

pkg/awsds/sessions_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/aws/aws-sdk-go/aws/credentials/ec2rolecreds"
1515
"github.com/aws/aws-sdk-go/aws/credentials/stscreds"
1616
"github.com/aws/aws-sdk-go/aws/ec2metadata"
17+
"github.com/aws/aws-sdk-go/aws/endpoints"
1718
"github.com/aws/aws-sdk-go/aws/request"
1819
"github.com/aws/aws-sdk-go/aws/session"
1920
"github.com/google/go-cmp/cmp"
@@ -219,6 +220,8 @@ func TestNewSession_AssumeRole(t *testing.T) {
219220
sess := c.(*session.Session)
220221
// Verify that we are using the well-known region
221222
assert.Equal(t, "us-east-1", *sess.Config.Region)
223+
// verify that we're using regional sts endpoint
224+
assert.Equal(t, endpoints.RegionalSTSEndpoint, sess.Config.STSRegionalEndpoint)
222225
return fakeNewSTSCredentials(c, roleARN, options...)
223226
}
224227
settings := AWSDatasourceSettings{

0 commit comments

Comments
 (0)