繁体   English   中英

AWS ECS SDK。使用SDK为ECS集群注册新的容器实例(EC2)

[英]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

  • 手动或作为服务在群集上运行它。

所以我:

  1. 通过名称为“ test-cluster”的CreateCluster方法创建了新集群。

  2. 通过RegisterTaskDefinition创建了新任务

  3. 创建具有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM