Как запустить экземпляр EC2 в кластере с boto3 - PullRequest
0 голосов
/ 21 сентября 2018

Я хотел бы начать определение задачи для экземпляра в моем кластере (а не по умолчанию).Так что-то вроде:

  1. создать кластер
  2. создать определение задачи с образом докера (у меня есть изображение докера, уже отправленное в ecs)
  3. запустить задачуопределение в кластере
  4. Я хотел бы добавить пару ключей к экземпляру ec2 для доступа по ssh

Я пытался использовать эти функции в форме boto3 (ec2, ecs)

  • create_cluster
  • run_task
  • register_container_instance
  • register_task_definition
  • run_instances

Мне удалось запустить экземплярс run_instances он работает отлично, но я хочу запустить экземпляр в моем кластере.Вот мой код:

    def run_instances():
        response = ec2.run_instances(
            BlockDeviceMappings=[
            {
                'DeviceName': '/dev/xvda',
                'Ebs': {
                     'DeleteOnTermination': True,
                     'VolumeSize': 8,
                     'VolumeType': 'gp2'
                },
            },
        ],
        ImageId='ami-06df494fbd695b854',
        InstanceType='m3.medium',
        MaxCount=1,
        MinCount=1,
        Monitoring={
            'Enabled': False
        })
        return response

На консоли ec2 есть работающий экземпляр, но он не отображается ни в одном кластере консоли ecs (я пробовал это с ami, оптимизированным для ecs, и собычный).

Я также попытался выполнить следующие шаги для установки и запуска моей системы в кластере безуспешно: https://github.com/spulec/moto/blob/master/tests/test_ecs/test_ecs_boto3.py

Не могли бы вы помочь мне выяснить, чего мне не хватает?Есть ли необходимость в других настройках помимо вызова этих функций SDK?

Спасибо!

1 Ответ

0 голосов
/ 22 сентября 2018

Вам нужно будет запустить экземпляр, который использует ECS Optimized AMI, поскольку на этих AMI предварительно установлен агент ECS, в противном случае вам нужно будет установить агент ECS самостоятельно и запечь пользовательский AMI.

По умолчанию ваш ECSоптимизированный экземпляр запускается в кластере по умолчанию, но вы можете указать альтернативное имя кластера в UserData свойстве run_instances function

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

Список доступных AMI ECS доступен здесь

...