如何一次性批量修改多台AWS EC2实例的安全组入站规则
批量修改EC2入站规则开放9100端口的实现方案
AWS本身原生支持这类批量操作,首先需要明确:EC2的入站放行规则是绑定在安全组上,而非直接关联单个EC2实例,所以所有操作都围绕安全组展开,以下是两种最常用的落地方式:
方法1:实例关联少量安全组(推荐,操作成本最低)
如果你的50台实例只关联了1个或少数几个安全组,直接修改对应安全组规则即可,一次修改所有关联该安全组的实例都会自动生效:
- 进入AWS控制台EC2服务页,左侧导航栏选择「安全组」
- 筛选出50台实例关联的所有安全组,批量选中后点击「操作」-「编辑入站规则」
- 添加新规则:类型选
自定义TCP,端口范围填9100,源地址按需填写(内部使用建议填VPC的CIDR段,公网开放请谨慎使用0.0.0.0/0),保存后规则立即生效。
方法2:实例分散关联大量不同安全组
如果你的50台实例绑定了很多不同的安全组,不想逐个修改原有安全组,可以新建一个专门放行9100端口的安全组,再批量绑定到所有实例:
步骤1:新建专用安全组
创建一个新的安全组,仅添加入站规则:TCP 9100 + 你指定的源地址,出站规则保留默认全允许即可。
注意:单个EC2实例最多可绑定5个安全组,若你的实例已达绑定上限,请选择方法1操作
步骤2:批量绑定安全组
控制台操作
- 进入EC2实例列表页,勾选所有需要修改的50台实例
- 点击顶部菜单栏「操作」-「安全」-「更改安全组」
- 搜索你刚才创建的专用安全组,勾选添加后点击保存,所有实例会立即同步生效9100端口的放行规则。
CLI命令行操作
如果习惯用命令行批量处理,可以执行以下命令(替换sg-xxxxxxx为你新建的专用安全组ID):
# 该命令会保留实例原有所有安全组,仅新增指定的9100端口专用安全组 aws ec2 describe-instances --query 'Reservations[*].Instances[*].InstanceId' --output text | xargs -I {} aws ec2 modify-instance-attribute --instance-id {} --groups $(aws ec2 describe-instance --instance-id {} --query 'Reservations[0].Instances[0].SecurityGroups[*].GroupId' --output text) sg-xxxxxxx
大规模场景补充方案
如果需要跨账号、跨区域管控数千台实例的端口规则,可以使用AWS Systems Manager自动化运行手册、或者AWS Config批量修复规则实现全自动化的批量配置,不用手动操作实例或安全组。
内容的提问来源于stack exchange,提问作者Deekshith Reddy Inugala
相关产品推荐
相关产品推荐

