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 (AWS CloudFormation スタック終了保護とロールバックトリガーを使用してインフラストラクチャの可用性を維持する)」を参照してください。
解決策
スタックしているリソースを特定する
次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [スタック] をクリックし、スタック状態のスタックを選択します。
- [リソース] タブを選択します。
- [リソース] セクションの [ステータス] 列を参照します。CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS、DELETE_IN_PROGRESS のいずれかの状態でスタックしているリソースを検索します。
- AWS マネジメントコンソールでリソースに対応するサービスに関するリソースを調査します。
注: たとえば、Amazon Elastic Container Service (Amazon ECS) サービスが作成状態のままになっている場合は、Amazon ECS コンソールでそのリソースを確認してください。
リソースの対応するコンソールにエラーが表示されない場合は、AWS CloudTrail ログを使用して問題のトラブルシューティングを行います。CloudTrail ログの詳細については、「CloudTrail イベント履歴の操作」を参照してください。
CloudTrail ログを確認する
次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [スタック] をクリックし、スタック状態のスタックを選択します。
- [リソース] タブを選択します。
- [リソース] セクションの [ステータス] 列を参照します。CREATE_IN_PROGRESS、UPDATE_IN_PROGRESS、DELETE_IN_PROGRESS のいずれかの状態でスタックしているリソースを検索します。
- [イベント] タブを選択して、CloudFormation がスタックしたリソースの作成を初期化したときのタイムスタンプを書き留めます。
- CloudTrail コンソールを開きます。
- ナビゲーションペインで [イベント履歴] を選択します。
- [時間範囲] に、手順 5 で記録した開始時刻 ([開始]) のタイムスタンプの日時を入力します。終了時刻 ([終了]) には、開始時刻から 5 分経過した日時を入力します。
注: 例えば、CloudFormation が 2020 年 1 月 1 日の午前 9 時にスタックリソースの作成を初期化した場合、開始時間として 2020 年 1 月 1 日の午前 9 時、終了時間として 2020 年 1 月 1 日の午前 9 時 5 分を入力します。
- [適用] を選択します。
- 返されたイベントのリストで、自分のリソースの create API 呼び出しまたは update API 呼び出しに関連する API 呼び出しを探します。たとえば、Amazon Elastic Block Store (Amazon EBS) のボリューム更新用の ModifyVolume を検索できます。
**ヒント:**API 呼び出しが CloudTrail ログに表示されるまで数分待ちます。API 呼び出しは、常にログにすぐに表示されるとは限りません。
タイムアウトをバイパスする
タイムアウトをバイパスしてスタックのステータスを解決できる場合があります。詳細については、「AWS CloudFormation で Amazon ECS サービスの安定化失敗を防ぐ方法を教えてください」、および「CloudFormation でステータスが DELETE_FAILED または DELETE_IN_PROGRESS で止まっている Lambda ベースのカスタムリソースを削除する方法を教えてください」を参照してください。
スタックが CREATE_IN_PROGRESS または UPDATE_IN_PROGRESS 状態のままになっている場合は、次のスタックオペレーションを使用して進行を停止できます。
注: 問題の根本原因を理解するには、「CloudFormation のトラブルシューティング」を参照してください。