AWS CloudFormation スタックを AWS::ECS::Service リソースに更新したら、UPDATE_IN_PROGRESS または UPDATE_ROLLBACK_IN_PROGRESS ステータスのまま動作しなくなりました。スタックを安定させ、サービスで新しいタスクを起動できるようにしたいと考えています。
簡単な説明
Amazon Elastic Container Service (Amazon ECS) サービスは、タスクの起動に失敗すると UPDATE_IN_PROGRESS または UPDATE_ROLLBACK_IN_PROGRESS ステータスのまま動作しなくなることがあります。
Amazon ECS サービスが新しいタスクの起動に失敗する最も一般的な理由には以下のようなものがあります。
- コンテナイメージの問題
- タスクを起動するために必要なリソースの不足
- ロードバランサーのヘルスチェックの失敗
- インスタンスの設定または Amazon ECS コンテナエージェントの問題
Amazon ECS サービスがタスクの起動に失敗すると、AWS CloudFormation は UPDATE_IN_PROGRESS ステータスのまま動作しなくなります。その場合、AWS CloudFormation は、数時間待機した後に以前の設定にロールバックします。そのロールバック中にもスタックの障害を発生させている問題が継続すると、スタックは UPDATE_ROLLBACK_IN_PROGRESS ステータスのまま動作しなくなります。最終的に、スタックは UPDATE_ROLLBACK_FAILED ステータスになります。
AWS CloudFormation スタックの安定化には、数時間かかる場合があります。より早くスタックを安定させるには、次の手順に従います。
重要: 次の解決方法は、AWS CloudFormation スタックを、タイムアウトを待つことなくすばやく安定化させることを意図しています。Amazon ECS サービスは AWS CloudFormation の既知の状態と同期しないため、この解決方法は、本稼働環境で使用することは意図されていません。Amazon ECS サービスと AWS CloudFormation スタックの間でリソースを同期させるには、スタックでエラーフリーの更新を実行する必要があります。
解決方法
Amazon ECS サービスの必要なタスクの数を変更します
- Amazon ECS コンソールを開きます。
- お客様のクラスターを選択します。
- サービスを選択し、次に [Update] (更新) をクリックします。
- [Number of tasks] (タスク数) を 0 に設定し、この設定を保存します。
Amazon ECS サービスが新しいタスクを起動できない理由を特定します
- Amazon ECS コンソールを開きます。
- お客様のクラスターを選択します。
- サービスを選択し、次に [Events] (イベント) を選択します。
注意: [Events] (イベント) セクションには、サービスが安定しなかった原因が表示されます。
- 特定された問題に基づいて解決方法を選びます。
タスクが Elastic Load Balancing (ELB) ヘルスチェックに失敗しました。
タスク定義に不可欠なコンテナが終了または停止しています。
コンテナインスタンスが必要な要件を満たしていないためタスクを配置できません。
「コンテナイメージをプルできません」というエラーが表示されます。
</ol