AWS::CodeDeploy::BlueGreen 钩子语法 - AWS CloudFormation

AWS::CodeDeploy::BlueGreen 钩子语法

以下语法描述了 ECS 蓝绿部署的 AWS::CodeDeploy::BlueGreen 钩子结构。

语法

"Hooks": { "Logical ID": { "Type": "AWS::CodeDeploy::BlueGreen", "Properties": { "TrafficRoutingConfig": { "Type": "Traffic routing type", "TimeBasedCanary": { "StepPercentage": Integer, "BakeTimeMins": Integer }, "TimeBasedLinear": { "StepPercentage": Integer, "BakeTimeMins": Integer } }, "AdditionalOptions": {"TerminationWaitTimeInMinutes": Integer}, "LifecycleEventHooks": { "BeforeInstall": "FunctionName", "AfterInstall": "FunctionName", "AfterAllowTestTraffic": "FunctionName", "BeforeAllowTraffic": "FunctionName", "AfterAllowTraffic": "FunctionName" }, "ServiceRole": "CodeDeployServiceRoleName", "Applications": [ { "Target": { "Type": "AWS::ECS::Service", "LogicalID": "Logical ID of AWS::ECS::Service" }, "ECSAttributes": { "TaskDefinitions": [ "Logical ID of AWS::ECS::TaskDefinition (Blue)", "Logical ID of AWS::ECS::TaskDefinition (Green)" ], "TaskSets": [ "Logical ID of AWS::ECS::TaskSet (Blue)", "Logical ID of AWS::ECS::TaskSet (Green)" ], "TrafficRouting": { "ProdTrafficRoute": { "Type": "AWS::ElasticLoadBalancingV2::Listener", "LogicalID": "Logical ID of AWS::ElasticLoadBalancingV2::Listener (Production)" }, "TestTrafficRoute": { "Type": "AWS::ElasticLoadBalancingV2::Listener", "LogicalID": "Logical ID of AWS::ElasticLoadBalancingV2::Listener (Test)" }, "TargetGroups": [ "Logical ID of AWS::ElasticLoadBalancingV2::TargetGroup (Blue)", "Logical ID of AWS::ElasticLoadBalancingV2::TargetGroup (Green)" ] } } } ] } } }

属性

逻辑 ID(也称为逻辑名称

在模板的 Hooks 部分中声明的钩子。逻辑 ID 必须为字母数字 (A-Za-z0-9),并且在模板中具有唯一性。

必需:是

Type

挂钩的类型。AWS::CodeDeploy::BlueGreen

必需:是

Properties

挂钩的属性。

必需:是

TrafficRoutingConfig

流量路由配置设置。

必需:否

默认配置为基于时间的 canary 流量转移,具有 15% 的步骤百分比和五分钟的稳定时间。

Type

部署配置使用的流量转移类型。

有效值:AllAtOnce | TimeBasedCanary | TimeBasedLinear

必需:是

TimeBasedCanary

指定一个配置,以两个增量将流量从部署的一个版本转移到另一个版本。

必需:如果指定 TimeBasedCanary 作为流量路由类型,则必须包含 TimeBasedCanary 参数。

StepPercentage

TimeBasedCanary 部署的第一个增量中要转移的流量百分比。步骤百分比必须为 14% 或更大。

必需:否

BakeTimeMins

TimeBasedCanary 部署的第一次和第二次流量转移之间的分钟数。

必需:否

TimeBasedLinear

指定一个配置,以相等的增量将流量从部署的一个版本转移到另一个版本,每个增量之间的分钟数相等。

必需:如果指定 TimeBasedLinear 作为流量路由类型,则必须包含 TimeBasedLinear 参数。

StepPercentage

TimeBasedLinear 部署的每个增量开始时转移的流量百分比。步骤百分比必须为 14% 或更大。

必需:否

BakeTimeMins

TimeBasedLinear 部署的每次增量流量转移之间的分钟数。

必需:否

AdditionalOptions

蓝/绿部署的其他选项。

必需:否

TerminationWaitTimeInMinutes

指定终止蓝色资源之前等待的时间(以分钟为单位)。

必需:否

LifecycleEventHooks

使用生命周期事件挂钩指定 CodeDeploy 可以调用的用于验证部署的 Lambda 函数。对于部署生命周期事件,您可以使用相同函数或不同函数。验证测试完成后,Lambda AfterAllowTraffic 函数会回调 CodeDeploy 并提供 SucceededFailed 结果。有关更多信息,请参阅《AWS CodeDeploy 用户指南》中的 AppSpec 的“hooks”部分

必需:否

BeforeInstall

用于在创建替换任务集之前运行任务的函数。

必需:否

AfterInstall

用于在创建替换任务集并且其中一个目标组与之关联后运行任务的函数。

必需:否

AfterAllowTestTraffic

用于在测试侦听器为替换任务集提供流量后运行任务的函数。

必需:否

BeforeAllowTraffic

用于在第二个目标组与替换任务集关联之后但在流量转移到替换任务集之前运行任务的函数。

必需:否

AfterAllowTraffic

用于在第二个目标组为替换任务集提供流量后运行任务的函数。

必需:否

ServiceRole

CloudFormation 用于执行蓝绿部署的执行角色。有关必要权限的列表,请参阅 蓝绿部署所需的 IAM 权限

必需:是

Applications

指定 Amazon ECS 应用程序的属性。

必需:是

Target

必需:是

Type

资源的类型。

必需:是

LogicalID

资源的逻辑 ID。

必需:是

ECSAttributes

代表 Amazon ECS 应用程序部署的各种需求的资源。

必需:是

TaskDefinitions

运行包含 Amazon ECS 应用程序的 Docker 容器所用的 AWS::ECS::TaskDefinition 资源的逻辑 ID。

必需:是

TaskSets

用作应用程序任务集的 AWS::ECS::TaskSet 资源的逻辑 ID。

必需:是

TrafficRouting

指定用于流量路由的资源。

必需:是

ProdTrafficRoute

负载均衡器将流量定向到目标组所用的侦听器。

必需:是

Type

资源的类型。AWS::ElasticLoadBalancingV2::Listener

必需:是

LogicalID

资源的逻辑 ID。

必需:是

TestTrafficRoute

负载均衡器将流量定向到目标组所用的侦听器。

必需:是

Type

资源的类型。AWS::ElasticLoadBalancingV2::Listener

必需:是

LogicalID

资源的逻辑 ID。

必需:否

TargetGroups

用作目标组以将流量传送到注册目标的资源的逻辑 ID。

必需:是