AWS CloudFormation スタックが CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS、UPDATE_ROLLBACK_IN_PROGRESS 状態か DELETE_IN_PROGRESS 状態でスタックしています。
簡単な説明
ほとんどの場合、CloudFormation スタックは、タイムアウトするまで待つ必要があります。タイムアウトの長さはさまざまで、CloudFormation が目的の状態に達するまで待機する個々のリソースの安定化要件によって変化します。
スタックのタイムアウトを制御して、CloudFormation が待機する時間は、ロールバックトリガーで制御できます。ロールバックトリガーの詳細については「Use AWS CloudFormation stack termination protection and rollback triggers to maintain infrastructure availability」を参照してください。
解決策
スタックしているリソースを特定する
1. CloudFormation コンソールを開きます。
2.ナビゲーションペインで [スタック] を選択し、スタック状態のスタックを選択します。
3. [リソース] タブを選択します。
4. [リソース] セクションの [ステータス] 列を参照します。作成、更新、削除のプロセスで停止しているリソースをすべて検索します。
注: これらのリソースは、CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 状態か DELETE_IN_PROGRESS 状態にある可能性があります。
5. AWS マネジメントコンソールで、リソースに対応するサービスのリソースを調べます。
**注:**このコンソールは、スタックしているリソースによって異なります。たとえば、Amazon Elastic Container Service (Amazon ECS) サービスが作成状態でスタックしている場合は、Amazon ECS コンソールでそのリソースを確認してください。
AWS CloudTrail のログを確認する
リソースの対応するコンソールにエラーが表示されない場合は、AWS CloudTrail ログを使用して問題のトラブルシューティングを行います。CloudTrail ログの表示方法については、「CloudTrail イベント履歴の操作」を参照してください。
1. CloudFormation コンソールを開きます。
2.ナビゲーションペインで [スタック] を選択し、スタック状態のスタックを選択します。
3. [リソース] タブを選択します。
4. [リソース] セクションの [ステータス] 列を参照します。作成、更新、削除のプロセスで停止しているリソースをすべて検索します。
注: これらのリソースは、CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS 状態か DELETE_IN_PROGRESS 状態にある可能性があります。
5. [イベント] タブを選択して、CloudFormation がスタックしたリソースの作成を初期化したときのタイムスタンプを書き留めます。
6. CloudTrail コンソールを開きます。
7. ナビゲーションペインで、[イベント履歴] を選択します。
8. [時間範囲] に、手順 5 で記録した開始時刻 ([From]) のタイムスタンプの日時を入力します。終了時刻 ([To]) には、開始時刻から 5 分経過した日時を入力します。
**注:**たとえば、CloudFormation が 2020 年 1 月 1 日の午前 9 時にスタックリソースの作成を初期化したとします。この場合、開始時刻として、2020-01-01 の 09:00 AM と入力し、終了時刻として、2020-01-01 の 9:05 AM と入力します。
9. [適用] を選択します。
10. 返されたイベントのリストで、自分のリソースの create API 呼び出しまたは update API 呼び出しに関連する API 呼び出しを探します。たとえば、Amazon Elastic Block Store (Amazon EBS) のボリューム更新用の ModifyVolume を検索できます。
**ヒント:**API 呼び出しが CloudTrail ログに表示されるまで数分待ちます。API 呼び出しは、常にログにすぐに表示されるとは限りません。
タイムアウトをバイパスする
スタックがスタックする理由は複数あります。このため、解決策はスタックしているリソースによって異なります。場合によっては、タイムアウトをバイパスすれば、スタックのステータスをすばやく解決できます。たとえば、カスタムリソースと Amazon ECS サービスのタイムアウトをバイパスできる場合があります。詳細については、以下を参照してください。
スタックが CREATE_IN_PROGRESS または UPDATE_IN_PROGRESS 状態でスタックしている場合は、スタックオペレーションを使用して進行を停止できます。
**注:**問題の根本原因を理解し、今後のデプロイで回避するには、「CloudFormationのトラブルシューティング」ガイドを参照してください。