Wie kann ich über die AWS-Befehlszeilenschnittstelle prüfen, ob die Beschreibung einer Sicherheitsgruppe eine bestimmte Zeichenfolge enthält?

Wie kann ich über die AWS-Befehlszeilenschnittstelle prüfen, ob die Beschreibung einer Sicherheitsgruppe eine bestimmte Zeichenfolge enthält?

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.

verwandte Informationen