Как обновить версии образов ECS Tasks с помощью AWS CLI

Обновление версий образов ECS Tasks — не самая простая задача, если вы не заходите в веб-интерфейс AWS. Кроме того, не существует прямого кода для того, чтобы сделать это в AWS CLI. Поэтому я придумал следующий код, который поможет вам сделать это без особых усилий.

Единственными необходимыми условиями являются:

  • Машина с WSL2 (я тестировал только в Ubuntu), Linux или macOS.
  • Установите jq (sudo apt-get install jq).
  • Создайте файл .sh со следующим сценарием.
TASK_NAME=task_name
SERVICE_NAME=service_name
IMAGE_NAME=image_name
CLUSTER_NAME=cluster_name
REGION=region
VERSION=version
ACCOUNT_NUMBER=account_number

NEW_IMAGE=$ACCOUNT_NUMBER.dkr.ecr.$REGION.amazonaws.com/$IMAGE_NAME:$VERSION
TASK_DEFINITION=$(aws ecs describe-task-definition --task-definition "$TASK_NAME" --region "$REGION")
NEW_TASK_DEFINITION=$(echo $TASK_DEFINITION | jq --arg IMAGE "$NEW_IMAGE" '.taskDefinition | .containerDefinitions[0].image = $IMAGE | del(.taskDefinitionArn) | del(.revision) | del(.status) | del(.requiresAttributes) | del(.compatibilities) | del(.registeredAt) | del(.registeredBy)')
NEW_REVISION=$(aws ecs register-task-definition --region "$REGION" --cli-input-json "$NEW_TASK_DEFINITION")
NEW_REVISION_DATA=$(echo $NEW_REVISION | jq '.taskDefinition.revision')

NEW_SERVICE=$(aws ecs update-service --cluster $CLUSTER_NAME --service $SERVICE_NAME --task-definition $TASK_NAME --force-new-deployment)

echo "done"
echo "${TASK_NAME}, Revision: ${NEW_REVISION_DATA}"
Войдите в полноэкранный режим Выйдите из полноэкранного режима

После этого необходимо обновить переменные окружения:

  • TASK_NAME=имя_задачи
  • SERVICE_NAME=имя_службы
  • IMAGE_NAME=имя_изображения
  • CLUSTER_NAME=имя_кластера
  • РЕГИОН=регион
  • ВЕРСИЯ=версия
  • ACCOUNT_NUMBER=номер_аккаунта

А затем запустите .sh вот так, ./update_task.sh. И это все!

Следуйте за мной на:

LinkedIn YouTube Instagram Киберпророки Делимся своими историями

Оцените статью
Procodings.ru
Добавить комментарий