如何在启用MFA强制执行的情况下使用`aws ecr get-login`?

Tom*_*rne 7 amazon-web-services aws-cli

我正在使用aws cli,我的IAM用户拥有完整的管理员权限.我们公司需要MFA,因此我的IAM用户有一个MFA强制执行政策.要使用cli,我使用获取令牌aws sts get-session-token.

这一切都让我使用aws cli就好了,直到我尝试获取AWS容器注册表的docker登录.然后我收到一个错误......

$ aws ecr get-login --registry-ids XXXXX An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::XXXXX:user/yyyyy is not authorized to perform: ecr:GetAuthorizationToken on resource: *

如果我暂时从IAM用户中删除MFA强制策略,则命令会成功.

所以问题是,如何aws ecr get-login启用MFA强制执行?

小智 8

您首先需要获取会话令牌。这可以通过以下方式完成:

aws sts get-session-token --serial-number <arn-of-the-mfa-device> --token-code <code-generated-by-MFA-device>
Run Code Online (Sandbox Code Playgroud)

通过转到 AWS 控制台 IAM 部分中的用户详细信息,可以找到 arn-of-the-mfa-device。上述命令的输出将为您提供一个会话令牌,以及其他访问凭证,供您使用。然后你应该运行:

aws configure set aws_session_token <the-session-token-in-the-output-of-above-command>
Run Code Online (Sandbox Code Playgroud)

之后,像往常一样进行aws ecr登录。