Я столкнулся с проблемой при использовании AWS SDK. В настоящее время я использую SDK для golang, но приветствуются и решения на других языках!
У меня есть кластер ECS, созданный через SDK
Теперь мне нужно добавить контейнеры EC2 для этого кластера. Моя проблема в том, что я не могу использовать Amazon ECS Agent для указания имени кластера через config:
#!/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.
Не похоже на рабочее решение.
Мне нужно понять, как (если это возможно) создать рабочий ECS cluster
только с помощью SDK.
Обновлено: Моя основная цель - запустить указанное количество серверов из образа Docker. Пока я исследую эту задачу, я обнаружил, что мне нужны:
создать кластер ECS
назначьте ему необходимое количество экземпляров ec2.
создать задачу с моим изображением Docker.
запустить его в кластере вручную или как службу.
Так что я:
Создал новый кластер методом CreateCluster с именем «test-cluster».
Создал новую задачу через RegisterTaskDefinition
Создан новый экземпляр EC2 с ролью ecsInstanceRole с оптимизированным для ecs типом AMI, что подходит для моего региона. И там то место, где начались проблемы.
Фактический результат: все новые экземпляры ec2 были подключены к кластеру «по умолчанию» (AWS создал его и подключил к нему экземпляр). Если я использую агент ECS, я могу указать имя кластера, используя конфигурационный env ECS_CLUSTER. Но я разрабатываю инструмент, который использует только SDK (без возможности использования агента ECS). С RegisterTaskDefinition у меня нет возможности указать кластер, поэтому мой вопрос, как я могу назначить новый экземпляр EC2 точно указанному кластеру?
Когда я пытался просто запустить свою задачу с помощью метода RunTask (надеясь, что AWS каким-то образом создаст для меня экземпляры или что-то в этом роде), я получил сообщение об ошибке:
InvalidParameterException: No Container Instances were found in your cluster.
Я вообще-то не могу понять, какой вопрос вы задаете. Вам нужно добавить контейнеры в кластер или добавить экземпляры в кластер? Это очень разные.
Это не делается с помощью API ECS, это делается с помощью API EC2 путем создания экземпляров EC2 с правильной ролью ecsInstanceRole. Дополнительную информацию см. В документации Запуск экземпляра контейнера Amazon ECS.
Это делается путем определения определения задачи, а затем запуска этих задач вручную или как сервисов. См. Определения задач Amazon ECS для получения дополнительной информации.
спасибо за помощь, я обновил вопрос. Не могли бы вы отредактировать его еще раз?