Назад | Перейти на главную страницу

AWS cli filter не применяется

Я хочу получать некоторые значения от AWS SecurityGroup и я использую следующую команду:

aws ec2 describe-security-groups --group-ids $GROUP \
  --filters 'Name=ip-permission.from-port,Values=22 Name=ip-permission.to-port,Values=22' \
  --query 'SecurityGroups[*].IpPermissions[*].{cidr:Ipv6Ranges[*].CidrIpv6,from:FromPort,to:ToPort}' \
  --output json

Однако в выходных данных представлены все существующие диапазоны портов, тогда как ожидается только порт 22:

[
    [
        {
            "cidr": [
                "::/0"
            ],
            "from": 80,
            "to": 80
        },
        {
            "cidr": [
                "2001::snip/128"
            ],
            "from": 22,
            "to": 22
        },
        {
            "cidr": [
                "::/0"
            ],
            "from": 443,
            "to": 443
        }
    ]
]

Кажется, мой фильтр не применяется. Любая подсказка приветствуется!

Фильтр работает правильно. Вы запросили все группы безопасности, которые содержат (но не ограничиваются ими) ToPort == 22 и FromPort == 22. Ваш запрос должен ограничивать то, что выводится. Вы можете сделать это, добавив:

?ToPort == `22` 

в часть запроса IpPermissions [], чтобы дополнительно ограничить вывод.

Следующее должно дать вам результат, который вы ищете:

aws ec2 describe-security-groups --filters 'Name=ip-permission.from-port,Values=22 Name=ip-permission.to-port,Values=22'   --query 'SecurityGroups[*].IpPermissions[?ToPort == `22`].{cidr:Ipv6Ranges[*].CidrIpv6,from:FromPort,to:ToPort}' --output json

Ссылки

Вывод использования CLI