带有Amazon ECR Docker镜像的AWS Elastic Beanstalk

Flo*_*tig 3 amazon-ec2 amazon-web-services amazon-elastic-beanstalk

我是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
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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:User:arn:aws:sts :: xxx:assume-role/aws-elasticbeanstalk-ec2-role/i-xyz无权执行:ecr:GetAuthorizationToken on resource:*status code:400 ,请求ID:4143c35d-)

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

救命?!

Flo*_*tig 9

我不确定它的编写地点,但我需要实际将AmazonEC2ContainerRegistryReadOnly策略添加到aws-elasticbeanstalk-ec2-role.AmazonEC2ContainerRegistryReadOnly包含GetAuthorizationToken操作.


pee*_*eer 8

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

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

  2. 选择aws-elasticbeanstalk-ec2-role

  3. 在权限选项卡上,选择附加策略。

  4. 选择AmazonEC2ContainerRegistryReadOnly

  5. 选择附加策略