如何解決 AWS CloudFormation 錯誤「當自訂命名資源需要更換時無法更新堆疊」?

1 分的閱讀內容
0

當我嘗試更新 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 資源和屬性類型參考

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