Я получаю статус выхода AWS ECR 255, несмотря на использование контейнеров AWS Ubuntu
Я пытаюсь создать докер-контейнер в сборке кода AWS как средство для развертывания контейнера в ECR, но я получаю эту ошибку.
Error while executing command: $(aws ecr get-login --region ap-southeast-1). Reason: exit status 255
Эта команда была запущена для файла buildspec.yml с использованием aws/codebuild/ubuntu-base:14.04 и включите этот флаг, если вы хотите создавать образы Docker или хотите, чтобы ваши сборки получали повышенные привилегии.
Файлы журнала следующие:
[Container] 2018/10/11 00:52:49 Running command $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email)
An error occurred (AccessDeniedException) when calling the GetAuthorizationToken operation: User: arn:aws:sts::502776083946:assumed-role/code-build-timesheet/AWSCodeBuild-f1d205b1-b03f-4727-a4d7-a02118021eec is not authorized to perform: ecr:GetAuthorizationToken on resource: *
[Container] 2018/10/11 00:52:52 Command did not exit successfully $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email) exit status 255
[Container] 2018/10/11 00:52:52 Phase complete: INSTALL Success: false
[Container] 2018/10/11 00:52:52 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: $(aws ecr get-login --region $AWS_DEFAULT_REGION --no-include-email). Reason: exit status 255
4 ответа
Этот код состояния обычно указывает на неавторизованного пользователя. Чтобы это исправить, нам нужно, чтобы наша роль Code Build могла общаться с ECR
, Для этого: перейти к IAM
а затем прикрепите AmazonEC2ContainerRegistryPowerUser
политика к вашему CodeBuild
роль.
Версия 2 aws-cli была обновлена, и команда
get-login
был обесценен, вы должны использовать
get-login-password
.
aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login
--username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
Вы можете увидеть обновленную документацию по созданию образа докера в CodeBuild: https://docs.aws.amazon.com/codebuild/latest/userguide/sample-docker.html .
В моем случае я добавил разрешение, но по-прежнему возникала та же проблема. Позже выяснилось, что моя « граница разрешений » в роли IAM не пропускала разрешение. Итак, если вы установите политики разрешений, чтобы разрешить
ecr:GetAuthorizationToken
но если также включена граница разрешений, вам необходимо добавить такое же разрешение к границе разрешений (или удалить границу разрешений).
Есть ли какая-то более конкретная ошибка в вашем журнале cloudwatch? Нравится AccessDenied или что-то еще? В журнале должны быть некоторые подробности об ошибочной части команды. Спасибо синь