本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
透過匯入作業解決漂移
在某些情況下,資源的組態已經從其預期組態中漂移,並且您想要接受新的組態作為預期組態。在大多數情況下,您會透過使用新組態更新堆疊範本中的資源來定義,然後執行堆疊更新來解決漂移結果。不過,如果新組態更新需要取代的資源屬性,則會在堆疊更新期間重新建立資源。如果您想要保留現有資源,可以使用資源匯入功能來更新資源並解決漂移結果,而不會導致資源被取代。
透過匯入作業解決資源的漂移包含下列基本步驟:
-
將設定為 保留的 DeletionPolicy 屬性新增至資源 。這可確保現有資源在從堆疊中移除時保留,而不是刪除它。
-
從範本中移除資源,並執行堆疊更新作業。這會從堆疊中移除資源,但不會刪除它。
-
在堆疊範本中描述資源的實際狀態,然後再將現有資源匯入堆疊。這會將資源新增回堆疊,並解決造成漂移結果的屬性差異。
如需資源匯入的詳細資訊,請參閱 匯入 AWS 資源到具有資源導入的 CloudFormation 堆棧中。如需支援匯入的資源清單,請參閱 資源類型支援。
在此範例中,我們使用下列範本,名為 templateToImport.json
。
在此範例中,假設使用者變更了 以外的資源 CloudFormation。執行漂移檢測後,我們發現 GamesTable
已將 BillingMode
修改為 PAY_PER_REQUEST
。如需漂移偵測的詳細資訊,請參閱 透過偏離偵測偵測偵測堆疊和資源的未受管組態變更。
我們的堆疊現已過時,而我們的資源卻是即時的,但我們還是希望能保留預期的資源組態。我們可以透過導入操作解決漂移而不中斷服務來做到這一點。
使用 CloudFormation 主控台透過匯入操作解決偏離
步驟 1. 使用保留刪除政策更新堆疊
使用具有 Retain
選項的 DeletionPolicy
屬性來更新堆疊
登入 AWS Management Console 並在 https://console.aws.amazon.com/cloudformation
開啟 AWS CloudFormation 主控台。 -
在堆疊頁面上,選擇已漂移的堆疊。
-
選擇更新,然後從堆疊詳細資料窗格中選擇取代目前的範本。
-
在指定範本頁面上,使用下列其中一種方法,透過
Retain
選項提供包含DeletionPolicy
屬性的更新範本:-
選擇 Amazon S3 URL,然後在文字方塊中指定範本URL的 。
-
選擇 Upload a template file (上傳範本檔案),然後瀏覽您的範本。
然後選擇下一步。
-
-
複查指定堆疊詳細資料頁面,然後選擇下一步。
-
檢閱配置堆疊選項頁面,並選擇下一步。
-
檢閱中
stack-name
頁面,選擇更新堆疊 。
結果:在堆疊的事件頁面上,狀態為 UPDATE_COMPLETE
。
若要透過匯入操作解決偏離,而不中斷服務,請Retain
DeletionPolicy為您要從堆疊中移除的資源指定 。在下列範例中,我們已將 設定為 的DeletionPolicy屬性Retain
新增至 GamesTable
資源。
步驟 2. 移除漂移的資源、相關參數和輸出
移除漂移資源、相關參數和輸出
-
選擇更新,然後從堆疊詳細資料窗格中選擇取代目前的範本。
-
在指定範本頁面上,使用下列其中一種方法,提供已更新範本的資源、相關參數和輸出:
-
選擇 Amazon S3 URL,然後在文字方塊中指定範本URL的 。
-
選擇 Upload a template file (上傳範本檔案),然後瀏覽您的範本。
然後選擇下一步。
-
-
複查指定堆疊詳細資料頁面,然後選擇下一步。
-
檢閱配置堆疊選項頁面,並選擇下一步。
-
檢閱中
stack-name
頁面,選擇更新堆疊 。
結果:邏輯 ID GamesTable
在堆疊的事件頁面 上的狀態為 DELETE_SKIPPED
。
等待 CloudFormation 直到完成堆疊更新操作。堆疊更新作業完成後,請從堆疊範本移除資源、相關參數和輸出。然後,匯入更新的範本。完成這些動作之後,範例範本現在如下所示。
步驟 3。更新範本以符合資源的即時狀態
更新範本以符合資源的即時狀態
-
若要匯入更新的範本,請選擇堆疊動作,然後選擇將資源匯入堆疊。
-
請閱讀匯入概觀頁面,以取得您在此操作期間必須提供的項目清單,接著選擇下一步。
-
在指定範本頁面上,使用以下其中一種方法提供您更新後的範本。
-
選擇 Amazon S3 URL,然後在文字方塊中指定範本URL的 。
-
選擇 Upload a template file (上傳範本檔案),然後瀏覽您的範本。
然後選擇下一步。
-
-
在 Identify resources (識別資源) 頁面上,識別每個目標資源。如需詳細資訊,請參閱資源識別碼。
-
在 Identifer property (識別碼屬性) 下方,選擇資源識別碼類型。例如,
TableName
屬性會識別AWS::DynamoDB::Table
資源。 -
在識別碼值下方,輸入實際的屬性值。在範例範本中,用於
GamesTable
資源的TableName
是Games
。 -
選擇 Next (下一步)。
-
-
檢閱指定堆疊詳細資料頁面,然後選擇下一步。
-
在匯入概觀頁面上,檢閱要匯入的資源,然後選擇匯入資源。這會將
AWS::DynamoDB::Table
資源類型導回堆疊中。
結果:在此範例中,我們透過匯入作業解決資源漂移,而不會中斷服務。您可以在事件索引標籤的 CloudFormation 主控台中檢查匯入動作的進度。匯入的資源會有一個 IMPORT_COMPLETE
狀態,後接資源匯入完成的 CREATE_COMPLETE
狀態作為狀態原因。
等待 CloudFormation 直到完成堆疊更新操作。堆疊更新作業完成後,請更新範本,以符合資源的實際漂移狀態。例如,BillingMode
將設為 PAY_PER_REQUEST
和 ReadCapacityUnits
,WriteCapacityUnits
將設為 0
。