1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

UPDATE_ROLLBACK_FAILEDに陥ったCloudFormationスタックへの対処手順

Last updated at Posted at 2024-04-26

Serverless Frameworkを用いてAWSにデプロイ・運用していたサービスについて久々に更新を掛けたところデプロイに使用していたIAMユーザーが必要なアクションの権限を持っていなかったことが原因でUPDATE_ROLLBACK_FAILEDに陥ってしまいました。:cry:
このときの対応方針について調査、修正したときのメモになります。

1. エラーの原因を調査

image.png

  1. まずはServerless Frameworkによって呼び出されるCloudFormationの更新処理(UpdateStack)が何由来で失敗に至ったかを調べるのにAWSのマネジメントコンソールにアクセス
  2. CloudFormationのスタック一覧から該当のスタックを選択
  3. イベントタブのログをさかのぼりエラー内容(状況の理由)を確認
    • 「根本原因を検出」というボタンを押すと直近のイベントログのうち一番古いエラーにジャンプできる
    • 最新のステータスがエラー状態のときのみ押下可能かも

今回はデプロイに使用しているIAMユーザーに必要なアクションの権限が不足していました。
エラーによってはServerless Frameworkのデプロイを行っている側のログにも同じ内容が出ることもあるかも。

2. エラーの原因を解決しロールバックを再実行

参考サイト内の情報によるとUPDATE_ROLLBACK_FAILED状態に陥った状況で取れる対応は ContinueUpdateRollback または DeleteStack のオペレーションのみ とのこと。

DeleteStackは行えないのでまずはロールバックを完了させることにしました

  1. まずはエラーの原因について解決(IAMユーザーのポリシーに必要なアクションを追加)
  2. CloudFormationのスタック詳細画面で「スタックアクション > 更新ロールバックを続ける」を選択
  3. ステータスがUPDATE_ROLLBACK_COMPLETEになれば正常にロールバックできたといえる?
    • ×アイコン出てるけどこれが正常な「更新ロールバックを完了させた状態」のステータスだと思います

image.png


ちなみにUPDATE_ROLLBACK_FAILED状態に陥ったあと、ロールバックを完了させない状態のまま再度Serverless Frameworkからの再度のデプロイ操作を行ったところ以下のようなエラーが出ました。

$ npx serverless deploy --verbose
~~~いろいろ~~~
Error:
Stack:arn:aws:cloudformation:ap-northeast-1:@@@@@@@@@@@@:stack/@@@@@@@@@@@@@@/@@@@@@@@@@@@@@@@@@@@@@@@@@ is in UPDATE_ROLLBACK_FAILED state and can not be updated.

3. 再度デプロイ

最新のステータスはUPDATE_ROLLBACK_COMPLETEのためスタックのステータスは赤い状態ですが、再度のデプロイ操作が可能となりました。

$ npx serverless deploy --verbose
~~~いろいろ~~~
✔ Service deployed to stack @@@@@@@@@@@@@@@@
~~~いろいろ~~~

エラーの先にまた別のエラーが隠れていることもあり、実際には何度かロールバックと再デプロイをやりなおす必要があることも

参考サイト

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?