
Mithilfe von AWS CLI möchte ich eine unscharfe Suche nach einem Teil einer Zeichenfolge in der „Beschreibung“ einer Sicherheitsgruppe durchführen können.
Nehmen wir zum Beispiel Security Groupsd-afafaf00enthält „Hey there kaipee“ im Beschreibungsfeld.
Das Folgende funktioniert, allerdings nur bei einer vollständigen Übereinstimmung, nicht bei einer teilweisen Übereinstimmung.
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'Hey there kaipee')]]"
Ich möchte alle Sicherheitsgruppen anzeigen können, die „kaipee“ in der Beschreibung enthalten, wie:
aws ec2 describe-security-groups --query "SecurityGroups[?IpPermissions[?contains(IpRanges[].Description, 'kaipee')]]"
BEARBEITEN: Ich muss die GroupId, CirdIp und Details des Beschreibungsfelds zurückgeben, die alle mit den Ergebnissen der abgefragten Zeichenfolge übereinstimmen.
Antwort1
Würde es Ihnen etwas ausmachen, jq zu verwenden?
jq '.[][].IpPermissions[].IpRanges[] | select(.Description) | select(.Description | contains("kaipee"))'
Antwort2
Haben Sie versucht, mithilfe einer JMESPath-Abfrage die gesuchte SG zu filtern? Ich habe selbst einige Tests durchgeführt und kann nicht herausfinden, wie es funktioniert contains
, aber ich finde, dass es >
auch dann zu funktionieren scheint, wenn die Suchzeichenfolge nicht am Anfang der Beschreibung steht.
aws ec2 describe-security-groups --query "SecurityGroups[?Description > 'kaipee'].{Description: Description, GroupId: GroupId, IpRanges: IpPermissions[].IpRanges}"
Hoffentlich hilft das.