UpdatePolicy
属性
使用 UpdatePolicy
属性来指定 Amazon CloudFormation 在堆栈更新操作期间将如何处理特定资源的更新。
主题
概述
通过使用 UpdatePolicy
属性,您可以控制以下资源的更新方式,如下所述:
-
AWS::AppStream::Fleet
– CloudFormation 可以停止和启动实例集,这会导致实例集中的实例被替换。这样,所有实例都将在堆栈更新后立即应用最新的更改。 -
AWS::AutoScaling::AutoScalingGroup
–借助自动扩缩组,您可以使用一个或多个更新策略来控制 CloudFormation 处理特定更新的方式。这些策略包括:-
AutoScalingReplacingUpdate
和AutoScalingRollingUpdate
策略 – CloudFormation 可以使用AutoScalingReplacingUpdate
策略来替换自动扩缩组及其实例,也可以使用AutoScalingRollingUpdate
策略仅替换实例。这些替换操作将在您执行下列一项或多项更改时发生:-
更改自动扩缩组的
AWS::AutoScaling::LaunchConfiguration
。 -
更改自动扩缩组的
VPCZoneIdentifier
属性。 -
更改自动扩缩组的
LaunchTemplate
属性。 -
更改自动扩缩组的
PlacementGroup
属性。 -
更新包含与当前
LaunchConfiguration
不匹配的实例的自动扩缩组。
如果同时指定
AutoScalingReplacingUpdate
和AutoScalingRollingUpdate
策略,则将WillReplace
属性设置为true
将使AutoScalingReplacingUpdate
优先。 -
-
AutoScalingScheduledAction
策略 – 更新包含具有计划操作的自动扩缩组的堆栈时将应用此策略,这些计划操作会在特定时间扩缩该组。除非已在堆栈模板中显式更改,否则 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 策略
要替换自动扩缩组及其包含的实例,请使用 AutoScalingReplacingUpdate
策略。
在尝试更新之前,请确保您具有足够的 Amazon EC2 容量来容纳旧的和新的自动扩缩组。
语法
JSON
"UpdatePolicy" : { "AutoScalingReplacingUpdate" : { "WillReplace" :
Boolean
} }
YAML
UpdatePolicy: AutoScalingReplacingUpdate: WillReplace:
Boolean
属性
WillReplace
-
指定在更新期间是否替换自动扩缩组及其包含的实例。在替换期间,CloudFormation 将保留旧组,直至完成创建新组。如果更新失败,CloudFormation 可以回滚到旧的自动扩缩组,并删除新的自动扩缩组。
当 CloudFormation 创建新组时,不会分离或附加任何实例。在成功创建新的自动扩缩组后,CloudFormation 在清除过程中,删除旧的自动扩缩组。
在设置
WillReplace
参数时,请记住指定匹配的CreationPolicy
。如果在Timeout
期间(在CreationPolicy
策略中指定)发出成功信号的实例未达到最小实例数(由MinSuccessfulInstancesPercent
属性指定),替换更新将失败,并且 CloudFormation 回滚到旧的自动扩缩组。类型:布尔值
必需:否
AutoScalingRollingUpdate 策略
要对自动扩缩组中的实例执行滚动更新,而不是等待扩缩活动逐渐用较新的实例替换旧实例,请使用 AutoScalingRollingUpdate
策略。此策略让您可以灵活指定 CloudFormation 是分批替换自动扩缩组中的实例,还是一次性全部替换自动扩缩组中的实例,但不替换整个资源。
使用 AutoScalingRollingUpdate
策略时的注意事项:
-
回滚更新时,CloudFormation 会使用在当前堆栈更新之前在模板中指定的
UpdatePolicy
配置。例如,假设您在UpdatePolicy
中将MaxBatchSize
从 1 更改为 10 并执行堆栈更新,但更新失败了。CloudFormation 在回滚时将以 1 为最大批次大小,而不是 10。要避免这种情况,请首先通过单独的更新更改UpdatePolicy
,然后再进行任何可能启动滚动更新的自动扩缩组更新。 -
CloudFormation 建议指定
SuspendProcesses
属性来临时暂停可能会干扰滚动更新并导致更新失败的 Amazon EC2 Auto Scaling 进程。有关更多信息,请参阅如何在更新 CloudFormation 堆栈时更新我的自动扩缩组? -
CloudFormation 支持在启动或终止实例时使用 Amazon EC2 Auto Scaling 生命周期挂钩。这样,在实例进入下一个状态之前,您将有时间在实例上执行自定义操作。要确保新实例达到
InService
状态,请在自定义操作完成后完成生命周期挂钩并确保返回了CONTINUE
结果。默认情况下,如果未收到任何响应并且生命周期挂钩超时,实例启动将被视为失败并被放弃。如果没有实例达到InService
状态,则滚动更新最终将会失败。 -
实例维护策略、终止策略和横向缩减保护等 Amazon EC2 Auto Scaling 功能不支持 CloudFormation 滚动更新。请相应地计划您的滚动更新。
-
如果您使用
AutoScalingRollingUpdate
策略并移除置放群组设置,则该置放群组将从自动扩缩组和 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
-
指定要确保更新成功,自动扩缩组中必须处于
InService
状态的实例相对于滚动更新期间该组所需容量的百分比。可以指定从 0 到 100 的值。CloudFormation 取整到最接近的十分位值。例如,如果您更新五个实例,最小InService
百分比为 50,则至少有三个实例必须处于InService
状态。如果实例未在 1 小时的固定时间内转换为InService
状态,則 CloudFormation 会假定该实例未更新。在
UpdatePolicy
中设置MinActiveInstancesPercent
还会影响在AWS::AutoScaling::AutoScalingGroup
资源中的DesiredCapacity
属性高于该自动扩缩组当前所需容量时启动的实例。默认值:
100
类型:整数
必需:否
MinInstancesInService
-
指定当 Auto Scaling 更新旧实例时,CloudFormation 组中必须处于服务状态的实例的最小数目。该值必须小于自动扩缩组的 MaxSize。
警告
我们建议您将
MinInstancesInService
属性的值至少设置为自动扩缩组的 MinSize。这样,在滚动更新期间,可以避免由于没有实例为客户流量提供服务而导致的潜在可用性问题。默认值:
0
类型:整数
必需:否
MinSuccessfulInstancesPercent
-
指定 Auto Scaling 回滚更新中必须有多少实例 (百分比) 发送成功信号,才认为更新成功。可以指定从 0 到 100 的值。CloudFormation 取整到最接近的十分位值。例如,如果您更新五个实例,最小成功百分比为
50
,则必须有三个实例发送成功信号才行。如果实例未在PauseTime
属性中指定的时间内发出信号,则 CloudFormation 会假定实例未更新。建议您将
MinSuccessfulInstancesPercent
属性的值设置为大于 0 的值。将MinSuccessfulInstancesPercent
属性将设定为 0 时,CloudFormation 会等待 0% 的容量实例进入InService
状态。MinSuccessfulInstancesPercent
在将自动扩缩组的状态视为UPDATE_COMPLETE
之前立即返回,以继续进入堆栈模板中定义的后续资源。如果在 CloudFormation 模板中定义了其他自动扩缩组,则它们将同时更新。当所有自动扩缩组在 0% 的容量实例处于InService
状态时同时部署时,您将遇到可用性问题,因为有 0 个实例提供客户流量。默认值:
100
类型:整数
必需:否
PauseTime
-
在对一批实例进行更改以便为这些实例提供启动软件应用程序的时间后,CloudFormation 暂停的时间量。
使用 ISO8601 持续时间格式
(在 PT
格式中,每个#
H#
M#
S#
分别表示小时数、分钟数和秒数)指定PauseTime
。最大PauseTime
为 1 小时 (PT1H
)。警告
如果将
WaitOnResourceSignals
设置为true
,则PauseTime
会充当超时值。该参数决定了对于在滚动更新期间从被替换的实例以及通过增加AWS::AutoScaling::AutoScalingGroup
资源的 DesiredCapacity 属性而添加的新实例,CloudFormation 为了从这些实例收到所需数量的有效信号而需要等待的最长时间。如果在 Cloudformation 收到所需数量的信号之前超过了PauseTime
,则更新将会失败。要获得最佳结果,请指定一个可确保应用程序有足够启动时间的时间段。如果更新需要回滚,则较短的PauseTime
会导致回滚失败。默认值:
PT5M
(5 分钟),此时WaitOnResourceSignals
属性设置为true
。否则,不会设置任何默认值。类型:字符串
必需:否
SuspendProcesses
-
指定堆栈更新期间要暂停的 Auto Scaling 流程。暂停处理可防止 Auto Scaling 干扰堆栈更新。例如,您可以暂停警报,以便 Amazon EC2 Auto Scaling 不执行与警报关联的扩展策略。有关有效值,请参阅《Amazon EC2 Auto Scaling 用户指南》中的 Types of processes。
默认值:未指定
类型:Auto Scaling 流程列表
必需:否
WaitOnResourceSignals
-
指定在继续更新之前,CloudFormation 是否等待来自新实例的成功信号。CloudFormation 在指定的
PauseTime
持续时间内等待成功信号。要将信号发送到自动扩缩组,请使用 cfn-signal 帮助程序脚本或
SignalResource
API。对于与弹性负载均衡关联的自动扩缩组,可以考虑使用 cfn-init 帮助程序脚本添加运行状况检查,以确保在实例运行状况良好后再发出成功信号。有关示例,请参阅 GitHub 存储库中 Amazon EC2 Auto Scaling 滚动更新示例模板中的 verify_instance_health
命令。默认值:
false
类型:布尔值
必填:条件性。如果指定
MinSuccessfulInstancesPercent
属性,则必须将WaitOnResourceSignals
属性设为true
。
AutoScalingScheduledAction 策略
要指定在 AWS::AutoScaling::AutoScalingGroup
资源具有关联的计划操作时 CloudFormation 如何处理 MinSize
、MaxSize
和 DesiredCapacity
属性的更新,请使用 AutoScalingScheduledAction
策略。
利用计划操作,自动扩缩组的组大小属性可随时更改。当您利用自动扩缩组和计划操作更新堆栈时, CloudFormation 始终将您的自动扩缩组的组大小属性值设置为模板的 AWS::AutoScaling::AutoScalingGroup
资源中定义的值,即使计划操作已生效。
如果您不希望 CloudFormation 在您具有生效的计划操作时,更改任何组大小属性值,请使用 AutoScalingScheduledAction
更新策略并将 IgnoreUnmodifiedGroupSizeProperties
设置为 true
来阻止 CloudFormation 更改 MinSize
、MaxSize
或 DesiredCapacity
属性,除非您已在模板中修改这些值。
语法
JSON
"UpdatePolicy" : { "AutoScalingScheduledAction" : { "IgnoreUnmodifiedGroupSizeProperties" :
Boolean
} }
YAML
UpdatePolicy: AutoScalingScheduledAction: IgnoreUnmodifiedGroupSizeProperties:
Boolean
属性
IgnoreUnmodifiedGroupSizeProperties
-
如果为
true
,则 CloudFormation 在堆栈更新期间,忽略当前自动扩缩组与模板的AWS::AutoScaling::AutoScalingGroup
资源中所述自动扩缩组之间的组大小属性差异。如果修改了模板中的任何组大小属性值,CloudFormation 将使用修改后的值并更新自动扩缩组。默认值:
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 参考》中的 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
更新策略没有任何属性。
有关升级 OpenSearch Service 域的更多信息,请参阅《Amazon OpenSearch Service 开发人员指南》中的 UpgradeDomain。
语法
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 别名更新策略。
示例
以下示例说明如何将更新策略添加到自动扩缩组,以及如何在更新元数据时维护可用性。
将 UpdatePolicy
添加到自动扩缩组中
以下示例说明如何添加更新策略。更新期间,自动扩缩组将更新两批实例并至少保留一个实例可用。由于设置了 WaitOnResourceSignals
标记,自动扩缩组将等待添加到组中的新实例发送信号。新实例必须在其更新下一批实例之前,向自动扩缩组发送信号。
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 策略
以下示例声明在更新期间强制替换关联的自动扩缩组的策略。要使更新成功,必须有一定百分比的实例 (由 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
帮助程序脚本来引导自动扩缩组中的实例。CloudFormation 安装软件包、运行命令并执行元数据中描述的其他引导操作。
在仅更新元数据(例如:在将软件包更新为另一个版本时)时,您使用 cfn-hup
帮助程序守护进程检测和应用更新。不过,cfn-hup
守护进程会在每个实例上单独运行。如果守护进程同时在所有实例上运行,则您的应用程序或服务可能在更新期间不可用。要确保可用性,您可以强制滚动更新,以便 CloudFormation 一次更新一批实例。
重要
强制滚动更新要求 CloudFormation 创建新实例,然后删除旧实例。旧实例中存储的任何信息都将丢失。
要强制滚动更新,请更改启动配置资源的逻辑 ID,然后更新堆栈和任何指向原始逻辑 ID 的引用(例如,关联的自动扩缩组)。CloudFormation 会触发自动扩缩组的滚动更新,以替换所有实例。
原始模板
"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