2016-06-11 3 views
0

boto3을 사용하여 'Function'이라고 부른 EC2 태그의 값을 인쇄하려고하는데 약 12 ​​개의 객체를 통해 코드가 실행 된 후 라인 7에 TypeError: 'NoneType' object is not iterable 오류가 발생합니다. . 해당 값이 None인지 확인하여이 오류를 계속 잡으려고 시도했지만이 오류가 계속 발생합니다.boto3 TypeError : 'NoneType'객체가 반복 가능하지 않습니다.

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

어떤 줄에서 예외가 발생합니까? i.tags가 None 일 수 있습니까? – jarmod

+0

라인 7이므로 이해가됩니다. if i.tags가 None이면 : print ("No Value") '나는 또한 7 호선에서 같은 문제를받습니다. – tweeks200

답변

0

당신은이 일을 시도하고 확인할 수 있습니다 :

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 

당신은 값으로 키와 태그 값으로 키 사전을 그만 둘.


편집 :

시도하고 당신이 무엇을 얻을 수 있는지 확인 : 그것은 루프의 다음 반복을 계속하고 NoneType 값을 무시

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

.

+0

다음을 유감스럽게 생각하지만 어쩌면 단지 사전에 대해 자세히 알아야 할 필요가 있습니다. 그것은 잘 실행되지만 데이터를 표시하지 않습니다. print 문을 추가하려고 시도했지만 여전히 아무것도 반환하지 않습니다. – tweeks200

+0

@ tweeks200- 수정 된 답변을 시도하고 데이터가 인쇄되는지 확인하십시오. –

+0

시도했는데 이전과 같은 NoneType 오류가 나타납니다. 나도 나의 원래 그러나 어떤 운이 아니라도 결합하려고 노력했다. 오류를 던지기 전에 약 20 개의 올바른 값을 인쇄합니다. – tweeks200

관련 문제