如何透過 aws cli 檢查安全性群組描述是否包含特定字串?

如何透過 aws cli 檢查安全性群組描述是否包含特定字串?

使用 aws cli,我希望能夠模糊搜尋安全性群組「描述」中字串的一部分。

例如,假設安全群組SD-afafaf00描述欄位中包含“嘿,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}"

希望有幫助。

相關內容