我正在尝试从我的ECS群集部署不同类型的docker容器。根据容器的类型,我需要允许某些入站和出站端口公开。如何修改部署容器的现有ECS实例安全组,并以动态方式添加此附加安全组规则?我正在寻找自动化解决方案;如果容器移动到不同的实例,我需要恢复ECS实例的原始安全组。
我查看了awsvpc网络模式以动态创建安全组并将其分配给ENI,但后来我需要一个公共IP和一个特定端口来为每个ECS实例公开。基于NAT的网络通过在私有子网中部署ECS实例以将其暴露给公众而不适用于我的用例。
awsvpc可以为fargate部署提供公共IP,但是对于我的用例恰好是一个有状态容器以及EFS挂载,fargate不会有太多帮助。
答案 0 :(得分:0)
我想您可能想重新访问awsvpc网络模式。听起来它会满足您的需求,因为您已经在这里解释过了。在awsvpc模式下,为您的任务分配新的ENI,并将其映射到任务的网络命名空间。从您的任务角度来看,它看起来像是在主机模式网络中运行;您的容器可以直接访问您的网络。您将使用现有的安全组,该安全组将允许入站流量到您的任务容器公开的端口。
或者,如果您确实需要根据任务放置操作安全组,则应考虑使用lambda函数以适当的操作响应ECS CloudWatch事件。这在https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_event_stream.html
中有记录