0

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

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

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

4

1 回答 1

0

它不会返回 IP,因为 ECS 可以在运行状况检查失败、部署新容器版本或满足 ECS 自动扩展阈值的任何时候删除并重新创建任务。每次这些事件之一发生时,ECS 任务的 IP 都会改变。CloudFormation 不会参与这些活动,因此您不能依赖 CloudFormation 来保持目标群体的最新情况。

解决方案是将您的任务配置为在 ECS 服务中运行,并配置 ECS 服务以使用任务 IP更新负载均衡器的目标组。在这种情况下,您无需直接在目标组中设置目标 IP,您只需将目标组通知 ECS,它会确保目标 IP 始终保持同步。


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

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

于 2022-02-23T21:50:05.293 回答