[小ネタ] ECS で Windows コンテナを起動させ続ける方法

Linux コンテナ同様に無限ループ処理をタスク定義のcommandに指定します。
2023.12.24

この記事はアノテーション株式会社 AWS Technical Support Advent Calendar 2023 | Advent Calendar 2023 - Qiita 24日目の記事です。

アノテーション・テクニカルサポートチームの hato です。
サポート業務で Windows コンテナを起動し ECS Exec でコマンド操作を行うことがあります。

単純なベースイメージだとコンテナがすぐに終了するため、Linux コンテナの場合は次のような無限ループを設定する場合があります。

Linuxのコマンド例

/bin/sh,-c,while true; do sleep 1; done

Windows コンテナの場合は、コマンドが違うのため少し調べてみました。

方法その1、コマンドプロンプトで ping

コマンドプロンプト(cmd.exe)で Ping コマンドを localhost に実行し続ける方法です。

cmd,/s,/c,ping -t localhost

JSON の場合は次のように設定します。

"command": [
    "cmd",
    "/s",
    "/c",
    "ping -t localhost"
],

方法その2、PowerShellで Start-Sleep

PowerShellで Start-Sleep コマンドを無限ループに実行し続ける方法です。
Linux コンテナのアプローチに近いと思います。

powershell,-Command,while ($true) {Start-Sleep -Seconds 1}

JSON の場合は次のように設定します。

"command": [
    "powershell",
    "-Command",
    "while ($true) {Start-Sleep -Seconds 1}"
],

参考資料

/bin/sh -c "while true; do echo hello world; sleep 1; done"

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社WEBサイトをご覧ください。