使用 aws-vault 将 docker 图像推送到 ECR 失败

use aws-vault to push docker image to ECR failed

我正在尝试将 docker 图像从我的 mac 推送到 ECR。我在aws-vault中添加了身份,但是使用aws-vault获取密码失败。我的同伴有相同的权限,他可以毫无问题地登录 ECR。

.aws % aws-vault list                                                                                
    Profile                  Credentials              Sessions                 
    =======                  ===========              ========                 
    identity                 identity                 -                        
.aws % ENCRYPTED_PASSWORD=$(aws-vault exec identity -- aws ecr get-login-password --region us-west-2)
    
    An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:iam::97xxxxxxxxxx:user/xxxxx.xxxxxx@xxxxxxxxx.com is not authorized to perform: ecr:GetAuthorizationToken on resource: * with an explicit deny in an identity-based policy

我们使用的是同一个角色。我打算在获得 ENCRYPTED_PASSWORD 后执行以下行--

aws-vault exec identity -- aws ecr --region us-west-2 | docker login -u AWS -p ${ENCRYPTED_PASSWORD} xxxxxxxxxxxx.dkr.ecr.us-west-2.amazonaws.com/my-ecr

我的.aws/config有这行参考上面的

[profile identity]

因为我的队友有相同的 policy/permission,所以我不认为“GetAuthorizationToken”是个问题。还有什么?我正在尝试找到一种方法将我的 docker 图像从 Mac 推送到 ECR。

完全重做配置,将所有角色链接到身份。

[profile xx-xxxx-services-monitoring]
role_arn=arn:aws:iam::xxxxxxxxxxxx:role/XXMonitoring
source_profile=identity
sparent_profile=mfa

[profile identity]

现在是令牌问题--我从 MFA 验证器输入代码但失败

.aws % aws-vault exec xx-xxxx-main-admin  -- aws ecr get-login --region us-west-2
Warning: parent_profile is deprecated, please use include_profile instead in your AWS config
Enter token for arn:aws:iam::xxxxxxxxxxxx:mfa/xxxxxx.xxxx@xxxxxx.com: **125492**
aws-vault: error: exec: Failed to get credentials for xx-xxxx-main-admin: AccessDenied: MultiFactorAuthentication failed, unable to validate MFA code.  Please verify your MFA serial number is valid and associated with this user.
    status code: 403, request id: 25808115-d9fa-480d-87d4-xxxxxxxxxxxxx

从 Authenticator MFA 看来令牌无效

  1. 第一个 aws-vault“GetAuthorizationToken”是由不健康、格式错误的 ~/.aws/config 文件引起的。必须使用以下格式指定角色--

    [配置文件 xx-xxxx-服务监控] role_arn=arn:aws:iam::xxxxxxxxxxxx:role/XXMonitoring source_profile=身份 sparent_profile=mfa

    [个人资料身份]

  2. 第二部分是MFA问题。 MFA 序列号必须与您在身份验证器中配置的相匹配。 (DUO, Authy, Authenticator...) 你的 ~/.aws/config 应该有这个部分--

    [个人资料 mfa] mfa_serial=arn:aws:iam::xxxxxxxxxxxx:mfa/xxxxx.xxxx@xxxxx.com