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}"
お役に立てれば幸いです。