@@ -82,7 +82,6 @@ func (d *sessionProvider) GetSession(ctx context.Context) (aws.Config, error) {
82
82
switch {
83
83
case d .Role != "" && d .WebIdentityToken != "" :
84
84
d .log .V (logf .DebugLevel ).Info ("using assume role with web identity" )
85
- optFns = append (optFns , config .WithRegion (d .Region ))
86
85
case useAmbientCredentials :
87
86
d .log .V (logf .DebugLevel ).Info ("using ambient credentials" )
88
87
// Leaving credentials unset results in a default credential chain being
@@ -98,9 +97,14 @@ func (d *sessionProvider) GetSession(ctx context.Context) (aws.Config, error) {
98
97
return aws.Config {}, fmt .Errorf ("unable to create aws config: %s" , err )
99
98
}
100
99
100
+ // Explicitly set the region to aws-global so that AssumeRole can be used
101
+ // with the global sts endpoint.
102
+ stsCfg := cfg .Copy ()
103
+ stsCfg .Region = "aws-global"
104
+
101
105
if d .Role != "" && d .WebIdentityToken == "" {
102
106
d .log .V (logf .DebugLevel ).WithValues ("role" , d .Role ).Info ("assuming role" )
103
- stsSvc := d .StsProvider (cfg )
107
+ stsSvc := d .StsProvider (stsCfg )
104
108
result , err := stsSvc .AssumeRole (ctx , & sts.AssumeRoleInput {
105
109
RoleArn : aws .String (d .Role ),
106
110
RoleSessionName : aws .String ("cert-manager" ),
@@ -119,7 +123,7 @@ func (d *sessionProvider) GetSession(ctx context.Context) (aws.Config, error) {
119
123
if d .Role != "" && d .WebIdentityToken != "" {
120
124
d .log .V (logf .DebugLevel ).WithValues ("role" , d .Role ).Info ("assuming role with web identity" )
121
125
122
- stsSvc := d .StsProvider (cfg )
126
+ stsSvc := d .StsProvider (stsCfg )
123
127
result , err := stsSvc .AssumeRoleWithWebIdentity (ctx , & sts.AssumeRoleWithWebIdentityInput {
124
128
RoleArn : aws .String (d .Role ),
125
129
RoleSessionName : aws .String ("cert-manager" ),
0 commit comments