AWS Docker部署

Nic*_*len 30 amazon-web-services amazon-ecs docker amazon-elastic-beanstalk

我有一个上传到ECS的自定义docker镜像.我打开了权限,试图解决这个问题(一旦我能够解决这个问题,我会再次将其锁定).我正在尝试将docker镜像部署到弹性beanstalk.我设置了一个支持docker的弹性beanstalk环境.根据AWS文档,如果我从AWS中提取我的图像,我不需要传递凭据.所以我上传了我的Dockerrun.aws.json文件并尝试安装它.它失败并出现错误:

命令在实例上失败.返回码:1输出:无法使用ECR对'us-east-1'中的注册表'434875166128'进行身份验证.挂钩/opt/elasticbeanstalk/hooks/appdeploy/pre/03build.sh失败.有关更多详细信息,请使用控制台或EB CLI检查/var/log/eb-activity.log.

/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"
}
Run Code Online (Sandbox Code Playgroud)

我还尝试在S3中使用dockercfg.json文件添加身份验证.它对我也没有用.

请注意,我使用的是商家帐户而非个人帐户,因此可能还会有一些未知的差异.

谢谢!

更新:我的用户此刻也具有完全权限,因此不应该有任何权限方式阻碍.

小智 61

我遇到了同样的问题.

解决方案:AWS -> IAM -> Roles - >选择beanstalk正在使用的角色.

在我的情况下它被设置为 aws-elasticbeanstalk-ec2-role

在角色的权限下,附加策略:AmazonEC2ContainerRegistryReadOnly

在ECR中,无需为此角色授予任何权限.

  • 在AWS Elastic Beanstalk管理控制台中启动环境时,"aws-elasticbeanstalk-ec2-role"是默认实例配置文件. - http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-instanceprofile.html (3认同)