本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
繼續復原更新
有時候,當 CloudFormation 嘗試復原堆疊更新時,就無法復原更新程序期間所做的所有變更。這稱為 UPDATE_ROLLBACK_FAILED
狀態。例如,您可能有一個堆疊開始回復到在 外部刪除的舊資料庫執行個體 CloudFormation。因為 CloudFormation 不知道資料庫已遭刪除,它會假設資料庫執行個體仍然存在,並嘗試轉返回該資料庫執行個體,造成更新轉返失敗。
UPDATE_ROLLBACK_FAILED
處於 狀態的堆疊無法更新,但可以復原至工作狀態 (UPDATE_ROLLBACK_COMPLETE
)。將堆疊還原至其原始設定後,您可以嘗試再次更新。
在大多數情況下,您必須修正造成更新復原失敗的錯誤,才能繼續復原您的堆疊。在其他情況下,您可以繼續復原更新,而無須進行任何變更 (例如:當堆疊操作逾時時)。
注意
若您使用巢狀堆疊,復原父系堆疊也會嘗試復原所有子堆疊。
繼續復原更新 (主控台)
登入 AWS Management Console 並在 https://console.aws.amazon.com/cloudformation
開啟 AWS CloudFormation 主控台。 -
在畫面頂端的導覽列上,選擇 AWS 區域 堆疊所在的 。
-
在堆疊頁面上,選擇您要更新的堆疊,選擇堆疊動作,然後選擇繼續更新復原。
如果 中的任何解決方案都故障診斷錯誤無法運作,您可以使用進階選項略過 CloudFormation 無法成功復原的資源。您必須查詢並輸入要略過IDs的資源邏輯。僅指定在 期間進入
UPDATE_FAILED
狀態的資源UpdateRollback
,而不是在轉送更新期間進入 狀態的資源。警告
CloudFormation 會將指定資源的狀態設定為 ,
UPDATE_COMPLETE
並繼續復原堆疊。在復原完成後,跳過資源的狀態會和堆疊範本中資源的狀態不一致。在執行下一次堆疊更新前,您必須更新堆疊或資源,使其和彼此保持一致。若您未執行此作業,後續的堆疊更新可能會失敗,堆疊可能會變得無法復原。指定成功復原您堆疊所需要的最小資源數。例如,失敗的資源更新可能會導致依存資源失敗。在這種情況下,您可能不需要跳過依存資源。
若要跳過屬巢狀堆疊的部分資源,請使用下列格式:
。若您希望在NestedStackName
.ResourceLogicalID
Type: AWS::CloudFormation::Stack
清單中指定堆疊資源 (ResourcesToSkip
) 的邏輯 ID,則其對應的內嵌堆疊必須處於下列任一狀態:DELETE_IN_PROGRESS
、DELETE_COMPLETE
,或DELETE_FAILED
。
繼續復原更新 (AWS CLI)
-
使用 continue-update-rollback 命令,並具有
--stack-name
選項,可指定您要繼續復原的堆疊 ID。
繼續從失敗的巢狀堆疊更新復原
當您有多個堆疊相互巢狀時,您可能需要跳過多個巢狀層級的資源,才能將完整的堆疊階層恢復到工作狀態。
例如,您有一個名為 的根堆疊WebInfra
,其中包含兩個較小的堆疊: WebInfra-Compute
和 WebInfra-Storage
。這兩個堆疊內也有自己的巢狀堆疊。
如果在更新期間發生錯誤,且更新程序失敗,整個堆疊階層最終可能會處於 UPDATE_ROLLBACK_FAILED
狀態,如下圖所示。
注意
為求簡潔,此範例中的堆疊名稱已進行截斷。子堆疊名稱通常由 產生 CloudFormation ,並包含唯一的隨機字串,因此實際名稱可能不容易使用。
若要使用 continue-update-rollback
命令讓根堆疊進入可操作狀態,您必須使用 --resources-to-skip
選項略過無法復原的資源。
下列continue-update-rollback範例會從先前失敗的堆疊更新繼續復原操作。在此範例中, --resources-to-skip
選項包含下列項目:
-
myCustom
-
WebInfra-Compute-Asg.myAsg
-
WebInfra-Compute-LB.myLoadBalancer
-
WebInfra-Storage.DB
對於根堆疊的資源,您只需提供邏輯 ID,例如
。不過,對於巢狀堆疊中包含的資源,您必須同時提供巢狀堆疊名稱及其邏輯 ID,並以句點分隔。例如:myCustom
。WebInfra-Compute-Asg.myAsg
aws cloudformation continue-update-rollback --stack-name
WebInfra
\ --resources-to-skipmyCustom WebInfra-Compute-Asg.myAsg WebInfra-Compute-LB.myLoadBalancer WebInfra-Storage.DB
尋找巢狀堆疊的堆疊名稱
您可以在子堆疊的堆疊 ID 或 Amazon Resource Name () 中找到它ARN。
下列ARN範例是指名為 的堆疊WebInfra-Storage-Z2VKC706XKXT
。
arn:aws:cloudformation:us-east-1:123456789012:stack/WebInfra-Storage-Z2VKC706XKXT/ea9e7f90-54f7-11e6-a032-028f3d2330bd
尋找巢狀堆疊的邏輯 ID
您可以在子堆疊的父系範本定義中找到其邏輯 ID。在圖表中,WebInfra-Storage-DB
子堆疊LogicalId
的 位於其父項 DB
中WebInfra-Storage
。
在 CloudFormation 主控台中,您也可以在資源索引標籤或事件索引標籤上,在堆疊資源的邏輯 ID 欄中找到邏輯 ID。如需詳細資訊,請參閱從 CloudFormation 主控台檢視堆疊資訊。