使用python

时间:2019-03-12 15:29:19

标签: python boto3

我试图遍历我们每个AWS账户中的所有区域,并在每个区域中构建ec2实例列表。

我正在使用此循环:

import boto3
aws_account = input("Enter the name of the AWS account you'll be working in: ")
session = boto3.Session(profile_name=aws_account)
ec2 = session.client("ec2")
aws_regions = ec2.describe_regions()
for region in aws_regions['Regions']:
    region_name = region['RegionName']
    print("Searching in region: ", region_name)

但是,每次循环时,我总是会在默认区域(弗吉尼亚州(us-east-1))中反复获取实例列表。

让我感到困惑的是,没有可应用于boto3的describe_instances()函数的区域过滤器。

我如何遍历这些区域并仅从该区域提取实例列表?

1 个答案:

答案 0 :(得分:2)

创建客户端对象时。它仅与单个区域关联。

ec2 = session.client("ec2")

它在here中已记录在Boto3中,

  

region_name(字符串)-与区域相关联的区域的名称   客户。客户与一个地区相关联。

这就是为什么您的循环仅打印与该帐户关联的us-east-1(默认值)的原因。

此外,由于所有时间都将与一个区域相关联,因此没有必要为描述实例提供过滤器。

为解决您的问题,我相信您应该在会话和客户端(每个区域一个)中进行循环