可以为ECS服务(例如蓝/绿)设置CF堆栈,为前端ELBv2设置单独的堆栈吗?我已尝试在ECS堆栈中使用ELB TargetGroup,在另一个堆栈中尝试使用负载均衡器和侦听器,但构建目标组时Cloud Formation报告并出错
" targetGroupArn xxxxxx的目标组没有关联的负载均衡器。"
然而,目标组资源中没有任何内容可以定义依赖于它的任何负载均衡器:
ELB2TargetGroup:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckIntervalSeconds: 60
UnhealthyThresholdCount: 10
HealthCheckPath: /
Port: !Ref ALBPort
Protocol: !Ref ALBProtocol
VpcId:
Fn::ImportValue: !Sub "${ECSClusterStack}-ClusterVPC"
答案 0 :(得分:1)
希望您已经解决了此问题。但是,以防万一有人来这里寻找同样的问题。
从本质上讲,您没有做错任何事情。只是,您需要一个侦听器规则来将目标组与 Load Balancer侦听器关联。
这是一个示例TargetGroup资源:
...
ExampleTG:
Type: AWS::ElasticLoadBalancingV2::TargetGroup
Properties:
HealthCheckIntervalSeconds: 30
HealthCheckProtocol: HTTP
HealthCheckTimeoutSeconds: 5
HealthyThresholdCount: 2
HealthCheckPath: /healthcheck
HealthCheckPort: 80
Matcher:
HttpCode: '200'
Name: !Join [ "-", [ Example, !Ref SomeParameter] ]
Port: 80
Protocol: HTTP
TargetGroupAttributes:
- Key: deregistration_delay.timeout_seconds
Value: '15'
UnhealthyThresholdCount: 3
VpcId:
'Fn::ImportValue': !Sub '${ParentVPCStack}-vpc'
我想你已经有了。现在您只需要一个ListernerRule:
...
ExampleListernerRule:
Type: AWS::ElasticLoadBalancingV2::ListenerRule
Properties:
Actions:
- Type: forward
TargetGroupArn: !Ref ExampleTG
Conditions:
- Field: host-header
Values:
- "example.*"
ListenerArn:
'Fn::ImportValue': !Sub '${ParentLBStack}-existing-listener'
Priority: 1
您可以轻松地从现有堆栈(在您的情况下为ELBv2)导入侦听器,该堆栈将负载均衡器与目标组相关联。