如何根据运行中的容器动态修改正在运行的ECS实例的安全组?

时间:2018-06-08 11:52:42

标签: amazon-web-services docker aws-lambda amazon-ecs aws-security-group

我正在尝试从我的ECS群集部署不同类型的docker容器。根据容器的类型,我需要允许某些入站和出站端口公开。如何修改部署容器的现有ECS实例安全组,并以动态方式添加此附加安全组规则?我正在寻找自动化解决方案;如果容器移动到不同的实例,我需要恢复ECS实例的原始安全组。

  1. 我查看了awsvpc网络模式以动态创建安全组并将其分配给ENI,但后来我需要一个公共IP和一个特定端口来为每个ECS实例公开。基于NAT的网络通过在私有子网中部署ECS实例以将其暴露给公众而不适用于我的用例。

  2. awsvpc可以为fargate部署提供公共IP,但是对于我的用例恰好是一个有状态容器以及EFS挂载,fargate不会有太多帮助。

1 个答案:

答案 0 :(得分:0)

我想您可能想重新访问awsvpc网络模式。听起来它会满足您的需求,因为您已经在这里解释过了。在awsvpc模式下,为您的任务分配新的ENI,并将其映射到任务的网络命名空间。从您的任务角度来看,它看起来像是在主机模式网络中运行;您的容器可以直接访问您的网络。您将使用现有的安全组,该安全组将允许入站流量到您的任务容器公开的端口。

或者,如果您确实需要根据任务放置操作安全组,则应考虑使用lambda函数以适当的操作响应ECS CloudWatch事件。这在https://docs.aws.amazon.com/AmazonECS/latest/developerguide/cloudwatch_event_stream.html

中有记录