當我嘗試更新 AWS CloudFormation 堆疊時,收到類似以下內容的錯誤訊息: 「當自訂命名資源需要替換時,CloudFormation 無法更新堆疊。將『MYResourceXXX』重新命名並再次更新堆疊。」 我該如何解決此錯誤?
簡短描述
當堆疊更新嘗試以自訂名稱替換具有屬性的資源時,通常會發生此錯誤。除非將自訂名稱變更為其他名稱,否則 AWS CloudFormation 不會替換具有自訂名稱的資源。若要防止堆疊失敗並避免出現錯誤訊息,請在更新堆疊之前,將任何具有自訂名稱的資源變更為使用不同的名稱。
此錯誤的解決方法假設如下:
- 您正在更新現有堆疊,而不是新建堆疊。
- 您正在變更的是現有自訂命名資源的名稱,而不是建立新的自訂命名資源。
解決方法
1. 在程式碼編輯器中,針對您要更新的堆疊開啟 AWS CloudFormation 範本。
2. 以不同名稱替換具有自訂名稱之任何資源屬性的名稱或值。
**注意:**在下列範例中,MyRDS 資源的 DBInstanceIdentifier 屬性會設定為自訂名稱 PRODdb。在將名稱 PRODdb 變更為其他名稱 (例如 PRODdb1) 之前,無法成功更新 AWS CloudFormation 堆疊。或者,您可以將範本中的 DBInstanceIdentifier 屬性省略。如此一來,AWS CloudFormation 就會產生用於資料庫執行個體的唯一實體 ID。
"MyRDS": {
"Type": "AWS::RDS::DBInstance",
"Properties": {
"DBInstanceClass": "db.m3.medium",
"Engine": "MySQL",
"DBInstanceIdentifier": "PRODdb",
"AllocatedStorage": "10",
"AutoMinorVersionUpgrade": "true",
"BackupRetentionPeriod": "0",
…
…
}
}
重要事項: 當您為自訂名稱的資源重新命名時,AWS CloudFormation 會取代該資源。如需詳細資訊,請參閱「 名稱類型」。在沒有適當備份的情況下,替換某些資源會導致資料遺失。如需詳細資訊,請參閱「 替換」。
3. 儲存對 AWS CloudFormation 範本所做的變更,然後使用此範本「 更新堆疊」。
相關資訊
AWS CloudFormation 堆疊更新
更新堆疊資源的行為
AWS 資源和屬性類型參考