AWS ECS SDK。使用SDK

时间:2018-08-09 18:53:33

标签: amazon-web-services go amazon-ec2 sdk amazon-ecs

使用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映像创建任务。

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

所以我:

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

  2. 通过RegisterTaskDefinition

  3. 创建了新任务
  4. 使用具有ecs优化的AMI类型的ecsInstanceRole角色创建了新的EC2实例,这对于我所在的地区是正确的。 那里开始出现问题。

实际结果:所有新的ec2实例都已附加到“默认”群集(AWS创建了该实例并将其附加到实例)。 如果使用的是ECS代理,则可以使用ECS_CLUSTER config env指定群集名称。但是我正在开发仅使用SDK的工具(没有使用ECS代理的任何功能)。 使用RegisterTaskDefinition,我无法指定集群,所以我的问题是,如何将新的EC2实例完全分配给指定的集群?

当我尝试仅通过RunTask方法启动任务(希望AWS以某种方式为我或类似的东西创建实例)时,我会收到错误消息:

InvalidParameterException: No Container Instances were found in your cluster.

1 个答案:

答案 0 :(得分:0)

我实际上无法弄清您在问哪个问题。您是否需要将容器添加到集群,或将实例添加到集群?那些完全不同。

将实例添加到集群

这不是使用ECS API来完成,而是通过使用正确的ecsInstanceRole创建EC2实例来使用EC2 API来完成。有关更多信息,请参见Launching an Amazon ECS Container Instance文档。

将容器添加到集群中

这是通过定义任务定义,然后手动或作为服务运行这些任务来完成的。有关更多信息,请参见Amazon ECS Task Definitions