代码之家  ›  专栏  ›  技术社区  ›  cbp

如何在aws powershell工具中使用grant-ec2securitygroupings指定端口范围

  •  0
  • cbp  · 技术社区  · 7 年前

    我正在使用aws powershell工具和aws cli。

    我可以使用如下代码将入站规则添加到安全组:

    $IpRange = New-Object -TypeName Amazon.EC2.Model.IpRange
    $IpRange.CidrIp = "102.196.30.33/32"
    $IpRange.Description = "RDP"
    $IpPermission = New-Object Amazon.EC2.Model.IpPermission
    $IpPermission.IpProtocol = "tcp"
    $IpPermission.FromPort = 2089
    $IpPermission.ToPort = 2089
    $IpPermission.Ipv4Ranges = $IpRange
    Grant-EC2SecurityGroupIngress -GroupId sg-9773d0bb -IpPermission $IpPermission
    
    # Verify inbound rule has been correctly added
    aws ec2 describe-security-groups --group-ids sg-9773d0bb
    

    但是,如果我尝试添加第二个调用grant-ec2securitygroupings并指定端口范围,则第二个调用不起作用:

    $IpRange.Description = "FTP PASV"
    $IpPermission.FromPort = 2025
    $IpPermission.ToPort = 2030
    Grant-EC2SecurityGroupIngress -GroupId sg-9773d0bb -IpPermission $IpPermission
    
    # Verify inbound rule has been correctly added
    aws ec2 describe-security-groups --group-ids sg-9773d0bb
    

    不返回任何错误,但不添加规则。为什么不呢?

    更新 有些人建议改用aws cli authorize security group ingres规则,但是如果我向规则添加说明,则返回“invalid json”错误消息: enter image description here

    通常这样的事情会表明错误的引号转义有问题,但我不认为是这样。在这里,字符串周围有双引号,内部双引号使用反勾号或双引号转义: enter image description here

    2 回复  |  直到 6 年前
        1
  •  1
  •   John Hanley    6 年前

    答案分为两部分:

    第1部分:GRANT-EC2SCORITION GPROCESS。 在内部,此命令正在修改$ippermission。如果尝试将$iprange.cidrip更改为其他地址,则会看到错误:

    Grant-EC2SecurityGroupIngress : Cannot set values for both Ipv4Ranges and IpRanges properties on
    the IpPermission type which is part of the request. Consider using only Ipv4Ranges as IpRanges has
    been marked obsolete.
    

    解决方案是重新分配$ippermission。

    $IpRange.CidrIp = "102.196.30.33/32"
    $IpRange.Description = "FTP PASV"
    
    $IpPermission = New-Object Amazon.EC2.Model.IpPermission
    $IpPermission.IpProtocol = "tcp"
    $IpPermission.FromPort = 2025
    $IpPermission.ToPort = 2030
    $IpPermission.Ipv4Ranges = $IpRange
    
    Grant-EC2SecurityGroupIngress -GroupId $sg -IpPermission $IpPermission
    

    第2部分:PosithSead(Windows)AWS CLI:需要避免双引号并用双引号包围字符串。

    下面是一个工作示例:

    AWS EC2授权安全组入口--组ID SG-12345678--IP权限“[{”“ipprotocol\”:\“TCP\”,\“fromport\”:2025,\“toport\”:2030,\“ipranges\”:[{“cidrip\”:\“102.196.30.33/32\”,\“description\”:\“ftp pasv\”}]”

        2
  •  1
  •   John Rotenstein    6 年前

    如果你愿意坚持 AWS Command-Line Interface (CLI) ,这对我有效:

    aws ec2 authorize-security-group-ingress --group-id sg-xxx --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 2025, "ToPort": 2030, "IpRanges": [{"CidrIp": "102.196.30.33/32", "Description": "FTP PASV"}]}]'