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

Ste*_*ett 11 amazon-web-services aws-sts

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

后续调用会跳过 MFA 检查,表明它通过了 ok。

get-session-token不带--profile参数运行可以正常工作:

$ aws sts get-session-token
{
    "Credentials": {
...
Run Code Online (Sandbox Code Playgroud)

可能出什么问题了?我什至以正确的方式解决这个问题吗?

我的相关部分~/.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
Run Code Online (Sandbox Code Playgroud)

Joh*_*ein 8

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

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

如果您想调用get-session-token,则需要使用您的普通凭据进行调用,就像您在第二个示例中所做的那样。

  • “普通证书”与“MFA 证书”?您能否详细解释并添加一个示例(包括命令)? (2认同)