12

我正在尝试获取会话令牌以设置环境变量,以便使用上传到 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
4

1 回答 1

9

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

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

如果您想拨打get-session-token,您将需要使用您的正常凭据来拨打电话,就像您在第二个示例中所做的那样。

于 2019-04-02T06:40:27.817 回答