使用AWSPowerShell在米兰区域(eu-south-1)通过STS获取AWS会话失败
AWSPowerShell在米兰区域(eu-south-1)通过STS获取AWS会话失败
看起来你遇到的是跨区域使用Assume Role时的令牌有效性问题,我之前排查过类似的情况,咱们一步步来定位解决:
1. 先检查你的test凭证配置是否正确关联目标角色
打开本地的AWS凭证文件(一般路径是C:\Users\<你的用户名>\.aws\credentials),查看test这个profile的配置:
- 确认
role_arn对应的是你要在eu-south-1区域使用的角色ARN,而不是东京区域的旧角色; - 检查
source_profile是否指向了拥有sts:AssumeRole权限的源凭证,源凭证的Access Key/Secret Key是否有效。
2. 强制使用米兰区域的STS端点发起请求
默认情况下AWSPowerShell可能会调用全局STS端点,部分新区域用区域端点兼容性更好,你可以试试指定STS端点后再操作:
Set-AWSCredential -ProfileName test -STSEndpoint https://sts.eu-south-1.amazonaws.com Set-DefaultAWSRegion -Region eu-south-1 Get-STSCallerIdentity
3. 排查源凭证的权限是否被区域限制
你用来Assume Role的源Access Key所属的IAM用户/角色,有没有被权限策略限制只能在ap-northeast-1区域操作?比如策略里如果有这样的条件:
"Condition": { "StringEquals": { "aws:RequestedRegion": "ap-northeast-1" } }
那在eu-south-1区域发起请求就会被拒绝,需要把eu-south-1添加到允许的区域列表里,或者移除这个区域限制条件。
4. 清除PowerShell的凭证缓存
有时候旧的无效凭证会被缓存,导致新请求出错,你可以尝试清除缓存后重新加载:
# 移除现有profile缓存 Remove-AWSCredentialProfile -ProfileName test # 重新加载配置 Set-AWSCredential -ProfileName test
或者直接重启PowerShell会话,确保没有残留的过期凭证。
5. 验证目标角色的信任策略
登录AWS控制台,找到你要Assume的角色,查看信任关系标签:
- 确保信任策略里的
Principal正确指向了你的源账号用户/角色ARN; - 检查是否有额外的条件限制(比如区域限制),如果有的话需要调整允许eu-south-1区域的请求。
按照这个顺序排查下来,应该能找到问题所在,解决令牌无效的报错。
备注:内容来源于stack exchange,提问作者andrew
相关产品推荐
相关产品推荐

