J'écris des scripts bash pour automatiser la gestion des ressources AWS. J'utilise aws-cli
et jq
, et jusqu'ici les choses ont été formidables. Je marque mes ressources avec des étiquettes personnalisées. Dans certaines circonstances, je voudrais filtrer une liste de ressources basée à la fois sur Key
et Value
de la balise personnalisée. Mais j'ai du mal à élaborer une requête succincte pour le faire.Tableau de filtres avec jq basé sur des valeurs imbriquées
Ainsi, par exemple, si le (coupé) JSON pour mes instances EC2 est comme:
[
{
"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"
}
]
}
]
... et je dois trouver l'entrée où Tags.Key == "hc-class"
et Tags.Value = "staging-standalone"
, comment dois-je faire en une manière succincte avec jq
?
Toute aide grandement appréciée.
vous pouvez simplement le faire directement à partir d'aws CLI en utilisant JMESPATH, regardez la question http://stackoverflow.com/questions/43354116/using-jmespath-and-aws-ec2-describe-instances-to-output-multiple- valeurs-tag qui détaille un exemple de la façon de travailler que –
Qu'entendez-vous par "entrée"? Puisque "Tags" est un tableau, le critère d'inclusion n'est pas clair. Cela pourrait aider si vous avez donné la sortie attendue. – peak
Copie possible de [Filtrer la liste d'objets JSON avec jq en faisant correspondre plusieurs objets] (http://stackoverflow.com/questions/33973816/filtering-json-object-list-with-jq-by-matching-multiple-objects) –