本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
瞭解堆疊資源的更新行為
當您提交更新時, AWS CloudFormation 會根據您提交的內容與堆疊目前範本之間的差異來更新資源。尚未變更的資源會在更新程序期間執行,無需中斷。對於更新的資源,請 AWS CloudFormation 使用下列其中一個更新行為:
- 更新沒有中斷
-
AWS CloudFormation 更新資源,而不會中斷該資源的作業,也不會變更資源的實體 ID。例如,如果您更新:: AWSCloudTrail: Trail 資源上的某些屬性,則 AWS CloudFormation 更新軌跡而不會中斷。
- 有一些中斷的更新
-
AWS CloudFormation 更新一些中斷的資源。例如,如果您更新:: AWSEC2: Instance 資源上的某些屬性,則執行個體可能會中斷, AWS CloudFormation 而 Amazon 會EC2重新設定執行個體。
- 更換
-
AWS CloudFormation 在更新期間重新建立資源,這也會產生新的實體 ID。 AWS CloudFormation 通常會先建立取代資源,將其他相依資源的參照變更為指向取代資源,然後刪除舊資源。例如,如果您更新:: AWSEC2: Instance 資源類型的
AvailabilityZone
屬性,則 AWS CloudFormation 會建立新資源,並以新資源取代目前的「EC2執行環境」資源。如果您要新增或移除需要取代的屬性,亦會觸發更新。即使屬性的實際值沒有改變,也會進行更新。
該方法的 AWS CloudFormation 使用取決於您針對特定資源類型更新的屬性。AWS 資源類型參考中將說明每個屬性的更新行為。
視更新行為而定,您可以決定何時修改資源,來降低這些變更對您的應用程式造成的影響。特別是,您可以規劃何時必須在更新期間「取代」資源。例如,如果您更新AWS::RDS: DBInstance 資源類型的Port
屬性,請使用更新的連接埠設定建立新的資料庫執行個體來 AWS CloudFormation 取代資料庫執行個體,並刪除舊的資料庫執行個體。更新之前,您可能會規劃執行下列作業以準備取代資料庫:
-
擷取目前資料庫的快照。
-
準備策略,讓使用該資料庫執行個體的應用程式可以處理資料庫執行個體被取代期間的中斷情況。
-
確保使用該資料庫執行個體的應用程式將更新的連接埠設定及您所做的任何其他更新列入考量。
-
使用資料庫快照在新的資料庫執行個體上還原資料庫。
此範例並不完整,旨在提供您想法來規劃何時在更新期間取代資源。
注意
如果範本包含一或多個巢狀堆疊, AWS CloudFormation 也會針對每個巢狀堆疊起始更新。若要判斷巢狀堆疊是否已修改,這是必要的。 AWS CloudFormation 只會更新巢狀堆疊中已在對應範本中指定變更的資源。