Amazon Elastic Container Service (Amazon ECS) タスクがコンテナヘルスチェックに合格できません。
簡単な説明
タスク内の Amazon ECS コンテナでヘルスチェックを使用しており、サービスがそのテストに合格できない場合、次のエラーが発生します。
(サービス AWS-Service) (タスク ff3e71a4-d7e5-428b-9232-2345657889) は、コンテナヘルスチェックに合格できませんでした。
解決策
注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
コンテナをローカルでテストし、コンテナのヘルスチェックに合格することを確認する
コンテナインスタンスを Amazon ECS にプロビジョニングする前に、そのコンテナが期待通りに動作することを確認する必要があります。Docker Docs のウェブサイトにある HEALTHCHECK を使用してコンテナをテストします。コンテナが Dockerfile のヘルスチェックに合格することを確認します。次に、タスク定義でヘルスチェックの設定を指定し、Amazon ECS コンテナエージェントがヘルスチェックを監視、レポートできるようにします。
注: Docker ヘルスチェックがコンテナイメージに埋め込まれているがコンテナ定義で指定されていない場合、Amazon ECS ではモニタリングされません。コンテナ定義で指定されているヘルスチェックのパラメータは、コンテナイメージ内に存在する Docker ヘルスチェックを上書きします。
Amazon ECS タスクに正しい構文を使用していることを確認する
コンテナに渡すコマンドが正確であり、コマンドで正しい構文を使用していることを確認します。ヘルスチェックコマンドを二重引用符で区切らないでください (例: ["CMD-SHELL", "healthcheck.sh", "||", "exit 1"])。代わりに、次のコマンド構文を使用します。
["CMD-SHELL", "healthcheck.sh || exit 1"]
コンテナが起動するのに十分な時間を確保する
コンテナの起動に時間がかかる場合、そのコンテナはヘルスチェックに合格できない可能性があります。構成のニーズに合わせて、高度なコンテナ定義パラメータで startPeriod を設定します。
実行時間の長いタスクに関するアプリケーションログを確認する
実行時間の長いコンテナがコンテナヘルスチェックに合格できなかった場合は、アプリケーションログを確認します。タスクが awslogs ログドライバーを使用している場合は、Amazon CloudWatch でアプリケーションログを確認します。
注: AWS Fargate はマネージドサービスであるため、基盤インフラストラクチャにアクセスすることはできません。Fargate に関するこの問題をトラブルシューティングするには、Amazon Elastic Compute Cloud (Amazon EC2) で Amazon ECS タスクを起動します。次に、SSH を使用して Amazon EC2 インスタンスに接続します。ECS Exec を使用して Amazon ECS コンテナを直接操作することもできます。
関連情報
Amazon EC2 起動タイプを使用する Amazon ECS タスクで、Application Load Balancer のヘルスチェックに合格する方法を教えてください