You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何一次性为多个AWS EC2实例/安全组添加入站规则?

AWS批量为安全组添加入站规则方案

核心结论

可以一次性为多个安全组批量添加入站规则,无需逐个操作。EC2实例的访问规则由其关联的安全组决定,直接批量操作安全组是最高效的方式,不用单独处理每个EC2实例。

你提供的Python代码问题及修正

你给出的代码存在几个关键问题,无法实现批量操作70个安全组的需求:

  1. get_all_security_groups的group_ids参数需要传入列表格式,而非逐个传参;
  2. 代码中取了结果的[0],只对第一个安全组执行了授权操作,其余69个完全没处理;
  3. 参数搭配错误:ip_protocol="-1"代表所有协议,但同时指定from_port=3389(RDP端口)逻辑矛盾,RDP应该使用TCP协议,且from_port和to_port需保持一致。

修正后的可运行代码如下:

import boto3  # 建议使用boto3而非旧版boto,boto已停止维护
ec2 = boto3.client('ec2')

# 把所有目标安全组ID放到列表里
security_group_ids = ['sg-1', 'sg-2', 'sg-3', ..., 'sg-71']

# 遍历每个安全组,添加入站规则
for sg_id in security_group_ids:
    try:
        ec2.authorize_security_group_ingress(
            GroupId=sg_id,
            IpPermissions=[
                {
                    'IpProtocol': 'tcp',
                    'FromPort': 3389,
                    'ToPort': 3389,
                    'IpRanges': [{'CidrIp': 'X.X.X.X/24'}]
                }
            ],
            DryRun=False  # 如果想先测试不实际修改,设为True
        )
        print(f"安全组 {sg_id} 规则添加成功")
    except Exception as e:
        print(f"安全组 {sg_id} 规则添加失败: {str(e)}")

其他高效批量操作方式

如果你不想写代码,也可以用以下方法:

  • AWS CLI批量操作:编写一个简单的shell脚本,遍历安全组ID列表执行授权命令,示例命令:
    # 先把安全组ID存到文件sg_list.txt,每行一个
    while read sg_id; do
        aws ec2 authorize-security-group-ingress --group-id $sg_id --protocol tcp --port 3389 --cidr X.X.X.X/24
    done < sg_list.txt
    
  • AWS控制台批量选择:在安全组列表页面,按住Ctrl/Shift键多选安全组(注意控制台单次最多支持选择20个,70个需要分4次操作),然后点击"操作"->"编辑入站规则",添加规则后保存即可。

内容的提问来源于stack exchange,提问作者01Tech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 07:35:23