运行任务时出现AWS ECS错误:您的群集中找不到容器实例
我尝试使用ECS
将docker
容器映像部署到AWS
,但未创buildEC2实例。 我search了互联网寻找解释为什么我收到以下错误:
“调用RunTask操作时发生客户端错误(InvalidParameterException):您的群集中找不到容器实例。
这是我的步骤:
1.将Ubuntu中的Docker镜像推送到Amazon ECS仓库。
2.注册ECS任务定义:
aws ecs register-task-definition --cli-input-json file://path/to/my-task.json
3.执行任务:
aws ecs run-task --task-definition my-task
然而,它失败了。
这是我的任务:
{ "family": "my-task", "containerDefinitions": [ { "environment": [], "name": "my-container", "image": "my-namespace/my-image", "cpu": 10, "memory": 500, "portMappings": [ { "containerPort": 8080, "hostPort": 80 } ], "entryPoint": [ "java", "-jar", "my-jar.jar" ], "essential": true } ] }
我也尝试使用pipe理控制台来configuration群集和服务,但我得到相同的错误。 我如何configuration集群有ec2实例,以及需要使用哪种容器实例? 我认为这整个过程是创buildEC2实例开始!
经过几个小时的调查,我想到了这一点。 亚马逊,如果您正在监听,那么在创build群集或将实例添加到群集时,应在pipe理控制台的某个位置进行说明:
“在将ECS实例添加到集群之前,您必须首先访问EC2pipe理控制台,并创build具有附加
AmazonEC2ContainerServiceforEC2Role
策略的IAMangular色ecs-optimized
实例”
这里是艰巨的:
1.转到您的EC2仪表板 ,然后单击Launch Instance
button。
2.在“ Community AMIs
,searchecs-optimized
,并select最适合您项目需求的那个。 任何将工作。 点击下一步。
3.当您进入configuration实例详细信息时,单击create new IAM role link
并创build一个名为ecsInstanceRole
的新angular色。
4.将AmazonEC2ContainerServiceforEC2Role
策略附加到该angular色。
5.然后,完成configuration您的ECS实例。
注:如果您创buildWeb服务器,您将需要创build一个securityGroup以允许访问端口80。
几分钟后,当实例初始化并运行时,您可以刷新“ECS实例”选项卡,并尝试添加实例。
目前,Amazon AWS Web界面可以自动创build具有正确AMI和正确名称的实例,以便将其注册到正确的群集。
即使所有实例都是由Amazon使用正确的设置创build的,我的实例不会注册。 在亚马逊AWS论坛上,我发现了一条线索。 事实certificate,您的群集需要互联网访问,如果您的私有VPC没有互联网网关,群集将无法连接。
修复
在VPC仪表板中,您应该创build一个新的Internet网关并将其连接到群集使用的VPC。 一旦连接,您必须更新(或创build)VPC的路由表并添加为最后一行
0.0.0.0/0 igw-24b16740
igw-24b16740是你新build的互联网网关的名称。
其他build议的检查
1)select为给定区域指定的build议ami解决了我的问题。 为了找出ami – 请检查这个urlhttp://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html
2)通过防范所有ec2实例被添加到默认集群。 所以集群的名字也很重要。
请参阅第10点http://docs.aws.amazon.com/AmazonECS/latest/developerguide/launch_container_instance.html
更多信息在这个线程https://forums.aws.amazon.com/thread.jspa?threadID=189513