Я хочу получать некоторые значения от 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
Ссылки