AWS ECS SDK. Зарегистрируйте новый экземпляр контейнера (EC2) для кластера ECS с помощью SDK

Я столкнулся с проблемой при использовании 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.

  • запустить его в кластере вручную или как службу.

Так что я:

  1. Создал новый кластер методом CreateCluster с именем «test-cluster».

  2. Создал новую задачу через RegisterTaskDefinition

  3. Создан новый экземпляр 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.
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
476
1

Ответы 1

Я вообще-то не могу понять, какой вопрос вы задаете. Вам нужно добавить контейнеры в кластер или добавить экземпляры в кластер? Это очень разные.

Добавить экземпляры в кластер

Это не делается с помощью API ECS, это делается с помощью API EC2 путем создания экземпляров EC2 с правильной ролью ecsInstanceRole. Дополнительную информацию см. В документации Запуск экземпляра контейнера Amazon ECS.

Добавить контейнеры в кластер

Это делается путем определения определения задачи, а затем запуска этих задач вручную или как сервисов. См. Определения задач Amazon ECS для получения дополнительной информации.

спасибо за помощь, я обновил вопрос. Не могли бы вы отредактировать его еще раз?

Igor Skobelev 11.08.2018 20:09

Другие вопросы по теме