LoginSignup
14
5

More than 3 years have passed since last update.

ECSで実行中のサービス更新を試してみた

Last updated at Posted at 2019-11-04

はじめに

この記事はコンテナ勉強用として試したことまとめたものです。
今回はECSで実行中のサービス更新を試してみました。

「新しいデプロイの強制」設定を使う

Lambdaで一時的に起動数を増やして、古いタスクをソートして削除、起動数を戻す。といった方法でコンテナを入れ替えていましたが、ECSのサービス更新に「新しいデプロイの強制」というものがあったのでこちらを使用して新しいコンテナに入れ替えるようにできるのでは。ということで検証してみました。

ECSサービスを起動

  • 2つのタスクが正常に稼働しているのでこれらを新しいコンテナに入れ替える。
    タスク確認.png

  • 作成された時刻を確認しておく。
    タスク①確認.png
    タスク②確認.png

新しいデプロイの強制を実施

  • コンソール上から「新しいデプロイの強制」にチェックを入れて実施することも可能ですが、定期的に入れ替えて欲しいので簡単なLambdaを作って試してみました。
import json
import boto3
from botocore.exceptions import ClientError

def lambda_handler(event, context):

    try:
        client = boto3.client('ecs')
        service_update_result = client.update_service(
            cluster = 'test-ecs-cls',
            service = 'test-service',
            desiredCount = 2,
            forceNewDeployment=True
        )
        print(service_update_result)

    except ClientError as e:
        print(e)
  • タスクが増えた。
    デプロイ強制後タスク確認.png

  • 一時的にタスク数が倍になった。
    デプロイ強制後タスク確認2.png

コンテナ入れ替わり確認

  • 起動数が2つなのでタスク数が4つから2つに減りました。
    入れ替え後タスク確認.png

  • 残ったタスクの作成時刻が新しいものになっているか確認する。
    入れ替え後タスク①確認.png
    入れ替え後タスク②確認.png

  • 古いタスクがちゃんと停止している。
    停止タスク①確認.png
    停止タスク②確認.png

まとめ

  • Lambdaでタスク数をカウントして処理するよりも「新しいデプロイの強制」機能を使うことで簡単にコンテナ入れ替えを行うことができる。
  • SSMと連携して自動で入れ替え機能を実装してみたい。

参考

14
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
5