Python жалуется на отсутствие значения по словарю

#python

#python

Вопрос:

Я создал скрипт с использованием Python, в котором перечислены все экземпляры aws в учетной записи.

Скрипт работает, за исключением случаев, когда он встречает экземпляр, у которого нет никаких тегов.

Я попытался учесть это, используя эти строки:

 # Test for the existance of tags
if instance['Tags']:
    tags = instance['Tags']
    try:
        for tag in tags:
            if tag["Key"] == "Name":
                name = tag["Value"]
    except ValueError:
        print("No tags on instance ",instance["InstanceId"])
  

И все же ошибка сохраняется:

 Traceback (most recent call last):
  File ".aws_ec2_list_instances.py", line 180, in <module>
    loop_regions()
  File ".aws_ec2_list_instances.py", line 90, in loop_regions
    if instance['Tags']:
KeyError: 'Tags'
  

Если я закомментирую все строки, относящиеся к тегам, и установлю статическое значение для ‘name’, скрипт сработает идеально! Однако мне действительно нужно захватить тег name.

Это json-представление экземпляра: ec2_instance_json

Что я делаю не так? Как я могу правильно создать исключение, если теги не существуют?

Ответ №1:

В логическом значении значение instance['Tags'] равно true, если значение равно true, а не если ключ существует. Вы хотите if 'Tags' in instance: вместо этого.