带有 Amazon ECR Docker 映像的 AWS Elastic Beanstalk

Posted

技术标签:

【中文标题】带有 Amazon ECR Docker 映像的 AWS Elastic Beanstalk【英文标题】:AWS Elastic Beanstalk with Amazon ECR Docker image 【发布时间】:2017-12-04 15:45:56 【问题描述】:

我是 AWS 新手,我正在尝试将多容器 Docker 应用程序部署到 Elastic Beanstalk。 我的 Dockerrun.aws.json 文件很简单,也是唯一上传到 EB 的:


  "AWSEBDockerrunVersion": 2,
  "containerDefinitions": [
    
      "name": "mycontainer",
      "image": "somethingsomething.eu-central-1.amazonaws.com/myimage",
      "essential": true,
      "memory": 128
    
  ]

在http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_docker.container.console.html 中说,当使用上传到 Amazon ECR 的 Docker 映像时:

但是,您确实需要向您的实例提供以下权限 通过添加权限访问您的 Amazon ECR 存储库中的图像 到您环境的实例配置文件。您可以附上 实例的 AmazonEC2ContainerRegistryReadOnly 托管策略 配置文件以提供对所有 Amazon ECR 存储库的只读访问权限 您的帐户

在部署应用程序时,会引发以下错误:

ECS 任务因以下原因停止:任务中的基本容器已退出。 (myimage:CannotPullContainerError:AccessDeniedException:用户: arn:aws:sts::xxx:假​​定角色/aws-elasticbeanstalk-ec2-role/i-xyz 无权执行:ecr:GetAuthorizationToken 对资源:* 状态码:400,请求ID:4143c35d-)

我将 AWSElasticBeanstalkReadOnlyAccess 添加到 aws-elasticbeanstalk-ec2-role,但它并没有改变任何东西...

帮忙?!

【问题讨论】:

【参考方案1】:

我不确定它写在哪里,但我需要将 AmazonEC2ContainerRegistryReadOnly 策略实际添加到 aws-elasticbeanstalk-ec2-role。 AmazonEC2ContainerRegistryReadOnly 包含 GetAuthorizationToken 操作。

【讨论】:

太棒了!非常感谢! :) 谢谢!!这在我阅读的任何教程中都没有提到!【参考方案2】:

每https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html#iam-instanceprofile-addperms

    打开https://console.aws.amazon.com/iam/home#roles

    选择 aws-elasticbeanstalk-ec2-role

    在“权限”选项卡上,选择“附加策略”。

    选择 AmazonEC2ContainerRegistryReadOnly

    选择附加政策

【讨论】:

以上是关于带有 Amazon ECR Docker 映像的 AWS Elastic Beanstalk的主要内容,如果未能解决你的问题,请参考以下文章

无法将图像推送到 Amazon ECR - 因“没有基本身份验证凭证”而失败

Docker:撰写文件与 Amazon ECS 不兼容

如何通过 AWS EKS 在 ECR 中使用 Docker 映像

ECR 映像移动到 ECS(Docker、Gitlab)

elasticbeanstalk 和 ecr 中的 docker 映像存在问题

如何在 AWS-ECR 中为 docker 映像使用环境变量?