我如何在嘗試更新 Amazon EBS 磁碟區類型 (AWS::EC2::Volume) 時,解決 CloudFormation 中的「無法修改處於修改狀態為「正在最佳化」的磁碟區 vol-XXXXXXXXXX」錯誤?

2 分的閱讀內容
0

我收到 AWS CloudFormation 中的「無法修改處於修改狀態為「正在最佳化」的磁碟區 vol-XXXXXXXXXX」錯誤或類似錯誤。當我嘗試更新 Amazon Elastic Block Store (Amazon EBS) 磁碟區類型時,即會發生此錯誤。我的 EBS 磁碟區 (AWS::EC2::Volume) 長時間停滯於 UPDATE_IN_PROGRESS 狀態,最後無法更新磁碟區類型。無法更新我的堆疊,後續更新回復同樣失敗。然後,堆疊最後處於 UPDATE_ROLLBACK_FAILED 狀態。

簡短說明

如果您在 CloudFormation 堆疊修改 EBS 磁碟區時使用憑證,則磁碟區的逾時期間大約為七小時。如果您改為使用 AWS Identity and Access Management (IAM) 服務角色執行堆疊,則 CloudFormation 會將逾時期間增加為 36 小時。

**注意事項:**磁碟區的逾時期間僅適用於使用 CloudFormation 進行的磁碟區修改。不同類型的資源和動作的逾時期間有所不同。

通常,完全使用的 1 TiB EBS 磁碟區需要大約六小時才能遷移至新的效能組態。如需詳細資訊,請參閱監控磁碟區修改的進度

**重要事項:**如果您已使用 CloudFormation 啟動堆疊更新,則必須等待大約七小時,直到堆疊穩定,然後再完成下列步驟。堆疊進入 UPDATE_ROLLBACK_FAILED 狀態時,則會處於穩定狀態。

解決方案

**注意事項:**如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤,請確保您使用的是最新的 AWS CLI 版本

等待堆疊穩定之後復原堆疊

請考慮下列範例。如果您將 EBS 磁碟區類型從 st1 變更為 gp3,則堆疊可能會因磁碟區大小而無法更新磁碟區類型。在此情況下,您可以透過在堆疊上執行 continue-update-rollback 作業來復原堆疊。對於復原作業,您必須略過無法更新的資源邏輯 ID,。您的堆疊最後會處於 UPDATE_ROLLBACK_COMPLETE 狀態。

使用 AWS CLI 或 CloudFormation 主控台復原您的堆疊。

AWS CLI:

aws cloudformation continue-update-rollback --stack-name your-stack-name --resources-to-skip logical-ID-of-EBS-volume

CloudFormation 主控台:

1.    開啟 CloudFormation 主控台

2.    從導覽窗格中,選擇「堆疊」。

3.    從「堆疊名稱」資料欄中,選取停滯於 UPDATE_ROLLBACK_FAILED 狀態的堆疊。

4.    選擇「堆疊動作」,然後選擇「繼續更新回復」。

5.    在「繼續更新回復」對話方塊中,展開「進階疑難排解」。

6.    在「要略過的資源 – 選用」區段中,選取您想要略過的資源。

**注意事項:**請確保選取無法更新磁碟區的邏輯 ID。

7.    選擇「繼續更新回復」。

更新堆疊以與 EBS 磁碟區的目前狀態相符

您必須更新堆疊以與 EBS 磁碟區的目前狀態相符。您的 CloudFormation 範本會透過堆疊更新來更新,而您的堆疊會變更為 UPDATE_COMPLETE 狀態。

例如,您可以將磁碟區類型 (AWS::EC2::Volume) 從 st1 修改為 gp3。但是,即使 Amazon EBS 中準確反映了 gp3 的更新,CloudFormation 中的磁碟區類型會由於回復作業而仍保持為 st1

1.    若要監控 EBS 磁碟區的狀態,請使用 Amazon EC2 主控台或執行下列命令:

aws ec2 describe-volumes-modifications --volume-ids your-volume-ID

2.    在 Amazon EBS 中將磁碟區類型變更為 gp3 之後,將 CloudFormation 堆疊的磁碟區類型 (AWS::EC2::Volume) 更新為 gp3

**注意事項:**您可以將磁碟區類型變更為 gp3 來修改 CloudFormation 範本。然後,執行更新作業。

3.    使用偏離偵測來確認您的 EBS 磁碟區資源 (AWS::EC2::Volume) 是否與堆疊同步。

**重要事項:**如果您不使用服務角色,或者如果磁碟區是大型尺寸 (~8 TiB),則堆疊更新可能需要超過 36 小時。在這種情況下,即使使用具有 36 小時穩定性的服務角色,堆疊更新仍可能失敗。然後,您必須等到堆疊穩定。在此期間,您無法修改任何其他資源類型。若要解決此問題,請完成下列步驟:

1.    使用保留刪除政策以從堆疊中移除 EBS 磁碟區,而無需刪除磁碟區。

2.    改為使用 Amazon EBS 主控台,在 CloudFormation 外部更新 EBS 磁碟區。

3.    將 EBS 磁碟區匯入回您的堆疊。

如果您想要將磁碟區隨時保留在堆疊中,則必須將磁碟區大小保持在閾值以下。例如,如果 8 TiB 資料需要 64 小時,則您可以預估 36 小時的最大大小,並將資料大小降低為 4 TiB。此閾值調整可讓您完成更新。


AWS 官方
AWS 官方已更新 3 年前