AWS Elastic Beanstalk with Amazon ECR Docker image



我是 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: arn:aws:sts::xxx:assumed-role/aws-elasticbeanstalk-ec2-role/i-xyz 无权执行: ecr:获取授权令牌 在资源上: * 状态代码:400,请求 ID:4143C35D-(

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

帮助?!

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

per 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. 选择附加策略

最新更新