【问题标题】:A client error (UnknownParameter) occurred when calling the AuthorizeSecurityGroupEgress operation: The parameter CidrIp is not recognized调用 AuthorizeSecurityGroupEgress 操作时出现客户端错误(UnknownParameter):参数 CidrIp 无法识别
【发布时间】:2015-06-26 02:25:11
【问题描述】:

我正在尝试使用 aws cli 为安全组创建出站规则。我使用了以下命令

aws ec2 authorize-security-group-egress --cli-input-json file://auth_sec_grp_egress1.json

这给了我错误:

A client error (UnknownParameter) occurred when calling the AuthorizeSecurityGroupEgress operation: The parameter CidrIp is not recognized

输入的json文件auth_sec_grp_egress1.json

{
    "DryRun": false, 
    "GroupId": "sg-99b2f2fd", 
    "IpProtocol": "tcp", 
    "FromPort": 123, 
    "ToPort": 123, 
    "CidrIp": "172.24.102.126/32"
}

我查看了 AWS documetation 的错误代码 UnknownParameter ,上面写着

提供了未知或无法识别的参数。要求 可能导致此错误的原因包括提供拼写错误的参数 或指定 API 版本不支持的参数。

但是我作为输入提供的 json 是由命令生成的

aws ec2 authorize-security-group-egress --generate-cli-skeleton > auth_sec_grp_egress1.json

我正在使用 aws cli 版本 - aws-cli/1.7.22 Python/2.7.9 Windows/7

【问题讨论】:

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


    【解决方案1】:

    --ip-permissions/IpPermissions 可以正常工作

    {
        "DryRun": false, 
        "GroupId": "sg-99b2f2fd",
        "IpPermissions": [
            {
                "IpProtocol": "tcp",
                "FromPort": 123,
                "ToPort": 123,
                "IpRanges": [
                    {
                      "CidrIp": "172.24.102.126/32"
                    }
                ]
            }
        ]
    }
    

    【讨论】:

    • 当我这样做时,我得到 The specified rule does not exist in this security group. (我试图从规则中删除单个 CIDR 范围,而不是整个规则......)(我无法添加新的一 - 组已满,这就是为什么我要删除一些范围)
    【解决方案2】:

    TuxLife 的回答是正确的。我不知道为什么它被否决了:-/我将添加我对 Java SDK 的贡献,因为我遇到了同样的错误。

    我试图使用 Java SDK 撤销 SecurityGroup 的出口规则。

    ec2.revokeSecurityGroupEgress(new RevokeSecurityGroupEgressRequest()
         .withGroupId(id)
         .withCidrIp("0.0.0.0/0");
    

    关于 CidrIp,我遇到了同样的错误。这样做的方式似乎是错误的。我仍然不知道为什么,但我将 CidrIp 参数移至 IpPermissions / IpRanges 并且它起作用了。

    ec2.revokeSecurityGroupEgress(new RevokeSecurityGroupEgressRequest()
         .withGroupId(id)
         .withIpPermissions(new ArrayList<IpPermission>() {{
             this.add(new IpPermission()
                     .withIpRanges(new ArrayList<String>() {{
                         this.add("0.0.0.0/0"); 
                     }})
                     .withIpProtocol("-1"));
         }}));
    

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 2014-10-05
      • 1970-01-01
      • 2019-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多