2 votes

AWS-CLI - Trouver ELB par balise de nom

Je cherche à trouver un répartiteur de charge qui a une balise Name avec une certaine valeur.

aws elb describe-load-balancers --query 'LoadBalancerDescriptions[*].LoadBalancerName'

Je parcours les résultats et exécute :

aws elb describe-tags \
--load-balancer-names some-load-balancer \
--query 'TagDescriptions[?Tags[?Key==`Name`].Value == `my-desired-name-value`]'

Le résultat est toujours vide même si cela :

aws elb describe-tags \
--load-balancer-names some-load-balancer \
--query 'TagDescriptions[].Tags[?Key==`Name`].Value'

Retourne my-desired-name-value. J'aimerais obtenir l'objet complet des balises, en utilisant uniquement JMESPath, je ne peux pas utiliser jq ici.

Résultat souhaité :

{
    "TagDescriptions": [
        {
            "LoadBalancerName": "some-load-balancer",
            "Tags": [
                {
                    "Key": "SomeTag",
                    "Value": "SomeValue"
                },
                {
                    "Key": "Name",
                    "Value": "my-desired-name-value"
                }
            ]
        }
    ]
}

Quel est le problème avec ma requête JMESPath ?

1voto

kenlukas Points 2717

Vous essayez d'utiliser --query pour remplacer --filter et malheureusement describe-tags ne prend pas en charge l'option --filter.

L'option --query vous permet de sélectionner les champs retournés dans la réponse. Lorsqu'elle est disponible, --filter vous permet de sélectionner les ressources que vous souhaitez obtenir. Cela est décrit plus en détail ici

Vous pouvez utiliser jq pour effectuer la fonction du filtre. Je le recommande vivement car AWS n'implémente pas l'option --filter pour toutes les commandes CLI.

Pour votre exemple, essayez quelque chose comme :

aws elb describe-tags --load-balancer-names some-load-balancer \
| jq -r '.TagDescriptions[] |select (.Tags[].Value=="my-desired-name-value")'

Un peu plus complexe est de filtrer sur la clé et la valeur du tag :

aws elb describe-tags --load-balancer-names some-load-balancer \
| jq -r '.TagDescriptions[] | . as $i \
| (select ($i.Tags[].Value=="my-desired-name-value")) and (select ($i.Tags[].Key=="Name")) \
| $i'

Résultat

{
  "LoadBalancerName": "some-load-balancer",
  "Tags": [
    {
      "Key": "Type",
      "Value": "classic"
    },
    {
      "Key": "Name",
      "Value": "my-desired-name-value"
    }
  ]
}

Références

-1voto

Aws elbv2 describe-tags --resource-arns | jq -r '.TagDescriptions[] | . as $i | (select($i.Tags[].Value | test(".-.-05-myteam.-."))) et (select ($i.Tags[].Key=="Name")) | $i.ResourceArn'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X