如何同时更改多个EC2实例的入站规则?



这是以下场景:

我在AWS上运行了大约50个EC2实例。我需要在所有50个实例的入站规则中打开端口9100。我怎样才能一次对所有的内容进行修改呢?我们在AWS中有任何选项来进行这样的更改吗?

使用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实例的子集应用安全组修改,则应用filter。

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

如果它们不共享这样的安全组,您可以自动完成此操作。例如,使用AWS CLI,您可以创建一个具有所需入站规则的新安全组,然后循环遍历50个实例并修改安全组以包含新规则。但是API不支持在一个API调用中这样做——这将是一个循环,为每个实例进行API调用。控制台也不支持一次为多个实例更改此设置。

存在类似的api,用于使用Python或其他语言代替CLI。

最新更新