#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:
вместо этого.