Мой сценарий просит пользователя ввести список идентификаторов экземпляров AWS.Затем распечатайте информацию об экземплярах и завершите их.
Но я получаю эту ошибку, когда запускаю свой скрипт:
File ".\aws_ec2_terminate_instances.py", line 15, in <module>
name = instance['Tags'][{'Key': 'Name', 'Value': instance_id}]
TypeError: list indices must be integers or slices, not dict
Это код:
import sys
import boto3
import collections
from collections import defaultdict
ec2 = boto3.client('ec2')
instance_id_list = input("Enter an instance ID separated by commas: ")
instance_ids = instance_id_list.split(",")
print("Deleting Instance IDs:")
for instance_id in instance_ids:
print(instance_id)
instance = ec2.describe_instances(
InstanceIds=[instance_id]
)['Reservations'][0]['Instances'][0]
name = instance['Tags'][{'Key': 'Name', 'Value': instance_id}]
ec2info = defaultdict()
# Add instance info to a dictionary
print(instance.get('Instances'))
ec2info[instance.id] = {
'Name': name,
'Instance ID': instance.id,
'Type': instance.instance_type,
'State': instance.state['Name'],
'Private IP': instance.private_ip_address,
'Public IP': instance.public_ip_address,
'Launch Time': instance.launch_time
}
attributes = ['Instance ID', 'Type',
'State', 'Private IP', 'Public IP', 'Launch Time']
for instance_id, instance in ec2info.items():
for key in attributes:
print("{0}: {1}".format(key, instance[key]))
print("------")
print("Terminating the instance:")
ec2.instances.filter(InstanceIds=instance).stop()
ec2.instances.filter(InstanceIds=instance).terminate()
Как мне пройти эту ошибку?