🖥

AWS ECS へのデプロイでコンテナのヘルスチェック ( curl ) が失敗し続ける

2023/09/01に公開

問題

Terraformでいうとこんなタスク定義
単純に curl しているだけなのだが何故か失敗し続ける

  "healthCheck": {
    "command": [
      "CMD-SHELL",
      "curl -f http://127.0.0.1:80/ || exit 1"
    ],
  }

解決

docker container に curl がインストールされていないのが原因だった
Dockerfile で インストールするようにしたら成功するようになった

コンテナのヘルスチェックはコンテナ本体から実行されるようだ

あとから分かってみれば自明の理なのだがしばらく気づかなかった

まずはlocalでdocker containerに接続して、ヘルスチェックそのままのコマンドを実行して試すと良いようだ

curl -f http://127.0.0.1:80/ || exit 1

参考

解決方法
Amazon ECS のコンテナヘルスチェックの失敗をトラブルシューティングするには、以下のヒントを試してください。

Amazon ECS にプロビジョニングする前に、コンテナをローカルでテストして、コンテナヘルスチェックに合格することを確認します。
コンテナに渡すコマンドが正しく、Amazon ECS タスクに正しい構文を使用していることを確認します。

https://repost.aws/ja/knowledge-center/ecs-task-container-health-check-failures

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2023-04-05

Discussion