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。邏輯 ID 必須是英數字元 (A-Za-z0-9),而且在範本內必須是唯一的。

必要:是

Type

掛接的類型。AWS::CodeDeploy::BlueGreen

必要:是

Properties

掛接的屬性。

必要:是

TrafficRoutingConfig

流量路由組態設定。

必要:否

預設組態是以時間為基礎的 Canary 流量轉移,具有 15% 步驟百分比和 5 分鐘的封裝時間。

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 並交付 Succeeded或 的結果Failed。如需詳細資訊,請參閱《 使用者指南》中的AppSpec 「勾點」一節AWS CodeDeploy

必要:否

BeforeInstall

在建立替換任務之前,用來執行任務的函數。

必要:否

AfterInstall

建立替代任務集後,用來執行任務,且與其中一個目標群組相關的函數。

必要:否

AfterAllowTestTraffic

在測試接聽程式將流量轉發至替換任務集後,用來執行任務的函數。

必要:否

BeforeAllowTraffic

在第二個目標群組與替換任務集建立關聯後,但在流量轉移到替換任務集前,用來執行任務的函數。

必要:否

AfterAllowTraffic

在第二個目標群組將流量轉發至替換任務集後,用來執行任務的函數。

必要:否

ServiceRole

的執行角色 CloudFormation ,用於執行藍綠部署。如需必要許可的清單,請參閱 IAM 藍/綠部署的許可

必要:否

Applications

指定 Amazon ECS應用程式的屬性。

必要:是

Target

必要:是

Type

資源的類型。

必要:是

LogicalID

資源的邏輯 ID。

必要:是

ECSAttributes

代表 Amazon ECS 應用程式部署各種需求的資源。

必要:是

TaskDefinitions

的邏輯 ID AWS::ECS::TaskDefinition 資源來執行包含 Amazon ECS應用程式的 Docker 容器。

必要:是

TaskSets

IDs 的邏輯 AWS::ECS::TaskSet 資源,以做為應用程式的任務集。

必要:是

TrafficRouting

指定用於流量路由的資源。

必要:是

ProdTrafficRoute

供負載平衡器用來將流量導向到您目標群組的接聽程式。

必要:是

Type

資源的類型。AWS::ElasticLoadBalancingV2::Listener

必要:是

LogicalID

資源的邏輯 ID。

必要:是

TestTrafficRoute

供負載平衡器用來將流量導向到您目標群組的接聽程式。

必要:是

Type

資源的類型。AWS::ElasticLoadBalancingV2::Listener

必要:是

LogicalID

資源的邏輯 ID。

必要:否

TargetGroups

用作目標群組的資源邏輯 ID,以將流量路由至已登記的目標。

必要:是