如何通过 aws cli 检查安全组描述是否包含特定字符串?

如何通过 aws cli 检查安全组描述是否包含特定字符串?

使用 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}"

希望有所帮助。

相关内容