2016-06-24 5 views
2

Ich arbeite von der Instanz ID. Ich kann die Tags bekommen, aber ich kann nicht herausfinden, wie Filter auf der Instanz-ID und dem Tag "Name" oder Index in und geben Sie den Wert des Tags namens "Name"Wie kann ich den Wert des EC2-Instance-Tags "Name" mit Boto erhalten?

Ich landete Grab alle Tags und über sie zu iterieren, bis ich dasjenige finde, das ich will, was unmöglich stimmen kann.

tags = conn.get_all_tags({'resource-id': instance_id}) 
    for tag in tags: 
    if 'Name' in tag.name: 
     name = tag.value 
+0

Funktioniert der obige Code? – Will

+0

Ja, es scheint nur ein Umweg zu sein. – jorfus

Antwort

2

Sie haben eine bessere Art und Weise haben:

conn.get_all_images(filters={'tag-key': 'Name'. 'resource-id': instance_id}) 
+0

Danke, hatte Probleme mit der Syntax eines Multi-Faktor-Filters. – jorfus

+0

Kein Problem, wenn Sie mehr Informationen über Filter mit mehreren Faktoren erhalten möchten, werfen Sie einen Blick auf diesen Link - http://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescrebeInstances.html @jorfus –

0

Ich denke, wie Sie es tun, sind in Ordnung. Sie könnten wickeln Sie es immer in einem Funktionsaufruf als Abstraktion:

def get_instance_tag(all_tags, tag_name): 
    for tag in all_tags: 
    if tag_name == tag.name: 
     return tag.value 

    return None 

name = get_instance_tag(conn.get_all_tags({'resource-id': instance_id}), 'Name') 

Beachten Sie, dass if tag_name == tag.name: als if tag_name in tag.name: genauer ist.

Verwandte Themen