2016-06-11 14 views
0

Ich versuche mit Boto3 die Werte eines EC2-Tags zu drucken. Ich habe 'Function' aufgerufen, aber in Zeile 7 einen TypeError: 'NoneType' object is not iterable Fehler erhalten, nachdem der Code ungefähr 20 Objekte durchlaufen hat . Ich habe versucht, dies zu erfassen, indem Sie überprüfen, ob der Wert None ist, aber immer noch diesen Fehler erhalten.boto3 TypeError: Objekt 'NoneType' ist nicht iterierbar

import boto3 
s = boto3.Session(profile_name='default') 
ec2 = s.resource('ec2') 

for i in ec2.instances.all(): 
    for tag in i.tags: 
    if tag['Value'] is None: 
     print("No Value") 
    else: 
     if tag['Key'] == 'Function': 
     print(tag['Value']) 
+1

Welche Zeile verursacht die Ausnahme? Könnte es sein, dass i.tags keine sind? – jarmod

+0

Es ist Line7, also würde das Sinn machen. Wenn ich ein 'if i.tags is None 'hinzufüge: print (" No Value ")' Ich erhalte das gleiche Problem auch in Zeile 7. – tweeks200

Antwort

0

könnten Sie versuchen, dies zu tun und überprüfen:

def tag_to_dict(ec2): 
    tag_dict = {} 
    if ec2.tags is None: 
     return "No Value" ## Replace "No Value" with tag_dict to get an empty dict 
    for tag in ec2.tags: 
     tag_dict[tag['Key']] = tag['Value'] 
    return tag_dict 

Sie am Ende ein Wörterbuch mit Schlüssel als Schlüssel und Variablenwerte als Werte zu bekommen.


Edit:

versuchen und sehen, wenn Sie etwas hier bekommen:

for i in ec2.instances.all(): 
    if i.tags is None: 
     continue 
    for tag in i.tags: 
     if tag['Key'] == 'Function': 
      print(tag['Value']) 

es mit der nächsten Iteration der Schleife weiter und ignoriert NoneType Werte.

+0

Entschuldige bitte nicht, aber vielleicht muss ich einfach mehr über Wörterbücher lernen. Es läuft gut, zeigt aber keine Daten an. Ich habe versucht, eine Druckanweisung hinzuzufügen, gibt aber immer noch nichts zurück. – tweeks200

+0

@ tweeks200- Bitte versuchen Sie die bearbeitete Antwort und sehen Sie, ob es irgendwelche Daten druckt. –

+0

hat das versucht und den gleichen NoneType-Fehler wie zuvor erhalten. Ich habe auch versucht, mich mit meinem Original zu verbinden, aber kein Glück. Es werden ungefähr 20 korrekte Werte gedruckt, bevor der Fehler ausgegeben wird. – tweeks200

Verwandte Themen