本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
UpdatePolicy
屬性
使用 UpdatePolicy
屬性來指定在堆疊更新操作期間 AWS CloudFormation 如何處理特定資源的更新。
主題
概觀
透過使用 UpdatePolicy
屬性,您可以控制下列資源的更新方式,如此處所述:
-
AWS::AppStream::Fleet – CloudFormation 可以停止和啟動機群,這會導致機群的執行個體遭到取代。如此一來,所有執行個體都會在堆疊更新後立即套用最新的變更。
-
AWS::AutoScaling::AutoScalingGroup – 使用 Auto Scaling 群組,您可以使用一或多個更新政策來控制 CloudFormation 如何處理特定更新。這些政策包括:
-
AutoScalingReplacingUpdate
和AutoScalingRollingUpdate
政策 – CloudFormation 可以將 Auto Scaling 群組及其執行個體取代為AutoScalingReplacingUpdate
政策,或僅將執行個體取代為AutoScalingRollingUpdate
政策。當您進行下列一或多個變更時,會發生這些替代操作:-
變更 Auto Scaling 群組的 AWS::AutoScaling::LaunchConfiguration。
-
變更 Auto Scaling 群組的
VPCZoneIdentifier
屬性。 -
變更 Auto Scaling 群組的
LaunchTemplate
屬性。 -
變更 Auto Scaling 群組的
PlacementGroup
屬性。 -
更新 Auto Scaling 群組,其中包含不符合目前
LaunchConfiguration
的執行個體。
如果已指定
AutoScalingReplacingUpdate
與AutoScalingRollingUpdate
政策屬性,請將WillReplace
屬性設定為true
,為AutoScalingReplacingUpdate
提供優先順序。 -
-
AutoScalingScheduledAction
政策 – 當您更新包含 Auto Scaling 群組的堆疊時,此政策適用於在特定時間擴展群組的排程動作。CloudFormation 無法修改群組的大小下限、大小上限或所需容量,除非已在堆疊範本中明確變更。此政策有助於防止任何可能干擾排程擴展活動的意外更新。
-
-
AWS::ElastiCache::ReplicationGroup – CloudFormation 可以透過新增或移除碎片來修改複寫群組的碎片,而不是取代整個資源。
-
AWS::OpenSearchService::Domain 和 AWS::Elasticsearch::Domain(舊版) – CloudFormation 可以將 OpenSearch Service 網域升級至新版本的 OpenSearch 或 Elasticsearch,而無需取代整個資源。
-
AWS::Lambda::Alias – 當別名上的版本變更時,CloudFormation 可以執行 CodeDeploy 部署。
以下各節說明每個資源類型所支援UpdatePolicy
屬性的語法和屬性。
AppStream 2.0 更新政策
若要在更新之前停止 AppStream 2.0 機群,並在更新之後重新啟動,請使用 AppStream 2.0 更新政策。
語法
JSON
{ "UpdatePolicy": { "StopBeforeUpdate": { "Type": "
Boolean
" }, "StartAfterUpdate": { "Type": "Boolean
" } } }
YAML
UpdatePolicy: StopBeforeUpdate: Type:
Boolean
StartAfterUpdate: Type:Boolean
StopBeforeUpdate
-
在更新前停止指定機群。
必要:否
StartAfterUpdate
-
在更新後啟動指定機群。
必要:否
AutoScalingReplacingUpdate 政策
若要取代 Auto Scaling 群組及其包含的執行個體,請使用 AutoScalingReplacingUpdate
政策。
在嘗試更新之前,請確定您有足夠的 Amazon EC2 容量,以同時容納舊的與新的 Auto Scaling 群組。
語法
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" :
Boolean
} }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace:
Boolean
屬性
WillReplace
-
指定是否要在更新期間替換 Auto Scaling 群組及其所包含的執行個體。在替換過程中,CloudFormation 會保留舊群組,直到完成建立新的群組。如果更新失敗,CloudFormation 可復原到舊 Auto Scaling 群組並刪除新 Auto Scaling 群組。
雖然 CloudFormation 建立新的群組,但它不會分離或連接任何執行個體。成功建立新 Auto Scaling 群組後,CloudFormation 將在清除程序中刪除舊 Auto Scaling 群組。
當您設定
WillReplace
參數時,請記住指定相符的 CreationPolicy。如果執行個體 (由MinSuccessfulInstancesPercent
屬性指定) 的最小數量未在Timeout
期間內 (在CreationPolicy
政策中指定) 成功發出訊號,則取代更新會失敗,CloudFormation 會轉返舊的 Auto Scaling 群組。類型:布林值
必要:否
AutoScalingRollingUpdate 政策
若要對 Auto Scaling 群組中的執行個體執行滾動更新,而不是等待擴展活動逐漸將較舊的執行個體取代為較新的執行個體,請使用 AutoScalingRollingUpdate
政策。此政策可讓您靈活地指定 CloudFormation 是否以批次或一次全部取代 Auto Scaling 群組中的執行個體,而無需取代整個資源。
使用 AutoScalingRollingUpdate
政策時的考量事項:
-
當 CloudFormation 復原更新時,它會在目前的堆疊更新之前使用範本中指定的
UpdatePolicy
組態。例如,您可以在 中將MaxBatchSize
1 變更為 10UpdatePolicy
、執行堆疊更新,而該更新會失敗。CloudFormation 在復原時會使用 1 作為最大批次大小,而不是 10。為了避免這種情況,請在對 Auto Scaling 群組進行任何可能啟動滾動更新的更新之前,在個別更新UpdatePolicy
中對 進行變更。 -
CloudFormation 建議指定
SuspendProcesses
屬性來暫時暫停可能干擾滾動更新並導致其失敗的 Amazon EC2 Auto Scaling 程序。如需詳細資訊,請參閱如何在更新 CloudFormation 堆疊時更新 Auto Scaling 群組? -
CloudFormation 支援在啟動或終止執行個體時使用 Amazon EC2 Auto Scaling 生命週期掛鉤。這可讓您有時間在執行個體上執行自訂動作,然後再移至下一個狀態。若要確保新的執行個體達到
InService
狀態,請在自訂動作完成時,使用CONTINUE
結果完成生命週期掛鉤。根據預設,如果未收到回應且生命週期掛鉤逾時,執行個體啟動會被視為失敗並放棄。如果沒有執行個體達到InService
狀態,滾動更新最終會失敗。 -
Amazon EC2 Auto Scaling 功能,例如執行個體維護政策、終止政策和縮減保護,不適用於 CloudFormation 滾動更新。相應地規劃滾動更新。
-
如果您使用
AutoScalingRollingUpdate
政策並移除置放群組設定,置放群組將從 Auto Scaling 群組和 CloudFormation 範本中移除。此外,這會觸發滾動更新,因此新執行個體不會在置放群組中啟動。
語法
JSON
"UpdatePolicy" : { "AutoScalingRollingUpdate" : { "MaxBatchSize" :
Integer
, "MinActiveInstancesPercent" :Integer
, "MinInstancesInService" :Integer
, "MinSuccessfulInstancesPercent" :Integer
, "PauseTime" :String
, "SuspendProcesses" : [List of processes
], "WaitOnResourceSignals" :Boolean
} }
YAML
UpdatePolicy: AutoScalingRollingUpdate: MaxBatchSize:
Integer
MinActiveInstancesPercent:Integer
MinInstancesInService:Integer
MinSuccessfulInstancesPercent:Integer
PauseTime:String
SuspendProcesses: -List of processes
WaitOnResourceSignals:Boolean
屬性
MaxBatchSize
-
指定可同時取代的執行個體數量上限。
預設:
1
上限:
100
類型:整數
必要:否
MinActiveInstancesPercent
-
指定在滾動更新期間,Auto Scaling 群組中必須相對於該群組所需容量處於
InService
狀態的執行個體百分比,以使更新成功。您可以指定 0 到 100 的值。CloudFormation 會四捨五入至最接近的 10%。例如,如果您更新 5 個最低InService
百分比為 50 的執行個體,則至少必須有三個執行個體處於InService
狀態。如果執行個體未在 1 小時內轉換為InService
狀態,CloudFormation 會假設執行個體未更新。在
MinActiveInstancesPercent
中的設定UpdatePolicy
也會影響當AWS::AutoScaling::AutoScalingGroup
資源DesiredCapacity
屬性設定為高於 Auto Scaling 群組目前所需容量時啟動的執行個體。預設:
100
類型:整數
必要:否
MinInstancesInService
-
指定在 CloudFormation 更新舊執行個體時,Auto Scaling 群組中必須為服務中的執行個體的最少數量。此值必須小於 Auto Scaling 群組MaxSize的 。
警告
建議您將
MinInstancesInService
屬性的值至少設定為 Auto Scaling 群組MinSize的 。這可避免因 0 個執行個體提供客戶流量而發生滾動更新期間的潛在可用性問題。預設:
0
類型:整數
必要:否
MinSuccessfulInstancesPercent
-
指定 Auto Scaling 滾動更新中必須有多少百分比的執行個體成功發出訊號才能成功更新。您可以指定 0 到 100 的值。CloudFormation 會四捨五入至最接近的 10%。例如,如果更新 5 個執行個體,最低成功百分比為
50
,則必須有 3 個執行個體成功發出訊號。如果執行個體未在PauseTime
屬性指定的時間內傳送訊號,CloudFormation 將假設執行個體未更新。建議您將
MinSuccessfulInstancesPercent
屬性的值設定為大於 0 的值。當MinSuccessfulInstancesPercent
屬性設為 0 時,CloudFormation 會等待 0% 的容量執行個體處於InService
狀態。 會立即MinSuccessfulInstancesPercent
傳回 ,再考慮 Auto Scaling 群組狀態UPDATE_COMPLETE
,以移至堆疊範本中定義的後續資源。如果在 CloudFormation 範本中定義了其他 Auto Scaling 群組,則這些群組將會同時更新。當一次部署所有 Auto Scaling 群組且 0% 的容量執行個體處於InService
狀態時,您將會遇到可用性問題,因為沒有執行個體提供客戶流量。預設:
100
類型:整數
必要:否
PauseTime
-
CloudFormation 在變更一個批次的執行個體之後,為提供時間讓這些執行個體啟動軟體應用程式而暫停的時間量。
以 ISO8601 持續時間格式
指定 PauseTime
(格式為PT
,其中的各個#
H#
M#
S#
分別為小時、分鐘、秒鐘的數字)。PauseTime
上限為 1 小時 (PT1H
)。警告
當
WaitOnResourceSignals
設為 時true
,PauseTime
會做為逾時值。它會決定 CloudFormation 在滾動更新期間,以及透過增加AWS::AutoScaling::AutoScalingGroup
資源的 DesiredCapacity 屬性,從要取代的執行個體,以及從要新增的新執行個體,等待接收所需有效訊號數量的最長時間。如果在 CloudFormationPauseTime
收到預期的訊號之前超過 ,更新會失敗。為了獲得最佳結果,請指定一段期間,為您的應用程式提供足夠的啟動時間。如果需要復原更新,較短的PauseTime
可能會導致復原失敗。預設:當
WaitOnResourceSignals
屬性設定為 時PT5M
(5 分鐘)true
。否則,不會設定預設值。類型:字串
必要:否
SuspendProcesses
-
指定 Auto Scaling 程序在堆疊更新期間暫停。暫停程序可避免 Auto Scaling 影響堆疊更新。例如,您可以暫停警示,這樣 Amazon EC2 Auto Scaling 就不會啟動與警示相關的擴展政策。如需有效值,請參閱《Amazon EC2 Auto Scaling 使用者指南》中的程序類型。
預設:未指定
類型:Auto Scaling 程序清單
必要:否
WaitOnResourceSignals
-
指定 CloudFormation 是否等待來自新執行個體的成功訊號,然後再繼續更新。CloudFormation 會等待指定的
PauseTime
持續時間,以取得成功訊號。若要發出 Auto Scaling 群組訊號,請使用 cfn-signal 協助程式指令碼。對於與 Elastic Load Balancing 相關聯的 Auto Scaling 群組,請考慮新增運作狀態檢查,以確保執行個體運作狀態良好,然後再使用 cfn-init 協助程式指令碼發出成功訊號。如需範例,請參閱 GitHub 儲存庫
中 Amazon EC2 Auto Scaling 滾動更新的範本中的 verify_instance_health
命令。預設:
false
類型:布林值
必要:有條件限制。如果您指定
MinSuccessfulInstancesPercent
屬性,則WaitOnResourceSignals
屬性必須設定為true
。
AutoScalingScheduledAction 政策
若要指定當AWS::AutoScaling::AutoScalingGroup
資源具有相關聯的排程動作時MaxSize
,CloudFormation 如何處理 MinSize
、 和 DesiredCapacity
屬性的更新,請使用 AutoScalingScheduledAction
政策。
透過排程動作,可隨時改變 Auto Scaling 群組的群組大小屬性。當您使用 Auto Scaling 群組與排程動作更新堆疊時,CloudFormation 永遠會將您 Auto Scaling 群組的群組大小屬性設定為您範本內 AWS::AutoScaling::AutoScalingGroup
資源中定義的值,即使排程動作已生效。
當您有生效的排程動作時,如果不希望 CloudFormation 變更任何群組大小屬性值,請使用 AutoScalingScheduledAction
更新政策並將 IgnoreUnmodifiedGroupSizeProperties
設為 true
,以避免CloudFormation 變更 MinSize
、MaxSize
或 DesiredCapacity
屬性,除非您已在您的範本中修改這些值。
語法
JSON
"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" :
Boolean
} }
YAML
UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties:
Boolean
屬性
IgnoreUnmodifiedGroupSizeProperties
-
如果
true
,CloudFormation 會忽略目前 Auto Scaling 群組與堆疊更新期間範本AWS::AutoScaling::AutoScalingGroup
資源中描述的 Auto Scaling 群組之間的群組大小屬性差異。如果您修改範本中的任何群組大小屬性值,CloudFormation 會使用修改的值並更新您的 Auto Scaling 群組。預設:
false
類型:布林值
必要:否
UseOnlineResharding 政策
若要透過新增或移除碎片來修改複寫群組的碎片,而不是替換整個 AWS::ElastiCache::ReplicationGroup 資源,請使用 UseOnlineResharding
更新政策。
如果 UseOnlineResharding
設為 true
,您可以更新 AWS::ElastiCache::ReplicationGroup
資源的 NumNodeGroups
和 NodeGroupConfiguration
屬性,且 CloudFormation 將會更新這些屬性而不被中斷。當 UseOnlineResharding
設為 false
或未指定,更新 NumNodeGroups
和 NodeGroupConfiguration
屬性會導致 CloudFormation 替換整個 AWS::ElastiCache::ReplicationGroup
資源。
UseOnlineResharding
更新政策沒有屬性。
將 UseOnlineResharding
更新政策設定為 true
時的一些考量事項:
-
我們強烈建議您將
NumNodeGroups
和NodeGroupConfiguration
屬性作為特定堆疊更新操作中唯一的更新來執行更新。更新複寫群組的節點群組組態是需要耗費大量資源的操作。如果堆疊更新失敗,CloudFormation 不會復原複寫群組中節點群組組態的變更。不過,CloudFormation 將復原任何其他屬性在更新操作失敗中的變更。
-
任何節點群組更新都需要識別所有節點群組。
如果您指定
NodeGroupConfiguration
屬性,您也必須為每個節點群組組態指定 NodeGroupId,才能讓 CloudFormation 更新節點數量而不被中斷。在建立複寫群組時,如果您沒有為每個節點群組指定 ID,ElastiCache 會自動為每個節點群組產生 ID。若要更新複寫群組而不被中斷,請使用 ElastiCache 主控台 (https://console.aws.amazon.com/elasticache/
) 或 DescribeReplicationGroups 擷取該複寫群組中所有節點群組的 ID。然後,在嘗試新增或移除碎片之前,請為堆疊範本中的每個節點群組指定 ID。 注意
最佳實務是當您在堆疊範本中建立複寫群組時,就為您指定的每個節點群組包含 ID。
此外,更新節點數量而不被中斷,也會需要您準確地為每個
NodeGroupConfiguration
指定PrimaryAvailabilityZone
、ReplicaAvailabilityZones
和ReplicaCount
屬性。同樣地,您可以使用 ElastiCache 主控台 (https://console.aws.amazon.com/elasticache/) 或 DescribeReplicationGroups 擷取每個節點群組的實際值,並將其與堆疊範本中的值進行比較。您可以進行個別堆疊更新來更新節點群組的屬性值,或將更新作為變更節點群組數量相同堆疊更新的一部分。 當您使用
UseOnlineResharding
更新政策來更新節點群組數量而不被中斷時,ElastiCache 會在指定數量的位置之間平均分配金鑰空間。此設定之後將無法更新。因此,以這種方式更新節點群組後,您應該移除在堆疊範本中NodeGroupConfiguration
為每個Slots
屬性指定的值,因為其不再反映每個節點群組的實際值。 -
實際節點群組移除結果可能有所差異。
當您指定的
NumNodeGroups
值低於目前節點群組的數量,CloudFormation 會指示 ElastiCache 盡可能移除節點群組以達到指定的節點數量。不過,ElastiCache 可能無法總是移除所需節點群組數量。如果 ElastiCache 無法移除所需的節點群組數量,CloudFormation 會產生堆疊事件來提醒您。如果 ElastiCache 無法移除任何節點群組,則 CloudFormation 資源更新失敗。
如需修改複寫群組的詳細資訊,請參閱 Amazon ElastiCache API Reference (《Amazon ElastiCache API 參考》) 中的 ModifyReplicationGroupShardConfiguration。
語法
JSON
"UpdatePolicy" : { "UseOnlineResharding" :
Boolean
}
YAML
UpdatePolicy: UseOnlineResharding:
Boolean
EnableVersionUpgrade 政策
若要將 OpenSearch Service 網域升級為 OpenSearch 或 Elasticsearch 的新版本,而非取代整個 AWS::OpenSearchService::Domain 或 AWS::Elasticsearch::Domain 資源,請使用 EnableVersionUpgrade
更新政策。
如果 EnableVersionUpgrade
設定為 true
,您可以更新 AWS::OpenSearchService::Domain
資源的 EngineVersion
屬性 (或舊有 AWS::Elasticsearch::Domain
資源的 ElasticsearchVersion
屬性),並且 CloudFormation 會更新該屬性,而不會中斷。當 EnableVersionUpgrade
設定為 false
,或是沒有指定時,更新 EngineVersion
或 ElasticsearchVersion
屬性會導致 CloudFormation 取代整個 AWS::OpenSearchService::Domain
/AWS::Elasticsearch::Domain
資源。
EnableVersionUpgrade
更新政策沒有屬性。
如需詳細資訊,請參閱《Amazon OpenSearch Service 開發人員指南》中的升級 OpenSearch Service 網域。 OpenSearch
語法
JSON
"UpdatePolicy" : { "EnableVersionUpgrade" :
Boolean
}
YAML
UpdatePolicy: EnableVersionUpgrade:
Boolean
CodeDeployLambdaAliasUpdate 政策
若要在 AWS::Lambda::Alias
資源進行版本變更時執行 CodeDeploy 部署,請使用 CodeDeployLambdaAliasUpdate
更新政策。
語法
JSON
"UpdatePolicy" : { "CodeDeployLambdaAliasUpdate" : { "AfterAllowTrafficHook" :
String
, "ApplicationName" :String
, "BeforeAllowTrafficHook" :String
, "DeploymentGroupName" :String
} }
YAML
UpdatePolicy: CodeDeployLambdaAliasUpdate: AfterAllowTrafficHook:
String
ApplicationName:String
BeforeAllowTrafficHook:String
DeploymentGroupName:String
屬性
AfterAllowTrafficHook
-
在流量路由完成後,要執行的 Lambda 函數名稱。
必要:否
類型:字串
ApplicationName
-
CodeDeploy 應用程式名稱。
必要:是
類型:字串
BeforeAllowTrafficHook
-
在流量路由開始前,要執行的 Lambda 函數名稱。
必要:否
類型:字串
DeploymentGroupName
-
CodeDeploy 部署群組的名稱。這是設置流量轉換政策的位置。
必要:是
類型:字串
如需為 AWS::Lambda::Alias
資源指定 UpdatePolicy
屬性的範例,請參閱 Lambda 別名更新政策。
範例
以下範例說明如何將更新政策新增至 Auto Scaling 群組,以及如何在更新中繼資料時保持可用性。
將 UpdatePolicy
新增至 Auto Scaling 群組
以下範例說明如何新增更新政策。在更新期間,Auto Scaling 群組將以兩個為一批更新執行個體,並至少保持一個服務中的執行個體。由於已設定 WaitOnResourceSignals
旗標,Auto Scaling 群組將等待在群組中新增的新執行個體。新執行個體必須發出訊號至 Auto Scaling 群組,才能更新下一個批次的執行個體。
JSON
"ASG" : { "Type":"AWS::AutoScaling::AutoScalingGroup", "Properties":{ "VPCZoneIdentifier":[ "
subnetIdAz1
", "subnetIdAz2
", "subnetIdAz3
" ], "LaunchTemplate":{ "LaunchTemplateId":{ "Ref":"logicalName
" }, "Version":{ "Fn::GetAtt":[ "logicalName
", "LatestVersionNumber" ] } }, "MaxSize":"4", "MinSize":"1" }, "UpdatePolicy":{ "AutoScalingScheduledAction":{ "IgnoreUnmodifiedGroupSizeProperties":"true" }, "AutoScalingRollingUpdate":{ "MinInstancesInService":"1", "MaxBatchSize":"2", "WaitOnResourceSignals":"true", "PauseTime":"PT10M", "SuspendProcesses":[ "HealthCheck", "ReplaceUnhealthy", "AZRebalance", "AlarmNotification", "ScheduledActions", "InstanceRefresh" ] } } }
YAML
ASG: Type: 'AWS::AutoScaling::AutoScalingGroup' Properties: VPCZoneIdentifier: -
subnetIdAz1
-subnetIdAz2
-subnetIdAz3
LaunchTemplate: LaunchTemplateId: !ReflogicalName
Version: !GetAttlogicalName
.LatestVersionNumber MaxSize: '4' MinSize: '1' UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties: 'true' AutoScalingRollingUpdate: MinInstancesInService: '1' MaxBatchSize: '2' WaitOnResourceSignals: 'true' PauseTime: PT10M SuspendProcesses: - HealthCheck - ReplaceUnhealthy - AZRebalance - AlarmNotification - ScheduledActions - InstanceRefresh
AutoScalingReplacingUpdate 政策
以下範例宣告一項政策,強制在更新期間替換關聯的 Auto Scaling 群組。為了成功更新,必須在 MinSuccessfulPercentParameter
期間發出成功訊號的執行個體百分比 (以 Timeout
參數指定)。
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" : true } }, "CreationPolicy" : { "ResourceSignal" : { "Count" : { "Ref" : "ResourceSignalsOnCreate"}, "Timeout" : "PT10M" }, "AutoScalingCreationPolicy" : { "MinSuccessfulInstancesPercent" : { "Ref" : "MinSuccessfulPercentParameter" } } }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace: true CreationPolicy: ResourceSignal: Count: !Ref 'ResourceSignalsOnCreate' Timeout: PT10M AutoScalingCreationPolicy: MinSuccessfulInstancesPercent: !Ref 'MinSuccessfulPercentParameter'
在更新 cfn-init 協助程式指令碼的中繼資料時維持可用性
當您在執行個體上安裝軟體應用程式時,可使用 AWS::CloudFormation::Init 中繼資料金鑰與 cfn-init 協助程式指令碼以引導 Auto Scaling 群組中的執行個體。CloudFormation 安裝套件、執行命令,並執行中繼資料中所描述的其他引導動作。
當您僅更新中繼資料時 (例如,將套件更新為另一個版本時),可使用 cfn-hup 協助程式以偵測和套用更新。但是,cfn-hup
協助程式獨立執行於每個執行個體。如果協助程式剛好在所有執行個體上同時執行,您的應用程式或服務在更新期間可能會無法使用。為了保證可用性,您可以強制滾動更新,使 CloudFormation 每次更新一個批次的執行個體。
重要
強制執行滾動更新需要 CloudFormation 建立新的執行個體,然後刪除舊的執行個體。存放在舊執行個體的任何資訊都會遺失。
若要強制執行滾動更新,請變更啟動組態資源的邏輯 ID,然後更新堆疊及任何指向原始邏輯 ID 的參考 (例如關聯的 Auto Scaling 群組)。CloudFormation 在 Auto Scaling 群組上觸發滾動更新,並取代所有執行個體。
原始範本
"LaunchConfig": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
更新的邏輯 ID
"LaunchConfigUpdateRubygemsPkg": { "Type" : "AWS::AutoScaling::LaunchConfiguration", "Metadata" : { "Comment" : "Install a simple PHP application", "AWS::CloudFormation::Init" : { ... } } }
Lambda 別名更新政策
以下範例指定 UpdatePolicy
資源的 AWS::Lambda::Alias
屬性。部署的所有詳細資訊皆由傳遞至政策的應用程式和部署群組所定義。
JSON
"Alias": { "Type": "AWS::Lambda::Alias", "Properties": { "FunctionName": { "Ref": "LambdaFunction" }, "FunctionVersion": { "Fn::GetAtt": [ "FunctionVersionTwo", "Version" ] }, "Name": "MyAlias" }, "UpdatePolicy": { "CodeDeployLambdaAliasUpdate": { "ApplicationName": { "Ref": "CodeDeployApplication" }, "DeploymentGroupName": { "Ref": "CodeDeployDeploymentGroup" }, "BeforeAllowTrafficHook": { "Ref": "PreHookLambdaFunction" }, "AfterAllowTrafficHook": { "Ref": "PreHookLambdaFunction" } } } }
YAML
Alias: Type: 'AWS::Lambda::Alias' Properties: FunctionName: !Ref LambdaFunction FunctionVersion: !GetAtt FunctionVersionTwo.Version Name: MyAlias UpdatePolicy: CodeDeployLambdaAliasUpdate: ApplicationName: !Ref CodeDeployApplication DeploymentGroupName: !Ref CodeDeployDeploymentGroup BeforeAllowTrafficHook: !Ref PreHookLambdaFunction AfterAllowTrafficHook: !Ref PreHookLambdaFunction