![](/img/trans.png)
[英]Using AWS SDK for Node.js, how to wait for EC2 instance being added to ECS cluster?
[英]AWS ECS SDK.Register new container instance (EC2) for ECS Cluster using SDK
使用AWS开发工具包时遇到了问题。 目前,我正在将SDK用于golang,但也欢迎使用其他语言的解决方案!
我通过SDK创建了ECS集群
现在,我需要为该集群添加EC2容器。 我的问题是我无法使用Amazon ECS代理通过配置指定集群名称:
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
或类似的东西。 我只能使用SDK 。
我找到了名为RegisterContainerInstance的方法。
但要注意:
此操作仅由Amazon ECS代理使用,并且不适用于该代理以外的用途。
它看起来不像是可行的解决方案。
我需要了解如何(如果可能)仅使用SDK创建有效的ECS cluster
。
更新:我的主要目标是我需要从Docker映像中启动指定数量的服务器。 在研究此任务时,我发现我需要:
创建ECS集群
为其分配所需的ec2实例数。
用我的Docker镜像创建Task
手动或作为服务在群集上运行它。
所以我:
通过名称为“ test-cluster”的CreateCluster方法创建了新集群。
通过RegisterTaskDefinition创建了新任务
创建具有ecsInstanceRole角色且具有经ecs优化的AMI类型的新EC2实例,该实例对我的区域是正确的。 那里开始出现问题。
实际结果:所有新的ec2实例都已附加到“默认”群集(AWS创建了该实例并将其附加到实例)。 如果使用的是ECS代理,则可以使用ECS_CLUSTER config env指定群集名称。 但是我正在开发仅使用SDK的工具(没有使用ECS代理的任何功能)。 使用RegisterTaskDefinition,我无法指定集群,所以我的问题是,如何将新的EC2实例完全分配给指定的集群?
当我尝试仅通过RunTask方法启动任务(希望AWS以某种方式为我创建实例或类似的实例)时,我收到一条错误消息:
InvalidParameterException: No Container Instances were found in your cluster.
我实际上无法弄清您在问哪个问题。 您是否需要将容器添加到集群,或将实例添加到集群? 这些是非常不同的。
ECS API不能做到这一点,而EC2 API可以通过使用正确的ecsInstanceRole创建EC2实例来实现。 有关更多信息,请参阅启动Amazon ECS容器实例文档。
可以先定义任务定义,然后手动或作为服务运行这些任务。 有关更多信息,请参阅Amazon ECS任务定义 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.