我正在尝试将我的LoadBalancer和TargetGroup与DeploymentGroup链接,当我运行模板时,它说“无法指定Property 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
[不幸的是,目前CloudFormation中的CodeDeploy仅支持Lambda平台上的Blue / Green部署,但是模板中的部署配置“ CodeDeployDefault.AllAtOnce”适用于EC2平台。
CloudFormation尚不支持EC2平台的原因是,Blue / Green CodeDeploy部署与CloudFormation执行的资源管理从根本上是不一致的。从本质上讲,CodeDeploy中的蓝/绿功能将通过克隆现有的ASG来代表客户启动Auto Scaling组,一旦部署完成并稳定下来,它将删除源ASG。这种带外创建/删除从根本上违反了CloudFormation的核心功能,该功能的所有资源操作均源自CloudFormation本身。
作为替代方案,我建议您看一下此博客文章以及有关如何使用CodeDeploy [1、2]设置蓝色/绿色部署的相关示例。