aws sts get-session-token 因配置文件失败

aws sts get-session-token fails with profile

我正在尝试获取会话令牌以设置环境变量,以便使用上传到 S3 但不直接支持 AWS 配置文件的工具。

aws sts get-session-token --profile myprofile
Enter MFA code for arn:aws:iam::1234567890:mfa/myid:

An error occurred (AccessDenied) when calling the GetSessionToken operation: 
Cannot call GetSessionToken with session credentials

后续调用跳过MFA检查,说明通过ok。

运行 get-session-token 没有 --profile 参数工作正常:

$ aws sts get-session-token
{
    "Credentials": {
...

可能出了什么问题?我的做法是否正确?

我的相关部分~/.aws/config

[profile otherprofile]
mfa_serial=arn:aws:iam::xxx:mfa/myid
aws_access_key_id=xxx
aws_secret_access_key=xxx

[profile myprofile]
source_profile=otherprofile
region=ap-southeast-2
role_arn=arn:aws:iam::xxx:role/owner
mfa_serial=arn:aws:iam::xxx:mfa/myid

您的初始呼叫使用的是 IAM 角色。它正在尝试调用 get-session-token,这将 return 一些临时凭据。

但是,当使用 IAM 角色时,AWS CLI 会自动使用您的正常凭证来调用 assume-role,从而接收回一组临时凭证。无法使用临时凭据(从角色)调用 get-session-token。这就是错误消息显示 Cannot call GetSessionToken with session credentials.

的原因

如果您希望调用 get-session-token,您将需要使用您的正常凭据,就像您在第二个示例中所做的那样。