Cloudformation / ECS - 如何直接从模板中检索任务定义 IP?

Cloudformation / ECS - How to retrieve taskdefinition IP directly from the template?

您知道是否有一种简单的方法可以从任务定义中检索容器的 IP?从我在 AWS documentation 中看到的情况来看,没有为 AWS::ECS::TaskDefinition 资源类型返回任何属性。

我需要这个 IP 才能在我的 AWS::ElasticLoadBalancingV2::TargetGroup 资源中设置它。

在 google 上进行一些搜索后,我可以使用弹性 IP 创建一个内部负载均衡器,将我的容器关联到它,然后使用 LB 的 IP。但我觉得有点矫枉过正。

它没有 return IP,因为 ECS 可以在运行状况检查失败、部署新容器版本或 ECS 任何时候删除并重新创建任务 auto-scaling 达到阈值。每次发生其中一个事件时,ECS 任务的 IP 都会发生变化。 CloudFormation 不会参与这些事件,因此您不能依赖 CloudFormation 来更新您的目标组。

解决方案是在 ECS 服务中将您的任务配置为 运行,并使用任务 IP 地址 configure the ECS service to keep a load balancer's target group updated。在这种情况下,您不直接在目标组中设置目标 IP,您只需将目标组告知 ECS,它会确保目标 IP 始终保持同步。


After some searches on google I could create an internal loadbalancer with an elastic IP, associate my container to it and then use the LB's IP. But I find it a bit overkill.

那根本行不通。那只会将您的问题从一个负载均衡器的目标组推到另一个负载均衡器的目标组。您仍然需要将 ECS 任务的 IP 与内部负载均衡器的目标组相关联,并且您会回到与现在相同的问题。