觀點 · 資訊分享
CloudFormation 新增強制回滾:堆疊更新失敗又回不去,現在加一個選項就能救
AWS 在 10 月 22 日讓 CloudFormation 的繼續回滾多了強制選項。卡在回滾失敗狀態的堆疊,不必再逐一列出資源來跳過,一個指令就能回到可以再部署的狀態,所有 Region 都能用、不另外收費。
- 發布
- 2026-10-22
- 篇幅
- 約 4 分鐘 · 2,021 字
- 結構
- 8 節 + 4 題常見問題
- 標籤

一句話看懂:AWS CloudFormation 新增「強制回滾」,更新失敗又回不去的堆疊,現在加一個選項就能一次救回。

先用白話講:CloudFormation 的「回滾」是什麼?
想像你在整理一間辦公室:先照著設計圖搬家具(更新),搬到一半發現不對,只好照原樣搬回去(回滾)。可是搬回去的時候才發現,有一張桌子早就被別人拿走了,找不到就搬不回,整個工作卡在半路,什麼都不能再動。
CloudFormation 是 AWS 用「設計圖」(一份模板檔)自動建立伺服器、資料庫等雲端資源的服務,一整組資源叫做堆疊(Stack)。更新堆疊失敗時,它會自動回滾到上一個正常的狀態;如果連回滾也失敗,堆疊就會停在 UPDATE_ROLLBACK_FAILED。這時堆疊不能再更新,只能先把回滾做完。
發生什麼事
AWS 在 10 月 22 日宣布,CloudFormation 的更新回滾新增強制回滾(force rollback):
- 有些資源無法自動回滾時,現在可以一個操作完成整個回滾,把堆疊帶回可以再部署的狀態
- 從 AWS CLI、SDK、AWS CDK 到 AI 代理都能使用
- 仍然需要人處理的資源(例如在 CloudFormation 之外被改動過的),會被記錄下來,讓你在下次部署前檢查
- 所有 Region 都能用,不另外收費
以前和現在差在哪
| 以前 | 現在 | |
|---|---|---|
| 怎麼救 | 自己找出每個卡住的資源,把邏輯 ID 逐一列出來,用 --resources-to-skip 跳過 |
加上 --force-rollback,讓 CloudFormation 自己跳過 |
| 巢狀堆疊 | 要用「巢狀堆疊名稱.資源 ID」的格式逐一指定 | 巢狀堆疊裡的資源也一併處理 |
| 做完之後 | 自己記得哪些被跳過 | 被跳過的資源會記下原因,方便回頭查 |
給開發者的技術細節
aws cloudformation continue-update-rollback --stack-name MyStack --force-rollback
- 不能和
--resources-to-skip放在同一個請求;只想跳過特定資源,就只用--resources-to-skip - CloudFormation 只會跳過「回滾失敗」而變成
UPDATE_FAILED的資源;更新階段就失敗的資源不會被跳過 - 被跳過的資源狀態會變成
UPDATE_COMPLETE,原因欄位寫著Resource skipped during UpdateRollback - 做完之後,被跳過的資源和模板內容可能不一致。AWS 建議下次部署前先建立「感知漂移(drift)的變更集」檢查差異;漂移偵測時這些資源會顯示為
NOT_CHECKED,可以對單一資源執行DetectStackResourceDrift確認
什麼時候該用?
- 能修好原因就先修好:官方文件寫,多數情況要先排除造成回滾失敗的錯誤;像操作逾時這類暫時性問題,直接繼續回滾就行
- 修不好才強制:例如官方文件舉的例子,資料庫在 CloudFormation 之外被刪掉,回滾時找不到它而卡住
- 不要當成預設選項:文件警告,跳過的資源和模板不一致,之後的更新可能再失敗,嚴重時堆疊會無法救回
我的看法
用 CloudFormation 或 CDK 管基礎設施的人,多半都遇過堆疊卡在回滾失敗的狀態:明明只想改一個小設定,結果整個堆疊被鎖住,查資源、列 ID、重試,半天就過去了。這次把「找出所有卡住的資源」這件事交給 CloudFormation 自己做,確實省下最煩的那一段。
不過我會把它當成最後手段,而不是方便鍵。強制跳過的資源等於「模板說一套、現實是另一套」,下一次部署如果沒先對齊,只是把問題往後延。比較安全的做法,是強制回滾之後馬上看漂移結果,確定每個被跳過的資源現在長怎樣,再決定要修模板還是修資源。另外,如果平常有人會手動去改雲端主控台的設定,這個功能提醒的其實是一件更根本的事:資源盡量只透過模板改。
名詞小辭典
- 基礎設施即程式碼(IaC):用程式或模板檔描述伺服器、網路、資料庫,讓雲端資源能像程式碼一樣被版本控管、重複建立。
- 堆疊(Stack):CloudFormation 裡由同一份模板建立的一整組雲端資源,更新、刪除都以堆疊為單位。
- 漂移(Drift):雲端上資源的實際設定,和模板描述的內容不一樣,通常是有人在模板之外手動改過。
- 變更集(Change Set):正式更新前先預覽「會改哪些東西」的清單,確認沒問題再執行。