COMMAND_EXECUTION_ERROR:执行命令时出错:$(aws ecr get-login --no-include-email --region us-east-1)。原因:退出状态127
下面是我的buildspec.yml文件
version: 0.2
phases:
pre_build:
commands:
- echo Logging in to Amazon ECR...
- aws --version
- $(aws ecr get-login --region ***-east-*)
- REPOSITORY_URI=***********.dkr.ecr.***-east-*.amazonaws.com/repositoryname
- COMMIT_HASH=$(echo $CODEBUILD_RESOLVED_SOURCE_VERSION)
- IMAGE_TAG=${COMMIT_HASH:=latest}
build:
commands:
- echo Build started on `date`
- echo Building the Docker image...
- docker build -t $REPOSITORY_URI:latest .
- docker tag $REPOSITORY_URI:latest $REPOSITORY_URI:$IMAGE_TAG
post_build:
commands:
- echo Build completed
- echo Pushing the Docker images...
- docker push $REPOSITORY_URI:latest
- docker push $REPOSITORY_URI:$IMAGE_TAG
- echo Writing definitions file...
- printf '[{"name":"project-container","imageUri":"%s"}]' $REPOSITORY_URI:$IMAGE_TAG > taskdefinition.json
artifacts:
files: taskdefinition.json
答案 0 :(得分:0)
您的帖子中的信息不一致,是故意的吗?如果不是,则可能是导致问题的原因。您的代码段显示:
$(aws ecr get-login --region ***-east-*)
也许您故意编辑了该区域(那个btw的意义是什么?),但是为什么它缺少--no-include-email
?在您的帖子的更高处,您确实引用了--no-include-email
,所以我知道您知道这一点。
出于故障排除的目的,请不要将其运行在子shell(例如$(my command)
)中,而应尝试运行将子shell取出以获取更好的输出。在此处报告结果,以便我们排除您遇到的错误。
aws ecr get-login --no-include-email --region us-east-1
<-暂时尝试
vs。
$(aws ecr get-login --no-include-email --region us-east-1)
这非常重要。 CodeBuild需要获得许可才能代表您访问ECR。这是我在此博客文章中找到的示例。它可能需要根据您的需要进行调整。 http://beta.awsdocs.com/services/code_build/build_docker_images/
{
"Action": [
"ecr:BatchCheckLayerAvailability",
"ecr:CompleteLayerUpload",
"ecr:GetAuthorizationToken",
"ecr:InitiateLayerUpload",
"ecr:PutImage",
"ecr:UploadLayerPart"
],
"Resource": "*",
"Effect": "Allow"
}
答案 1 :(得分:0)
如果它对其他人有帮助,那么我将在CodeBuild执行的构建脚本中完成我的工作。这些是我必须添加的IAM权限(在遇到错误时一一找到)。
{
"Action": [
"ecr:GetAuthorizationToken",
"ecr:DescribeRepositories",
"ecr:CreateRepository",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload",
"ecr:BatchCheckLayerAvailability",
"ecr:PutImage",
"ecs:UpdateService"
],
"Resource": "*",
"Effect": "Allow"
} '
我确定,如果您正在做一些我在构建中没有做的事情,那么可能需要更多的权限。我正在努力采用ECR,并强迫服务(及相关任务)部署新映像。