程序开发 · 2024年1月15日

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

当前位置: > > > > AWS ECS SDK。使用SDK为ECS集群注册新的容器实例(EC2)

来源:stackoverflow
2024-04-24 09:45:32
0浏览
收藏

有志者,事竟成!如果你在学习Golang,那么本文《AWS ECS SDK。使用SDK为ECS集群注册新的容器实例(EC2)》,就很适合你!文章讲解的知识点主要包括,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

问题内容

我在使用 aws sdk 时遇到了这个问题。目前我使用的是golang的sdk,但也欢迎其他语言的解决方案!

我有通过sdk创建的ecs集群

现在我需要为此集群添加 ec2 容器。我的问题是我无法使用 amazon ecs 代理通过配置指定集群名称:

#!/bin/bash
echo ecs_cluster=your_cluster_name >> /etc/ecs/ecs.config

或者类似的东西。 我只能使用 sdk

我找到了名为 registercontainerinstance 的方法。

但它有注释:

此操作仅由 amazon ecs 代理使用,而不是由 amazon ecs 代理使用。 旨在在代理之外使用。

它看起来不像有效的解决方案。

我需要了解如何(如果可能)仅创建工作 ecs 集群 using sdk。

更新: 我的主要目标是需要从 docker 映像启动指定数量的服务器。 当我调查这项任务时,我发现我需要:

  • 创建ecs集群

  • 为其分配所需的 ec2 实例数量。

  • 使用我的 docker 映像创建任务。

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

所以我:

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

  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 实例来完成的。有关详细信息,请参阅 文档。

将容器添加到集群

这是通过定义任务定义,然后手动运行这些任务或作为服务来完成的。请参阅 了解更多信息。

以上就是《AWS ECS SDK。使用SDK为ECS集群注册新的容器实例(EC2)》的详细内容,更多关于的资料请关注公众号!