我正在尝试构建一个示例 java 项目并尝试构建一个 docker 镜像并将该镜像推送到 AWS ECR,但在登录 AWS ECR 时遇到了问题。
错误:COMMAND_EXECUTION_ERROR:执行命令时出错:aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/z8i5y3u6。原因:退出状态 1
我使用下面的 buildspec.yml 文件进行构建。不知道我哪里做错了,请帮我解决这个问题。
版本:0.2
阶段:
安装:
运行时版本:
爪哇:corretto8
码头工人:18
预构建:
命令:
- echo 登录 Amazon ECR...
- aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws/z8i5wy3u
建造:
命令:
- echo Build 于 date
开始
- mvn 包
post_build:
命令:
- echo 正在构建 Docker 镜像...
- docker build -t atlas2-au 。
- 码头工人标签 atlas2-au:latest public.ecr.aws/z8i5y3u6/atlas:latest
- docker push public.ecr.aws/z8i5y3u6/atlas2-au:latest
答案 0 :(得分:0)
command 和 buildspec.yml 对我来说是正确的,你是否为 ECR 提供了适当的角色?
Amazon ECR 要求用户拥有通过 IAM 策略调用 ecr:GetAuthorizationToken API 的权限,然后他们才能对注册表进行身份验证并从任何 Amazon ECR 存储库推送或拉取任何图像。 Amazon ECR 提供了多个托管 IAM 策略来控制不同级别的用户访问;有关更多信息,请参阅 Amazon Elastic Container Registry 基于身份的策略 https://docs.aws.amazon.com/AmazonECR/latest/userguide/security_iam_id-based-policy-examples.html