AWS CLI - 创建脚本以将我的 IP 添加到安全组
AWS CLI - Create script to add my IP to security group
我正在尝试创建一个脚本来将我的 IP 地址添加到 AWS VPC 安全组之类的东西
> aws ec2 modify-security-group-rules --group-id GROUPID\
> --security-group-rules SecurityGroupRuleId= RULEID\
SecurityGroupRule={IpProtocol:'tcp',FromPort:433,ToPort:433,CidrIpv4:'MYIP'}
但我不断收到不同的错误,例如 -
IpProtocol:tcp, type: <class 'str'>, valid types: <class 'dict'>
谁能帮忙找出正确的语法?
更新:
我尝试了一种似乎更好用的新语法
SecurityGroupRule={{IpProtocol=tcp},{FromPort=433},{ToPort=433},{CidrIpv4='IP'}}
但现在我从 AWS 得到了不同的错误 -
Invalid value for portRange. Must specify both from and to ports with TCP/UDP.
更新:供参考 - 这是我使用的解决方法 - (基于 John Rotenstein 的回答)
我没有修改规则,而是每次创建一个新规则并保存规则 ID,以便下次我可以删除它 运行 脚本
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 revoke-security-group-ingress \
--group-id GROUP_ID \
--security-group-rule-ids $(cat ruleid_1.txt)
aws ec2 authorize-security-group-ingress --group-id GROUP_ID\
--ip-permissions "IpProtocol"="tcp","FromPort"=433,"ToPort"=443,"IpRanges"="[{CidrIp=$IP/32,Description=Shalev}]"|jq '.SecurityGroupRules[0].SecurityGroupRuleId' -r > ruleid_1.txt
这是我用来将当前 IP 地址添加到安全组的脚本:
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 authorize-security-group-ingress --group-name XXX --protocol tcp --port 22 --cidr $IP/32 --output text
它使用 Akamai 检索我的 public IP 地址,然后将其添加到所需的安全组。
请注意,安全组中的规则数量是有限制的,因此最终您需要删除未使用的条目。
供参考 - 这是我使用的解决方法 - (基于 John Rotenstein 的回答)我没有修改规则,而是每次创建一个新规则并保存规则 ID,以便下次我可以删除它 运行 剧本
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 revoke-security-group-ingress \
--group-id GROUP_ID \
--security-group-rule-ids $(cat ruleid_1.txt)
aws ec2 authorize-security-group-ingress --group-id GROUP_ID\
--ip-permissions "IpProtocol"="tcp","FromPort"=433,"ToPort"=443,"IpRanges"="[{CidrIp=$IP/32,Description=Shalev}]"|jq '.SecurityGroupRules[0].SecurityGroupRuleId' -r > ruleid_1.txt
这是使用 aws CLI 更改规则的方法。
需要“ec2:ModifySecurityGroupRules”权限。
aws ec2 describe-security-group-rules help
aws ec2 modify-security-group-rules --group-id sg--???????
--security-group-rules SecurityGroupRuleId=sgr---???????,SecurityGroupRule={IpProtocol=tcp,FromPort=22,ToPort=22,CidrIpv4=IP/32,Description="Regra
Alterada"}
将参数 --security-group-rules
的值放在引号内。
以下两项似乎对我有用(在亚马逊 Linux 2)-
- 完整值使用双引号,单引号描述-
aws ec2 modify-security-group-rules --group-id sg-xxx
--security-group-rules "SecurityGroupRuleId=sgr-xxx,SecurityGroupRule={Description='SSH
Test1',CidrIpv4=x.x.x.x/32,IpProtocol=tcp,FromPort=22,ToPort=22}"
- 完整值使用单引号,双引号描述-
aws ec2 modify-security-group-rules --group-id sg-xxx
--security-group-rules 'SecurityGroupRuleId=sgr-xxx,SecurityGroupRule={Description="SSH
Test2",CidrIpv4=x.x.x.x/32,IpProtocol=tcp,FromPort=22,ToPort=22}'
我正在尝试创建一个脚本来将我的 IP 地址添加到 AWS VPC 安全组之类的东西
> aws ec2 modify-security-group-rules --group-id GROUPID\
> --security-group-rules SecurityGroupRuleId= RULEID\
SecurityGroupRule={IpProtocol:'tcp',FromPort:433,ToPort:433,CidrIpv4:'MYIP'}
但我不断收到不同的错误,例如 -
IpProtocol:tcp, type: <class 'str'>, valid types: <class 'dict'>
谁能帮忙找出正确的语法?
更新: 我尝试了一种似乎更好用的新语法
SecurityGroupRule={{IpProtocol=tcp},{FromPort=433},{ToPort=433},{CidrIpv4='IP'}}
但现在我从 AWS 得到了不同的错误 -
Invalid value for portRange. Must specify both from and to ports with TCP/UDP.
更新:供参考 - 这是我使用的解决方法 - (基于 John Rotenstein 的回答) 我没有修改规则,而是每次创建一个新规则并保存规则 ID,以便下次我可以删除它 运行 脚本
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 revoke-security-group-ingress \
--group-id GROUP_ID \
--security-group-rule-ids $(cat ruleid_1.txt)
aws ec2 authorize-security-group-ingress --group-id GROUP_ID\
--ip-permissions "IpProtocol"="tcp","FromPort"=433,"ToPort"=443,"IpRanges"="[{CidrIp=$IP/32,Description=Shalev}]"|jq '.SecurityGroupRules[0].SecurityGroupRuleId' -r > ruleid_1.txt
这是我用来将当前 IP 地址添加到安全组的脚本:
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 authorize-security-group-ingress --group-name XXX --protocol tcp --port 22 --cidr $IP/32 --output text
它使用 Akamai 检索我的 public IP 地址,然后将其添加到所需的安全组。
请注意,安全组中的规则数量是有限制的,因此最终您需要删除未使用的条目。
供参考 - 这是我使用的解决方法 - (基于 John Rotenstein 的回答)我没有修改规则,而是每次创建一个新规则并保存规则 ID,以便下次我可以删除它 运行 剧本
IP=`curl -s http://whatismyip.akamai.com/`
aws ec2 revoke-security-group-ingress \
--group-id GROUP_ID \
--security-group-rule-ids $(cat ruleid_1.txt)
aws ec2 authorize-security-group-ingress --group-id GROUP_ID\
--ip-permissions "IpProtocol"="tcp","FromPort"=433,"ToPort"=443,"IpRanges"="[{CidrIp=$IP/32,Description=Shalev}]"|jq '.SecurityGroupRules[0].SecurityGroupRuleId' -r > ruleid_1.txt
这是使用 aws CLI 更改规则的方法。 需要“ec2:ModifySecurityGroupRules”权限。
aws ec2 describe-security-group-rules help
aws ec2 modify-security-group-rules --group-id sg--???????
--security-group-rules SecurityGroupRuleId=sgr---???????,SecurityGroupRule={IpProtocol=tcp,FromPort=22,ToPort=22,CidrIpv4=IP/32,Description="Regra
Alterada"}
将参数 --security-group-rules
的值放在引号内。
以下两项似乎对我有用(在亚马逊 Linux 2)-
- 完整值使用双引号,单引号描述-
aws ec2 modify-security-group-rules --group-id sg-xxx
--security-group-rules "SecurityGroupRuleId=sgr-xxx,SecurityGroupRule={Description='SSH
Test1',CidrIpv4=x.x.x.x/32,IpProtocol=tcp,FromPort=22,ToPort=22}"
- 完整值使用单引号,双引号描述-
aws ec2 modify-security-group-rules --group-id sg-xxx
--security-group-rules 'SecurityGroupRuleId=sgr-xxx,SecurityGroupRule={Description="SSH
Test2",CidrIpv4=x.x.x.x/32,IpProtocol=tcp,FromPort=22,ToPort=22}'