Скрипт ECS sh - служба обновления

У меня есть сервис на ECS, у которого одна задача с 2 контейнерами. 2 контейнера имеют одно и то же изображение, но разные точки входа.

Я пытаюсь настроить конвейер, который после тестов принимает образ, помещенный в реестр, и обновляет службу в ECS.

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

Определение задачи:

register_definition() {
    TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition ${ECS_TASK_DEFINITION} | jq '.taskDefinition')
    current_revision=$(echo ${TASK_DEFINITION} | jq '.taskDefinitionArn')
    echo "Current revision: ${current_revision}"
    extra_keys = ".compatibilities, .status, .taskDefinition, .revision, .requiresAttributes, .taskDefinitionArn"
    echo "Deleting extra keys... ${extra_keys}"
    TASK_DEFINITION=$(echo ${TASK_DEFINITION} | jq "del(${extra_keys})")
    prev_image=$(echo ${TASK_DEFINITION} | jq ".containerDefinitions[0].image")
    echo "Replacing ${prev_image} with ${IMAGE}"
    UPDATED_TASK_DEFINITION=$(echo ${TASK_DEFINITION} | jq ".containerDefinitions[0].image = \"${IMAGE}\"")
    new_revision=$(aws ecs register-task-definition --cli-input-json "${UPDATED_TASK_DEFINITION}")
    new_revision_arn=$(echo ${new_revision} | jq '.taskDefinition.taskDefinitionArn')
    export NEW_VERSION=$(echo ${new_revision} | jq '.taskDefinition.revision')
    echo "New revision ${NEW_VERSION} created"
}

Развертывание в ecs:

deploy(){
    echo "Update service task revision"
    aws ecs update-service --cluster "${ECS_CLUSTER_NAME}" --service "${ECS_SERVICE_NAME}" --task-definition "${ECS_TASK_DEFINITION}:${NEW_VERSION}"

Любая помощь очень ценится.

Спасибо, что поделились своим сценарием здесь! Мне очень помог!

Mark Gaensicke 09.11.2021 16:01
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
1
1
503
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я нашел ответ после некоторых проб и ошибок. Так что, если у кого-то возникнет такая же проблема, вот решение.

prev_image=$(echo ${TASK_DEFINITION} | jq ".containerDefinitions[0].image | jq ".containerDefinitions[1].image")

Нужен только для получения изображения в другом контейнере.

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