代码之家  ›  专栏  ›  技术社区  ›  Sam J

AWS:VPC中的revokecuritygroupingres

  •  0
  • Sam J  · 技术社区  · 6 年前

    我正在使用javascript SDK根据IP地址(cidr块)撤销非默认vpc安全组的入口,但是得到一个错误 Source Group ID missing. -

    (node:8514) UnhandledPromiseRejectionWarning: MissingParameter: Source group ID missing.
    

    我可以将同一个安全组id设置为“SourceSecurityGroupOwnerId”,但这不起作用(而且这并不是我真正想要的)。

    请注意 actualIpPermissions 从ec2sdk.describeSecurityGroups.SecurityGroups[0].IpPermissions中检索,未硬编码。

    我的代码:

        const actualIpPermissions = [{
            FromPort:22, 
            IpProtocol:"tcp",
            IpRanges:[
              {CidrIp:"2.123.116.234/32",Description:"SSH some place"},
              {CidrIp:"203.44.22.112/32",Description:"SSH from somewhere else"}
            ],
            Ipv6Ranges:[],
            PrefixListIds:[],
            ToPort:22,
            UserIdGroupPairs:[]
          }]
    
        const params = {
          GroupId: 'sg-111111',
          IpPermissions: actualIpPermissions
        }
    
        await ec2Sdk.revokeSecurityGroupIngress(params).promise()
    

    我使用的是aws sdk js版本2.275.1

    在aws cli中运行等效命令可以正常工作:

    aws ec2 revoke-security-group-ingress --group-id sg-111111 --ip-permissions '[{"IpProtocol": "tcp", "FromPort": 22, "ToPort": 22, "IpRanges": [{"CidrIp": "2.123.116.234/32", "Description": "SSH some place"},{"CidrIp":"203.44.22.112/32", "Description":"SSH from somewhere else"}]}]'
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Sam J    6 年前

    虽然 Ipv6Ranges | PrefixListIds | UserIdGroupPairs 提供给 revokeSecurityGroupIngress 是空数组,AWS SDK仍在验证这些数组。

    看来 Source group ID missing. 错误来自 用户IDGroupPairs .

    为了安全起见,如果不是严格要求,最好删除任何空数组/对象。

    我不确定这是否适用于所有的SDK函数,但它适用于 authorizeSecurityGroupIngress 功能也