Ошибка клиента (UnknownParameter) при вызове операции AuthorizeSecurityGroupEgress: параметр CidrIp не распознан

Я пытаюсь создать исходящее правило для группы безопасности с помощью 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 для кода ошибки 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


person Subham Tripathi    schedule 19.04.2015    source источник


Ответы (2)


Он отлично работает с --ip-permissions/IpPermissions

{
    "DryRun": false, 
    "GroupId": "sg-99b2f2fd",
    "IpPermissions": [
        {
            "IpProtocol": "tcp",
            "FromPort": 123,
            "ToPort": 123,
            "IpRanges": [
                {
                  "CidrIp": "172.24.102.126/32"
                }
            ]
        }
    ]
}
person Tuxlife    schedule 28.01.2016
comment
Когда я это делаю, вместо этого я получаю The specified rule does not exist in this security group. (я пытаюсь удалить из правила один диапазон CIDR, а не все правило...) (я не могу добавить новый - группа заполнена, поэтому Я пытаюсь удалить некоторые диапазоны) - person Gert van den Berg; 08.01.2021

Ответ TuxLife был правильным. Я не знаю, почему за него проголосовали :-/ Я добавлю свой вклад о Java SDK, потому что я получал ту же ошибку.

Я пытался отозвать правило выхода SecurityGroup с помощью Java SDK.

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"));
     }}));
person JonDoe297    schedule 28.07.2016