gpt4 book ai didi

amazon-web-services - AWS ECS SDK.使用 SDK 为 ECS 集群注册新的容器实例 (EC2)

转载 作者:数据小太阳 更新时间:2023-10-29 03:22:16 26 4
gpt4 key购买 nike

我在使用 AWS SDK 时遇到过这个问题。目前我正在使用 golang 的 SDK,但也欢迎其他语言的解决方案!

我通过 SDK 创建了 ECS 集群

现在我需要为这个集群添加 EC2 容器。我的问题是我无法使用 Amazon ECS 代理通过配置指定集群名称:

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

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

我找到了名为 RegisterContainerInstance 的方法.

但是它有注释:

This action is only used by the Amazon ECS agent, and it is not intended for use outside of the agent.

它看起来不像工作解决方案。

我需要了解如何(如果可能的话)仅使用 SDK 创建有效的 ECS 集群

更新:我的主要目标是我需要从我的 Docker 镜像启动指定数量的服务器。在调查此任务时,我发现我需要:

  • 创建ECS集群

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

  • 使用我的 Docker 镜像创建任务。

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

所以我:

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

  2. 通过 RegisterTaskDefinition 创建了新任务

  3. 创建了具有 ecsInstanceRole 角色和 ecs-optimized AMI 类型的新 EC2 实例,这对我所在的地区来说是正确的。那里是问题开始的地方。

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

当我试图通过 RunTask 开始我的任务时方法(希望 AWS 以某种方式为我创建实例或类似的东西)我收到一个错误:

InvalidParameterException: No Container Instances were found in your cluster.

最佳答案

我其实搞不懂你问的是哪个问题。您需要向集群添加容器,还是向集群添加实例?这些是非常不同的。

向集群添加实例

这不是通过 ECS API 完成的,而是通过使用正确的 ecsInstanceRole 创建 EC2 实例的 EC2 API 完成的。查看Launching an Amazon ECS Container Instance文档以获取更多信息。

将容器添加到集群

这是通过定义任务定义,然后手动或作为服务运行这些任务来完成的。查看Amazon ECS Task Definitions获取更多信息。

关于amazon-web-services - AWS ECS SDK.使用 SDK 为 ECS 集群注册新的容器实例 (EC2),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51773995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com