Запустите экземпляр контейнера ECS для кластеризации и выполните определение задачи с использованием пользовательских данных. - PullRequest
0 голосов
/ 01 мая 2018

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

Когда задача будет выполнена, экземпляр будет остановлен.

Я использую руководство по документам AWS для запуска задачи при запуске контейнера. Ниже пользовательских данных (параметры кластера и определения задачи опущены)

Content-Type: multipart/mixed; boundary="==BOUNDARY=="
MIME-Version: 1.0

--==BOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
# Specify the cluster that the container instance should register into
cluster=my_cluster

# Write the cluster configuration variable to the ecs.config file
# (add any other configuration variables here also)
echo ECS_CLUSTER=$cluster >> /etc/ecs/ecs.config

# Install the AWS CLI and the jq JSON parser
yum install -y aws-cli jq

--==BOUNDARY==
Content-Type: text/upstart-job; charset="us-ascii"

#upstart-job
description "Amazon EC2 Container Service (start task on instance boot)"
author "Amazon Web Services"
start on started ecs

script
    exec 2>>/var/log/ecs/ecs-start-task.log
    set -x
    until curl -s http://localhost:51678/v1/metadata
    do
        sleep 1
    done

    # Grab the container instance ARN and AWS region from instance metadata
    instance_arn=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F/ '{print $NF}' )
    cluster=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .Cluster' | awk -F/ '{print $NF}' )
    region=$(curl -s http://localhost:51678/v1/metadata | jq -r '. | .ContainerInstanceArn' | awk -F: '{print $4}')

    # Specify the task definition to run at launch
    task_definition=my_task_def

    # Run the AWS CLI start-task command to start your task on this container instance
    aws ecs start-task --cluster $cluster --task-definition $task_definition --container-instances $instance_arn --started-by $instance_arn --region $region
end script
--==BOUNDARY==--

Когда экземпляр создается, он запускается в кластер по умолчанию, а не тот, который я указал в пользовательских данных, и никакие задачи не запускаются.

Я разобрал вышеприведенный скрипт, чтобы выяснить, где он не работает, но мне не повезло.

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 01 мая 2018

Из документации AWS .

Настройте экземпляр контейнера Amazon ECS с пользовательскими данными, такими как переменные среды агента из Amazon ECS Container Agent Конфигурация. Скрипты пользовательских данных Amazon EC2 выполняются только один время первого запуска экземпляра.

По умолчанию ваш экземпляр контейнера запускается в ваш по умолчанию кластер. Чтобы запустить кластер не по умолчанию, выберите Advanced Подробный список. Затем вставьте следующий скрипт в данные пользователя поле, заменяя your_cluster_name именем вашего кластера.

Итак, чтобы вы могли добавить этот экземпляр EC2 в ваш кластер ECS, вы должны изменить эту переменную на имя вашего кластера:

# Specify the cluster that the container instance should register into
cluster=your_cluster_name

Измените your_cluster_name на любое имя вашего кластера.

...