AWS Docker部署

我有一个自定义的docker镜像上传到ECS。 我打开了权限来尝试解决这个问题(一旦我能得到这个工作,我将再次locking它)。 我试图将docker映像部署到弹性beanstalk。 我有一个docker启用弹性beanstalk环境设置。 根据AWS文档,如果我从AWS内部拉取图像,则不需要传入证书。 所以我上传我的Dockerrun.aws.json文件并尝试安装它。 它失败,错误:

命令在实例上失败。 返回代码:1输出:无法使用ECR对“us-east-1”中的registry“434875166128”进行身份validation。 挂钩/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" } 

我也尝试在S3中添加dockercf.json文件的authentication。 这对我也不起作用。

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

谢谢!

更新:我的用户现在也有完整的权限,所以不应该有任何权限明智的方式。

我遇到了同样的问题。

解决scheme:在AWS- AWS -> IAM -> Roles - >select您的beanstalk正在使用的angular色。

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

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

在ECR中,不需要赋予这个angular色任何权限。

您可以使用Elastic Beanstalk的控制台初始化弹性Beanstalk(aws-elasticbeanbean -alk-ec2-role,aws-elasticbeanbean -alk-service-role,AWSServiceRoleForECS)所需的服务angular色。 您必须在每个AWS账户上只执行一次这样的操作:

  • 转到Elastic beanstalk控制台。
  • 接受“新devise”:在控制台的顶部,如果看到一条消息“我们正在testing一个新的devise”,select接受使用新版本的控制台。 警告,看来你不能回滚到旧的控制台。
  • 启动“创build新应用程序”向导,并在该技术中使用默认示例应用程序。
  • 完成向导的所有步骤,直到简历,并看看安全平台:您将看到两个angular色“aws-elasticbeanbest-ec2-role”和“aws-elasticbeanstalk-service-role”。 并终止向导来创build示例应用程序。
  • 过了一段时间,应用程序应该运行
  • 如果发生紧急情况,请转至IAM控制台并删除angular色aws-elasticbeanstalk-ec2-role和aws-elasticbeanstalk-service-role,然后再次运行该向导。

(ElasticBeanstalk :: ManifestDownloadError):我修复了“Command failed on instance。Return code:1 Output:Failed to authenticate with ECR for registry”以及其他奇怪的错误(“您提供的AWS Access Key Id在我们的logging中不存在。 “)通过使用新的控制台。 我仍然有这个与旧的错误。