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

如何编写AWS CLI脚本将自身IP添加至AWS VPC安全组并解决语法报错

AWS CLI修改VPC安全组规则解决方案

报错原因说明

  • 错误IpProtocol:tcp, type: <class 'str'>, valid types: <class 'dict'>:原因是SecurityGroupRule参数格式不符合AWS CLI规范,你使用了JSON风格的冒号分隔键值,且没有正确声明嵌套字典结构,导致CLI将整个规则内容识别为字符串而非字典对象。
  • 错误Invalid value for portRange. Must specify both from and to ports with TCP/UDP.:原因是你将SecurityGroupRule下的每个属性单独套了一层大括号,导致CLI无法识别端口、协议属于同一条规则配置,判定你缺少必填的起止端口参数。

正确的modify-security-group-rules命令语法

修改现有安全组规则的标准写法如下,注意所有规则属性要放在同一个SecurityGroupRule字典内,键值用等号分隔,无多余嵌套大括号:

aws ec2 modify-security-group-rules --group-id 替换为你的安全组ID \
--security-group-rules SecurityGroupRuleId=替换为你的现有规则ID,\
SecurityGroupRule={IpProtocol=tcp,FromPort=443,ToPort=443,CidrIpv4=替换为你的IP/32}

注意:单IP访问的Cidr地址必须带/32掩码后缀,如果你需要开放HTTPS端口请确认端口号为443,避免笔误写错端口

推荐生产使用的替代方案

你采用的「删除旧规则+新增新规则」的方案稳定性更高,可避免修改规则时的ID匹配异常,完整可运行的脚本如下:

# 调用公网接口获取当前设备的公网IP
IP=`curl -s http://whatismyip.akamai.com/`
# 删除上一次运行添加的规则,首次运行前请手动创建一条规则并将ID写入ruleid_1.txt文件
aws ec2 revoke-security-group-ingress \
         --group-id 替换为你的安全组ID \
         --security-group-rule-ids $(cat ruleid_1.txt)
# 新增当前IP的入站访问规则,提取新生成的规则ID存入文件供下次删除使用
aws ec2 authorize-security-group-ingress --group-id 替换为你的安全组ID \
--ip-permissions IpProtocol=tcp,FromPort=443,ToPort=443,IpRanges="[{CidrIp=$IP/32,Description=自定义规则备注}]" | jq '.SecurityGroupRules[0].SecurityGroupRuleId' -r > ruleid_1.txt

注意:运行该脚本需要提前安装jq工具,用于解析AWS返回的JSON数据提取规则ID

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:54:04