概要
AWS Workshop Studioのサンドボックス環境でStep Functionsワークショップ(sfn-workshop)を進めようとしたところ、CDKでデプロイされる親スタックがROLLBACK_COMPLETE状態で作成失敗していた。原因調査から復旧までの手順を記録する。
環境
- AWS Workshop Studio(参加者ロール:
WSParticipantRole/Participant) - リージョン: us-east-1
- 対象スタック
-
sfn-workshop(Step Functions Workshop Parent Stack、CDK製、ネストスタック多数) -
CDKToolkit(CDK Bootstrap用、CREATE_COMPLETE) -
code-editor(ブラウザ版VS Code環境、CREATE_COMPLETE)
-
症状
CloudFormationコンソールのスタック一覧で、sfn-workshopのステータスがROLLBACK_COMPLETEになっていた。CDKアプリのため、内部にはApigwCwConstructApiGateway、NestedWorkflowNestedStack、SyncJobNestedStack、StateMachineRoleConstruct、ParallelStateNestedStackなど多数のネストスタックが存在する構成。
診断
1. ROLLBACK_COMPLETE状態の性質を確認
CloudFormationの仕様として、ROLLBACK_COMPLETE状態のスタックは直接更新(再デプロイ)できない。この状態から取れる操作は削除のみで、更新やスタックアクションによる再試行は選択肢にない。
2. デプロイタイムラインでエラー箇所を特定
スタック詳細画面の「最新のデプロイタイムライン」で、失敗したリソースを時系列で確認した。タイムライン上で赤色(失敗)になっていたのは以下のリソースだった。
- 失敗日時:
21:25:46 - 障害理由:
Embedded stack arn:aws:cloudformation:us-east-1:911167911122:stack/sfn-workshop-AgenticDocTriageNestedStackAgenticDocTriageNestedStackResource5073FC2B-1UGTZOQE99AG/fb44d740-98a3-11f1-ac08-12ac9eff3c35 was not successfully created: null
この障害理由は「ネストスタックの作成に失敗した」という事実のみを示しており、具体的な原因(null)は含まれていなかった。CDKで生成されるスタックはネストが多段になりやすく、親スタックのイベントだけでは根本原因が分からないケースが典型的にある。

3. 根本原因の追跡方針
このケースでは、CloudFormationコンソールの「デプロイタイムライン」機能に「根本原因を表示」ボタンが用意されていた。通常は以下のいずれかで追跡する。
- 「根本原因を表示」ボタンでCloudFormation側の自動追跡を使う
- 手動でネストスタック(
AgenticDocTriageNestedStackなど)を検索し、そのスタック自身のイベントタブを開いて、さらにCREATE_FAILEDの理由を確認する。理由が再度「Embedded stack ... null」であれば、もう一段深いネストスタックを同様に辿る
対処
ネストスタックの詳細原因を深追いする前に、実務上の判断として次の対応を優先した。
-
ROLLBACK_COMPLETE状態のsfn-workshopスタックを削除 - ワークショップ用に用意された
code-editor環境(ブラウザ版VS Code)のターミナルから、CDKデプロイコマンドを再実行
結果として、コードエディタからの再デプロイでスタック作成は成功した。
原因の推定
コンソールから直接スタックを再作成するのではなく、元々ワークショップが想定しているデプロイ経路(code-editor環境からのcdk deploy)を使って再実行したところ成功したことから、以下が有力な原因と考えられる。
- IAMロールやポリシーの反映遅延(結果整合性)による一過性の失敗。CDKのネストスタックはリソース間の依存が多く、IAMロールが直前に作成された場合、それを参照する後続リソースの作成が一時的に失敗することがある
- コンソールでの直接操作ではなく、ワークショップが用意した実行環境・パラメータ経由でデプロイすることで、CDK Context等の整合性が保たれた
いずれも単発の再試行で解消する性質の問題であり、テンプレート自体の恒久的な不備ではなかったと判断できる。
まとめ
-
ROLLBACK_COMPLETE状態のスタックは更新不可。復旧の第一手は削除であり、原因調査より先に確定させてよい判断 - CDK製の多段ネストスタックでは、親スタックのイベントに具体的なエラー理由が出ないことがある(
null表記)。原因追跡には子スタックへの手動ドリルダウン、またはCloudFormationの「根本原因を表示」機能が有効 - ワークショップ環境では、コンソールでの再作成よりも、想定されたデプロイ経路(用意されたエディタ環境・CLI)からの再実行を先に試す方が復旧が早いケースがある
- 今回の事象は、IAMロール反映遅延などの一過性要因による失敗であり、再デプロイのみで解消した
