Внедрение AWS Docker
У меня есть пользовательское изображение докеров, загруженное в ECS. Я открыл разрешения, чтобы попытаться пройти эту проблему (я закрою его снова, как только смогу заставить это работать). Я пытаюсь развернуть изображение докера на эластичном бобовом стебле. У меня есть настроенная защита от фасонов. Согласно документам AWS, если я извлекаю свой образ из AWS, мне не нужно передавать учетные данные. Поэтому я загружаю файл Dockerrun.aws.json и пытаюсь установить его. Ошибка с ошибкой:
Ошибка команды в экземпляре. Код возврата: 1 Выход: Не удалось выполнить проверку подлинности с помощью ECR для реестра "434875166128" в "us-east-1". Ошибка Hook/opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh. Для получения более подробной информации проверьте /var/log/eb -activity.log с помощью консоли или EB CLI.
Информация о файле /var/log/eb -activity.log не имеет ничего полезного.
Здесь мой файл Dockerrun.aws.json:
{
"AWSEBDockerrunVersion": "1",
"Image": {
"Name": "{id000xxxx}.dkr.ecr.us-east-1.amazonaws.com/my-repo:1.0.0",
"Update": "true"
},
"Ports": [
{
"ContainerPort": "4000"
}
],
"Logging": "/var/log/app-name"
}
Я также попытался добавить аутентификацию с файлом dockercfg.json в S3. Это тоже не сработало.
Обратите внимание, что я использую бизнес-учетную запись вместо личной учетной записи, поэтому могут быть некоторые неизвестные отклонения.
Спасибо!
Обновление. Мой пользователь также имеет полные разрешения на данный момент, поэтому не должно быть никаких препятствий на пути.
Ответы
Ответ 1
У меня была та же проблема.
Решение:
В AWS -> IAM -> Roles - >
выберите роль, которую использует ваш beanstalk.
В моем случае он был установлен в aws-elasticbeanstalk-ec2-role
В разделе Разрешения для роли добавьте политику: AmazonEC2ContainerRegistryReadOnly
В ECR нет необходимости предоставлять какие-либо разрешения для этой роли.
Ответ 2
Вы можете запрограммировать необходимые сервисные роли для эластичного бобового стебля (aws-elasticbeanstalk-ec2-role, aws-elasticbeanstalk-service-role, AWSServiceRoleForECS), используя консоль new из эластичного бобового стебля.
Вы должны сделать это только один раз на каждой учетной записи AWS:
- Перейдите к консоли Elastic beanstalk.
- Примите "новый дизайн": в верхней части консоли, если увидите сообщение "мы тестируем новый дизайн", optin согласиться использовать новую версию консоли. Предупреждение. Кажется, вы отказываетесь от старой консоли.
- Запустите мастер создания нового приложения и используйте образец приложения по умолчанию в этой технологии.
- Завершите все шаги мастера до возобновления и посмотрите на панель безопасности: вы увидите две роли: "aws-elasticbeanstalk-ec2-role" и "aws-elasticbeanstalk-service-role". И завершите работу мастера, чтобы создать пример приложения.
- Через некоторое время приложение должно работать
- В случае возникновения чрезвычайной ситуации перейдите на консоль IAM и удалите роли aws-elasticbeanstalk-ec2-role и aws-elasticbeanstalk-service-role и снова запустите мастер.
Я установил "Command failed in instance". Код возврата: 1 Выход: не удалось выполнить проверку подлинности с помощью ECR для реестра "и другую странную ошибку (" Идентификатор ключа доступа AWS, который вы предоставили, не существует в наших записях. (ElasticBeanstalk:: ManifestDownloadError) "), используя консоль NEW. У меня все еще была эта ошибка со старой.