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

1 分的閱讀內容
0

當我嘗試更新 AWS CloudFormation 堆疊時,收到類似以下內容的錯誤訊息: 「當自訂命名資源需要取代時,CloudFormation 無法更新堆疊。將 ”MyResource###” 重新命名並再次更新堆疊。」

簡短說明

當堆疊更新嘗試以自訂名稱取代具有屬性的資源時,就會發生此錯誤。除非將自訂名稱變更為其他名稱,否則 CloudFormation 不會取代具有自訂名稱的資源。若要防止堆疊失敗,請務必在更新堆疊之前將任何具有自訂名稱的資源變更為使用不同的名稱。

此錯誤的解決方法會假設下列前提:

  • 您正在更新現有堆疊,而不是新建堆疊。
  • 您正在變更的是現有自訂命名資源的名稱,而不是建立新的自訂命名資源。

解決方法

  1. 在程式碼編輯器中,針對您要更新的堆疊開啟 AWS CloudFormation 範本。

  2. 以不同名稱取代具有自訂名稱之任何資源屬性的名稱或值。

    **注意:**在下列範例中,MyRDS 資源的 DBInstanceIdentifier 屬性會設定為自訂名稱 PRODdb。在將名稱 PRODdb 變更為其他名稱 (例如 PRODdb1) 之前,無法更新 CloudFormation 堆疊。或者,您可以從範本中省略 DBInstanceIdentifier 屬性,以便 CloudFormation 產生用於資料庫執行個體的唯一實體 ID。

    "MyRDS": {    "Type": "AWS::RDS::DBInstance",
        "Properties": {
            "DBInstanceClass": "db.m3.medium",
            "Engine": "MySQL",
            "DBInstanceIdentifier": "PRODdb",
            "AllocatedStorage": "10",
            "AutoMinorVersionUpgrade": "true",
            "BackupRetentionPeriod": "0",
        . . .
        . . .
        }
    }

    **重要:**當您為自訂命名資源重新命名時,CloudFormation 會取代該資源。如需詳細資訊,請參閱名稱類型。在沒有適當備份的情況下,替換某些資源會導致資料遺失。如需詳細資訊,請參閱取代

  3. 儲存對 CloudFormation 範本所做的變更,然後使用此範本更新堆疊

相關資訊

使用 CloudFormation 堆疊管理作為單一單元的 AWS 資源

了解堆疊資源的更新行為

AWS 資源和屬性類型參考

AWS 官方
AWS 官方已更新 4 個月前