首页 > 解决方案 > 如何使用 python 从 AWS 的多个区域读取值?

问题描述

我需要从 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 in service_data['endpoints']: TypeError: unhashable type: 'list'

标签: pythonpython-3.xamazon-web-servicesboto3

解决方案


我不明白你想做什么。

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))

推荐阅读