运行任务时出现 AWS ECS 错误:在您的集群中未找到任何容器实例

新手上路,请多包涵

我正在尝试使用 --- 将 docker 容器映像部署到 AWS ECS ,但是没有创建 EC2 实例。我已经在互联网上搜寻了有关我收到以下错误的原因的解释:

“调用 RunTask 操作时发生客户端错误 (InvalidParameterException):在您的集群中未找到任何容器实例。”

这是我的步骤:

1. 将 Docker 映像从 Ubuntu 推送到我的 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
    }
  ]
}

我也尝试使用管理控制台来配置集群和服务,但我得到了同样的错误。如何将集群配置为拥有 ec2 实例,需要使用哪种容器实例? 我认为这整个过程是从创建 EC2 实例开始的!!

原文由 cosbor11 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 562
2 个回答

经过几个小时的调查,我发现了这一点。亚马逊,如果您正在收听,您应该在创建集群或向集群添加实例时在管理控制台的某处说明这一点:

“在您可以将 ECS 实例添加到集群之前,您必须先转到 EC2 管理控制台并创建 ecs-optimized 实例,其 IAM 角色附加了 AmazonEC2ContainerServiceforEC2Role 策略”

这是繁琐的:

1. 转到您的 EC2 仪表板,然后单击 Launch Instance 按钮。

2. 在 Community AMIs 下,搜索 ecs-optimized ,然后选择最适合您项目需求的那个。任何都会起作用。点击下一步。

3. 当您进入配置实例详细信息时,单击 create new IAM role link 并创建一个名为 ecsInstanceRole 的新角色。

4. 将 AmazonEC2ContainerServiceforEC2Role 策略附加到该角色。

5. 然后,完成配置您的 ECS 实例。

注意: 如果您正在创建 Web 服务器,您将需要创建一个安全组以允许访问端口 80。

几分钟后,当实例初始化并运行时,您可以刷新您也尝试添加实例的 ECS 实例选项卡。

原文由 cosbor11 发布,翻译遵循 CC BY-SA 4.0 许可协议

目前,Amazon AWS Web 界面可以自动创建具有正确 AMI 和正确名称的实例,以便注册到正确的集群。

即使所有实例都是由 Amazon 使用正确设置创建的,我的实例也不会注册。在 亚马逊 AWS 论坛上,我发现了一条线索。事实证明,您的集群需要互联网访问,如果您的私有 VPC 没有互联网网关,集群将无法连接。

修复

在 VPC 仪表板中,您应该创建一个新的 Internet 网关并将其连接到集群使用的 VPC。附加后,您必须更新(或创建)VPC 的路由表并添加为最后一行

0.0.0.0/0 igw-24b16740

其中 igw-24b16740 是您新创建的 Internet 网关的名称。

原文由 P_W999 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题