使用 aws cli,我希望能够模糊搜索安全组的“描述”中的字符串的一部分。
例如,假设安全组sd-afafaf00在描述字段中包含“Hey there kaipee”。
以下方法仅适用于完全匹配,不适用于部分匹配
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')]]"
编辑:我需要返回 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}"
希望有所帮助。