Используя aws cli, я хотел бы иметь возможность выполнять нечеткий поиск части строки в «описании» группы безопасности.
Например, скажем, Группа Безопасности.сд-афафаф00содержит «Привет, кайпи» в поле «Описание».
Следующее работает, но только для полного совпадения, а не частичного.
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'Hey there kaipee')]]"
Я хотел бы иметь возможность отображать все группы безопасности, в описании которых содержится «kaipee», например:
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'kaipee')]]"
EDIT: Мне необходимо вернуть GroupId, CirdIp и данные поля Description, которые соответствуют результатам запрошенной строки.
решение1
Вы не против использования jq?
jq '.[][].IpPermissions[].IpRanges[] | select(.Description) | select(.Description | contains("kaipee"))'
решение2
Вы пробовали использовать запрос JMESPath для фильтрации SG, который вы ищете? Я провел некоторое тестирование самостоятельно и не могу найти способ приступить contains
к работе, но я обнаружил, что это, >
похоже, работает, даже когда строка поиска не находится в начале описания.
aws ec2 describe-security-groups --query "SecurityGroups[?Description > 'kaipee'].{Description: Description, GroupId: GroupId, IpRanges: IpPermissions[].IpRanges}"
Надеюсь, это поможет.