Я получаю статус выхода 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 или что-то еще? В журнале должны быть некоторые подробности об ошибочной части команды. Спасибо синь

Другие вопросы по тегам