AWS CLI-创建脚本将我的IP添加到安全组



我正在尝试创建一个脚本,将我的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,类型:<类"str">,有效类型:<类"dict">

有人能帮忙找出正确的语法吗?

更新:我尝试了一种新的语法,它似乎更适合

SecurityGroupRule={{IpProtocol=tcp},{FromPort=433},{ToPort=433},{CidrIpv4='IP'}}

但现在我从AWS得到了一个不同的错误-

portRange的值无效。必须使用TCP/UDP同时指定从端口和到端口。

UPDATE:仅供参考-这是我使用的解决方法-(基于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

将参数--security-group-rules的值放在引号内。以下两项似乎都适用于我(在AmazonLinux2上(-

  • 使用双引号表示完整值,并用单引号表示描述-
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}'

供参考-这是我使用的解决方法-(基于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"}

以下是我用来将当前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检索我的公共IP地址,然后将其添加到所需的安全组中。

请注意,安全组中的规则数量是有限制的,因此最终需要删除未使用的条目。

SecurityGroupRule使用变量。

类似:

IP=`curl -s http://whatismyip.akamai.com/`
security_group_rules={CidrIpv4=$IP/32,IpProtocol=tcp,FromPort=443,ToPort=443}
aws ec2 modify-security-group-rules 
--group-id sg-123 
--security-group-rules SecurityGroupRuleId=sgr-123,SecurityGroupRule=$security_group_rules

它对我来说非常有效。

附言:这是我的第一个答案。

最新更新