Ich schreibe einige Bash-Skripte, um die Verwaltung von AWS-Ressourcen zu automatisieren. Ich verwende aws-cli
und jq
, und bis jetzt waren die Dinge großartig.Filterarray mit jq basierend auf verschachtelten Werten
Ich markiere meine Ressourcen mit benutzerdefinierten Tags. Unter bestimmten Umständen möchte ich eine Liste von Ressourcen basierend sowohl auf Key
als auch Value
des benutzerdefinierten Tags filtern. Aber ich habe Schwierigkeiten, eine knappe jq
Abfrage zu erarbeiten, um es zu tun.
So zum Beispiel, wenn die (getrimmt) JSON Ausgabe für meine EC2-Instanzen ist wie:
[
{
"PublicIpAddress": "11.22.33.44",
"PrivateIpAddress": "55.66.77.88",
"Tags": [
{
"Value": "live199.blah.com",
"Key": "Name"
},
{
"Value": "live-standalone",
"Key": "hc-class"
}
]
}
]
[
{
"PublicIpAddress": "111.222.333.444",
"PrivateIpAddress": "555.666.777.888",
"Tags": [
{
"Value": "staging99.blah.com",
"Key": "Name"
},
{
"Value": "staging-standalone",
"Key": "hc-class"
}
]
}
]
... und ich brauche den Eintrag zu finden, wo Tags.Key == "hc-class"
und Tags.Value = "staging-standalone"
, wie kann ich es tun in eine prägnante Art und Weise mit jq
?
Jede Hilfe sehr geschätzt.
Sie können es einfach direkt von aws CLI mit JMESPATH tun, schauen Sie sich die Frage http://StackOverflow.com/Questions/43354116/using-JMespath-and-Aws-Ec2-describe-Instances-to-Output-Multiple- Tag-Werte, die einige Beispiele für die Arbeit mit dem –
Was meinst du mit "Eintrag"? Da "Tags" ein Array ist, ist das Einschlusskriterium unklar. Es könnte hilfreich sein, wenn Sie die erwartete Ausgabe geben. – peak
Mögliches Duplikat von [JSON-Objektliste mit jq filtern, indem mehrere Objekte abgeglichen werden] (http://stackoverflow.com/questions/33973816/filtering-json-object-list-with-jq-bymatching-multiple-objects) –