我正在构建一个 CloudFormation 堆栈。我有
PortMappings
ECS 容器中的Web 应用程序,具有ContainerPort
s 9000 和 9002,映射到HostPort
s 80 和 443,以及- 一个应用负载均衡
AWS::ElasticLoadBalancingV2::LoadBalancer
器Listener
(TargetGroup
当我定义 aService
时,我只能指定一个负载均衡器元素;虽然LoadBalancers
是复数,但文档说只允许使用一个负载均衡器,并且指定两个负载均衡器元素不起作用。那么,如何映射两个端口呢?
这是我的 CloudFormation JSON 的服务部分,只有 HTTPS 部分,它可以工作。它可以扩展为将 HTTP 路由到同一个容器吗?如果没有,最好的解决方案是什么?
"Service": {
"Type": "AWS::ECS::Service",
"DependsOn": ["AutoScalingGroup", "HTTPSListener"],
"Properties": {
"Cluster": { "Ref": "Cluster" },
"DesiredCount": { "Ref": "InstanceCount" },
"LoadBalancers": [
{
"TargetGroupArn": { "Ref": "HTTPSTargetGroup" },
"ContainerName": "nginx",
"ContainerPort": "9002"
}
],
"Role": { "Ref": "ServiceRole" },
"TaskDefinition": { "Ref": "TaskDefinition" }
}
}
CloudFormation 解决方案将是理想的,但 API 解决方案也很重要。
我可以为 HTTP 创建第二个Service
,带有单独的负载均衡器和容器实例,但这既不简单也不经济。