Как читать значения из нескольких регионов AWS, используя python? - PullRequest
0 голосов
/ 27 сентября 2019

Мне нужно получить список из нескольких регионов учетной записи AWS.Из одного региона я могу получить список.Проблема заключается в получении этого списка из нескольких регионов.Мне нужно знать, как использовать петлю for в соединительной линии.

Я использую boto3 с Python 3.

   region = ['us-east-2','us-east-1']
   conn = boto3.resource('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name=region)
   instances = conn.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running', 'stopped']}])
    for instance in instances:
        instance_count.append(instance)
        instanceCount = str(len(instance_count))
    print('Instance count ->' + str(len(instance_count)))

Мне нужно знать, как использовать петлю forпроверить массив внутри переменной региона?

Я ожидал напечатать все ресурсы из двух регионов.
Я получаю сообщение об ошибке:

if region_name в service_data ['endpoints']: TypeError: unhashable тип:' list '

1 Ответ

2 голосов
/ 27 сентября 2019

Я не понимаю, что вы пытаетесь сделать.

regions = ['us-east-2','us-east-1']

for region in regions:  
    conn = boto3.resource('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name=region)

    instances = conn.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running', 'stopped']}])
    for instance in instances:
        instance_count.append(instance)
        instanceCount = str(len(instance_count))
    print('Instance count ->' + str(len(instance_count)))

Чтобы напечатать количество экземпляров,

regions = ['us-east-2','us-east-1']
num = 0

for region in regions:  
    conn = boto3.resource('ec2', aws_access_key_id=access_key, aws_secret_access_key=secret_key,region_name=region)
    instances = conn.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running', 'stopped']}])

    for instance in instances: num += 1

print('Instance count -> {}'.format(num))
...