使用 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}"
希望有幫助。