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

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

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

  • 我查看了 awsvpc 网络模式以动态创建一个安全组并将其分配给 ENI,但是我需要一个公共(public) ip 和一个特定端口来公开每个 ECS 实例。通过在私有(private)子网中部署 ECS 实例以将其公开给公众的基于 NAT 的网络不适用于我的用例。
  • awsvpc 可以为 fargate 部署提供公共(public) IP,但是对于我的用例(恰好是一个有状态的容器以及 EFS 挂载),fargate 不会有太大帮助。
  • 最佳答案

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

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

    关于amazon-web-services - 如何根据其中运行的容器动态修改正在运行的ECS实例的安全组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50760075/

    相关文章:

    linux - Docker Redis 使用 -v 以持久存储启动时给出错误 (chown : changing ownership of '.' : Permission denied)

    node.js - 当从 Nodejs 中的 Lambda 返回音频缓冲区时,AWS ALB 返回 502 Bad Gateway

    elasticsearch - Amazon CloudWatch SubscriptionFilter Elasticsearch Terraform 支持

    python - 如何使用 Lambda 代理通过 AWS Lambda 抛出 HTTP 错误代码?

    amazon-web-services - AWS Auto Scaling - 在服务器终止前缩减规模等待 x 分钟

    amazon-web-services - 在 Cloud Trail 中检测到存储桶的 S3 存储桶策略不正确

    linux - 如何防止从缓存中加载 docker 图像?

    amazon-web-services - 缺失区域 : could not find region configuration in golang and aws sns

    docker - 如何使用Docker-Compose文件运行Phpmyadmin,Mysql和Apache Tomcat?

    amazon-web-services - 如何从我的 EC2 实例调用 AWS Lambda 函数?