【问题标题】:How to make changes in Inbound rules of multiple EC2 instances at once?如何一次更改多个 EC2 实例的入站规则?
【发布时间】:2021-10-05 03:25:08
【问题描述】:

这是以下场景:

我在 AWS 中运行了大约 50 个 EC2 实例。我需要在所有 50 个实例的入站规则中打开端口 9100。我怎样才能一次对所有这些进行更改。我们在 AWS 中是否有任何选项可以进行这样的更改?

【问题讨论】:

  • IaC 是你的朋友
  • 这是一个样题,还是您的实际要求?如果是真实的,请告诉我们是否所有实例都具有相同的安全组。
  • 这是实际需求,所有实例都有不同的安全组。

标签: amazon-web-services networking port aws-cli aws-security-group


【解决方案1】:

使用 AWS CLI 获取每个 EC2 实例的安全组 ID 并更新安全组。

以下命令获取每个 EC2 实例的第一个安全 id(仅获取第一个安全组,避免在多个安全组上添加相同的规则,当多个安全组可以附加到一个 EC2 实例时)并更新入站规则。

aws ec2 describe-instances --query 'Reservations[].Instances[].SecurityGroups[0].GroupId' --output=text | xargs -I {} aws ec2 authorize-security-group-ingress --group-id {} --protocol tcp --port 9100 --cidr 10.10.10.10/32

您可以根据您的要求修改此命令,如果您只想对 EC2 实例的子集应用安全组修改,请应用过滤器。

【讨论】:

    【解决方案2】:

    如果所有实例都已经关联了一个特定的安全组,您可以简单地对该安全组进行一次编辑,然后它将影响所有 50 个实例。

    如果他们不共享这样的安全组,您可以自动完成此操作。例如,使用 AWS CLI,您可以使用具有所需入站规则的 create a new security group,然后遍历 50 个实例和 modify the security groups 以包含新实例。但是 API 不支持在 one API 调用中执行此操作——这将是一个循环,为每个实例进行 API 调用。控制台也不支持同时为多个实例更改此设置。

    存在用于使用 Python 或其他语言而不是 CLI 的类似 API。

    【讨论】:

      猜你喜欢
      • 2017-11-27
      • 2017-04-21
      • 1970-01-01
      • 2015-09-22
      • 2018-08-25
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2012-11-07
      相关资源
      最近更新 更多