带有Amazon ECR Docker镜像的AWS Elastic Beanstalk

时间:2017-06-30 15:57:27

标签: amazon-web-services amazon-ec2 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
    }
  ]
}

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:   阿尔恩:AWS:STS :: XXX:假设角色/ AWS-elasticbeanstalk-EC2角色/ I-XYZ   无权执行:ecr:资源上的GetAuthorizationToken:*   状态代码:400,请求ID:4143c35d - )

我将AWSElasticBeanstalkReadOnlyAccess添加到aws-elasticbeanstalk-ec2-role中,但它不会改变任何内容......

帮助?!

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:1)

每个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. 选择附加政策