【问题标题】:AWS CLI - Create script to add my IP to security groupAWS CLI - 创建脚本以将我的 IP 添加到安全组
【发布时间】:2022-01-03 20:43:45
【问题描述】:

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

谁能帮忙找出正确的语法?

更新: 我尝试了一种似乎效果更好的新语法

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

但现在我从 AWS 收到不同的错误 -

portRange 的值无效。必须使用 TCP/UDP 指定 from 和 to 端口。

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

【问题讨论】:

  • =RULEID 之间应该没有空格,并且应该有一个 , 而不是那个和 SecurityGroupRule 之间的空格
  • 谢谢你的回答我照你说的做了,但仍然得到 Invalid type for each parameter Invalid type for parameter SecurityGroupRules[0].SecurityGroupRule, value: IpProtocol:tcp, type: ,有效类型:

标签: bash amazon-web-services aws-cli amazon-vpc


【解决方案1】:

这是一种使用 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"}

【讨论】:

    【解决方案2】:

    这是我用来将当前 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 地址,然后将其添加到所需的安全组。

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

    【讨论】:

    • 这是一个很好的解决方案,我考虑过,我每次都设法添加一个新规则但我不想添加越来越多的规则,它不安全,正如你所说有一个限制这个这就是为什么我想修改相同的规则知道可能是什么问题吗?我已经从端口和端口提供了,但仍然出现此错误...
    • 我认为“修改”规则实际上需要您提供所有规则。您指定的任何规则都将成为 only 规则。
    • 哦,有道理,无论如何我找到了解决方法,我将编辑我的问题以供参考
    • 请将解决方案添加为答案,而不是将其放入问题中。这使以后的读者更容易找到。您可以回答自己的问题。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-27
      • 2020-10-16
      • 2017-10-20
      • 1970-01-01
      • 2022-01-22
      • 2021-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多