ECS コンテナインスタンスを停止すると自動起動する挙動を回避するためには

2021.07.14

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

困っていた内容

コスト削減のため ECS コンテナインスタンス(EC2)を停止しましたが、いつの間にか「終了状態」になり、新しいコンテナインスタンスが起動しました。 コンテナインスタンスでは通常の EC2 のように終業時に停止して、始業時に開始するといったコスト削減はできないのでしょうか。

どう対応すればいいの?

Auto Scaling を利用した自動終了・開始をお試しください。

ECS クラスターを作成する際に「EC2 Linux + ネットワーキング」を選択すると、自動的に Auto Scaling も作成されます。Auto Scaling によりコンテナインスタンスの起動数が自動的に制御されるため、EC2 を直接停止しても、自動的に終了状態になり、新しいインスタンスが作成されます。

そのため、コンテナインスタンスを特定時間だけ起動したい場合は、Auto Scaling の機能を使用してください。Auto Scaling は、スケジュール機能を備えているため、あらかじめ設定した時間になると自動的にインスタンスを終了し、ある時間になったら自動的に開始する。といった処理を行うことができます。

やってみた

  • 設定内容
    • 平日(月〜金): 9:00に一台起動
    • 平日(月〜金):17:00に停止

Amazon EC2 コンソールを開き、「Auto Scaling Groups」をクリック。クラスター名が含まれる Auto Scaling グループを選択

「自動スケーリング」を選択し、「予定されたアクションを作成」をクリック

次の値を指定して「作成」を選択します。

  • 名前:任意の値
  • 希望する容量:1
  • 反復:Cron
    • 0 9 * * 1-5
  • Time zone:Japan

同様に、次の値を指定して「作成」を選択します。

  • 名前:任意の値
  • 希望する容量:0
  • 反復:Cron
    • 0 17 * * 1-5
  • Time zone:Japan

次のように2つの設定が登録されたことを確認します。

実際の挙動

平日(月〜金)の 17:00 を過ぎると、自動的にインスタンスが停止されます。

平日(月〜金)の 9:00 になると、自動的にインスタンスが開始され、コンテナも起動します。

参考資料