我有 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 操作时发生错误(拒绝访问):无法使用会话凭据调用 GetSessionToken”
“调用GetSessionToken操作时发生错误(AccessDenied):MultiFactorAuthentication失败,无法验证MFA代码”
参考链接: AWS ECR 获取授权令牌
反正 ECR token 的有效期很短,你可以尝试使用 ecr credential helper。 并让你的码头工人利用助手
{
"credHelpers": {
"aws_account_id.dkr.ecr.region.amazonaws.com": "ecr-login"
}
}
看AWS生成的
AWS_SECRET_ACCESS_KEY
有没有/
。如果你有/
生成一个新的AWS_SECRET_ACCESS_KEY
没有并添加它会起作用。