2017-08-23 2 views
0

Nous utilisons le code python suivant pour obtenir tous les tags associés à un volume ebs et les transférer vers les snapshots associés à ce volume ebs. Et nous voulons exclure aws: les balises réservées de la sortie afin que nous puissions les appliquer directement telles quelles.Comment filtrer les clés Tag en utilisant aws boto3 en commençant par 'aws:' dans ec2.describe_tags?

import boto3 
ec2 = boto3.client('ec2') 
volume_tags = ec2.describe_tags(Filters=[{'Name': 'resource-id', 'Values': ['volume-id',],},],) 
tag_snapshot = ec2.create_tags(Resources=[snapshot-id],Tags=volume_tags) 
+0

Votre question n'est pas claire. Dans 'describe_tags', vous voulez exclure les balises réservées? – helloV

+0

Désolé pour la confusion, Oui à partir des actions describe_tags J'essaie d'exclure les balises aws réservées par exemple .. "aws: cloudformation: pile-id" – user3389426

+0

Il n'y a pas d'autre logique/filtre regex construit dans 'describe_tags'. Cependant, vous pouvez passer le résultat à 'paginators' et y faire un filtrage plus compliqué. http://boto3.readthedocs.io/en/latest/guide/paginators.html – mootmoot

Répondre

0

Vous pouvez utiliser le programme « jq » avec SSFE cli pour filtrer les résultats de JSON comme ci-dessous

aws ec2 describe-tags | jq '.Tags[] | select(contains({Key: "aws:"}) | not)' 

utiliser Peut-être sous-processus pour exécuter la commande ci-dessus de python

Malheureusement, je ne peux pas essayez la même chose en utilisant les liaisons python pour jq. Jq ou pyjq python bindings ont des problèmes d'installation en utilisant pip pour moi