Как ссылаться на `AWS::CodeDeploy::DeploymentGroup::LoadBalancerInfo?`
Я пытаюсь связать свои LoadBalancer и TargetGroup с DeploymentGroup, когда я запускаю шаблон, он сообщает: "Свойство LoadBalancerInfo не может быть указано". вот снимок моего шаблона. мой шаблон правильный?
EC2TargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckIntervalSeconds: 30
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 15
HealthyThresholdCount: 5
Matcher:
HttpCode: '200'
Name: !Ref EC2TargetGroupName
Port: 80
Protocol: HTTP
TargetGroupAttributes:
- Key: deregistration_delay.timeout_seconds
Value: '20'
UnhealthyThresholdCount: 3
VpcId: !Ref VPC
ApplicationLoadBalancer:
Type: AWS::ElasticLoadBalancingV2::LoadBalancer
Properties:
Scheme: internet-facing
SecurityGroups:
- Ref: ELBSecurityGroup
Subnets: !Ref Subnets
myAutoScalingGroup:
Type: AWS::AutoScaling::AutoScalingGroup
Properties:
AutoScalingGroupName: !Ref ScalingGroupName
MinSize: "1"
MaxSize: !Ref MaxSize
HealthCheckGracePeriod: 300
LaunchTemplate:
LaunchTemplateId: !Ref launchTemplate
Version: !GetAtt launchTemplate.LatestVersionNumber
MyDeploymentGroup:
Type: AWS::CodeDeploy::DeploymentGroup
Properties:
ApplicationName: !Ref ApplicationName
DeploymentConfigName: CodeDeployDefault.AllAtOnce
ServiceRoleArn: !GetAtt [PipelineRole, Arn]
LoadBalancerInfo:
TargetGroupInfoList:
- Name: !Ref EC2TargetGroupName ############ ERROR ######
DeploymentStyle:
DeploymentType: BLUE_GREEN
DeploymentOption: WITH_TRAFFIC_CONTROL
1 ответ
К сожалению, на данный момент CodeDeploy в CloudFormation поддерживает только развертывания Blue/Green на платформе Lambda, однако конфигурация развертывания "CodeDeployDefault.AllAtOnce" в вашем шаблоне предназначена для платформы EC2.
Причина, по которой платформа EC2 еще не поддерживается в CloudFormation, заключается в том, что Blue/Green CodeDeploy Deployments принципиально расходятся с управлением ресурсами, выполняемым CloudFormation. По сути, функция Blue/Green в CodeDeploy будет запускать группы автоматического масштабирования от имени клиента путем клонирования существующих ASG, а после завершения и стабилизации развертывания она удаляет исходную ASG. Такое внеполосное создание / удаление - это то, что принципиально противоречит основной функции CloudFormation, в которой все операции с ресурсами исходят из самого CloudFormation.
В качестве обходного пути я рекомендую вам взглянуть на это сообщение в блоге и связанный с ним пример того, как настроить Blue/Green Deployments с помощью CodeDeploy [1, 2].