gpt4 book ai didi

amazon-web-services - 如何将ELB的80和443端口映射到同一个ECS容器?

转载 作者:行者123 更新时间:2023-12-03 07:16:13 24 4
gpt4 key购买 nike

我正在构建一个 CloudFormation 堆栈。我有

  • ECS 容器中的 Web 应用程序,具有用于 ContainerPort 9000 和 9002 的 PortMappings,映射到 HostPort 80 和 443,以及
  • 应用程序负载均衡器 (AWS::ElasticLoadBalancingV2::LoadBalancer),具有用于端口 80 上的 HTTP 和 HTTPS 的 ListenerTargetGroup在端口 443 上

当我定义一个Service时,我只能指定一个负载均衡器元素;尽管 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,使用单独的负载均衡器和容器实例,但这既不简单也不经济。

最佳答案

我建议选择以下选项之一:

a) 在同一负载均衡器的两个不同任务定义处注册任务(容器)作为容器启动过程的一部分,而不是使用 ECS 服务的内置功能。<​​/p>

b) 定义另一个 ECS 服务,每个服务都与其自己的目标组连接。两个目标组都与相同的 ALB 相关联。

关于amazon-web-services - 如何将ELB的80和443端口映射到同一个ECS容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40315352/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com