AWS:在 VPC 中撤销 SecurityGroupIngress

AWS: revokeSecurityGroupIngress within a VPC

我正在使用 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"}]}]'

尽管提供给 revokeSecurityGroupIngressIpv6Ranges|PrefixListIds|UserIdGroupPairs 属性是空数组,AWS SDK 仍在验证这些。

Source group ID missing. 错误似乎来自 UserIdGroupPairs

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

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