AWS CloudFormation スタックが UPDATE_ROLLBACK_FAILED 状態で停止しています。
簡単な説明
CloudFormation スタックが UPDATE_ROLLBACK_FAILED 状態の場合は、ContinueUpdateRollback アクションを実行してスタックを回復するか、DeleteStack アクションを実行してスタックを削除します。ロールバックを再試行するには、まずエラーをすべて解決してから、ContinueUpdateRollback を実行してロールバック操作を実行します。
注: このエラーを解決するには、必要に応じて、上限数を引き上げたりアクセス許可やその他の設定を変更してください。
更新がロールバックできない原因となる代表的なエラーについては、「更新のロールバックの失敗」を参照してください。
ロールバックを再試行してもエラーが解決しない場合もあります。このような場合は、ContinueUpdateRollback アクションの実行時に、エラーが発生したリソースをスキップする必要があります。UPDATE_ROLLBACK_COMPLETE 状態のスタックは、いつもどおりに更新できます。
解決策
スタックを正常状態に戻すには、CloudFormation コンソールまたは AWS コマンドラインインターフェイス (AWS CLI) を使用します。
**注:**AWS CLI のコマンドの実行時にエラーが発生する場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。
CloudFormation コンソールを使用する場合
ロールバックできなかったリソースをスキップしてスタックをロールバックするには、次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [スタック] を選択します。
- [スタック名] 列から、UPDATE_ROLLBACK_FAILED ステータスになっているスタックを選択します。
- [スタックアクション] を選択し、[更新ロールバックを続ける] を選択します。
- [更新ロールバックを続ける] ダイアログボックスで、[高度なトラブルシューティング] を展開します。
- [スキップするリソース - オプション] セクションで、スキップするリソースを選択します。
- [更新ロールバックを続ける] を選択します。
リソースをスキップしないでスタックをロールバックするには、次の手順を実行します。
- CloudFormation コンソールを開きます。
- ナビゲーションペインで [スタック] を選択します。
- [スタック名] 列から、UPDATE_ROLLBACK_FAILED ステータスになっているスタックを選択します。
- [スタックアクション] を選択し、[更新ロールバックを続ける] を選択します。
AWS CLI を使用する場合
AWS CLI でスタックをロールバックするには、continue-update-rollback コマンドを実行します。
$ aws cloudformation continue-update-rollback --stack-name awsstackname123 --resources-to-skip awsfaultyresource123
注: awsstackname123 をお使いのスタックの名前に置き換えます。awsfaultyresource123 をお使いのリソースの論理 ID に置き換えます。
指定したリソースのステータスが CloudFormation によって UPDATE_COMPLETE に設定されたことを確認してください。この後も、CloudFormation は引き続きスタックをロールバックします。ロールバックが完了すると、スキップされたリソースの状態は、スタックテンプレート内のリソースの状態と一致しなくなります。
別のスタックの更新を実行する前に、現在のスタックとリソースを相互に一致させるために更新する必要があります。これを行わないと、以降のスタックの更新が失敗し、スタックが回復 (復元) 不能になる可能性があります。
ネストされたスタックを正常状態にロールバックする方法の詳細については、「ResourcesToSkip を使用して、ネストされたスタック階層を復元する」を参照してください。