AWS ECR GetAuthorizationToken 问题

Posted

技术标签:

【中文标题】AWS ECR GetAuthorizationToken 问题【英文标题】:AWS ECR GetAuthorizationToken Issue 【发布时间】:2019-06-02 05:35:47 【问题描述】:

我有 Jenkins 设置,用于将我的 docker 映像部署到 Amazon ECR 存储库。 我在我的 AWS 账户中为 IAM 用户启用了 2FA。我已将所有管理策略附加到我的 IAM 用户。我正在按照以下命令将我的 docker 映像源推送到 Amazon ECR 存储库。

aws sts get-session-token --serial-number arn-of-the-mfa-device --token-code code-from-token

参考链接:https://aws.amazon.com/premiumsupport/knowledge-center/authenticate-mfa-cli/

詹金斯代码:

export aws configure

export AWS_ACCESS_KEY_ID=AKIAJ6CAU****

export AWS_SECRET_ACCESS_KEY=TRXaGmEHN5******

export AWS_DEFAULT_REGION=eu-west-2

$(aws ecr get-login --no-include-email --region eu-west-2)

docker tag add-product:latest 06423123213.dkr.ecr.eu-west-2.amazonaws.com/add-product:$BUILD_NUMBER

docker push 06423123213.dkr.ecr.eu-west-2.amazonaws.com/add-product:$BUILD_NUMBER

我在部署到 Amazon ECR 时遇到了这个问题。

    “调用 GetSessionToken 操作时发生错误 (AccessDenied):无法使用会话凭据调用 GetSessionToken”

    “调用GetSessionToken操作时出错(AccessDenied):MultiFactorAuthentication失败,无法验证MFA代码”

参考链接: AWS ECR GetAuthorizationToken

【问题讨论】:

【参考方案1】:

无论如何,ECR 令牌的到期周期很短,您可以尝试使用 ecr 凭证助手。 并让你的 docker 使用 helper


"credHelpers": 
    "aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login"

参考:https://lwpro2.wordpress.com/2019/10/30/authenticating-amazon-ecr-repositories-for-docker-cli-with-credential-helper/

【讨论】:

【参考方案2】:

查看 aws 生成的 AWS_SECRET_ACCESS_KEY 是否有“/”。如果你有“/”生成一个新的 AWS_SECRET_ACCESS_KEY 没有并添加它将工作 \o/

【讨论】:

以上是关于AWS ECR GetAuthorizationToken 问题的主要内容,如果未能解决你的问题,请参考以下文章

Docker 推送到 AWS ECR 问题

如何在 AWS-ECR 中为 docker 映像使用环境变量?

AWS ECR 获取授权令牌

将 docker 容器从本地推送到 aws ecr

在 AWS EC2 上从 AWS ECR 中提取图像,而不使用 docker login,但使用 EC2 实例角色和 ECR 存储库权限

sh aws ecr用法