如何使用Boto3(Python)列出可用区域

时间:2016-07-19 06:30:16

标签: python amazon-web-services boto3

随着AWS扩展并添加新区域,我希望让我的代码自动检测到这一点。目前,"选择您所在的地区"是硬编码但我想解析以下仅 RegionName

import boto3

ec2 = boto3.client('ec2')
regions = ec2.describe_regions()
print(regions)

我的输出是JSON,如下所示:

  

{'地区':[{' Endpoint':' ec2.ap-south-1.amazonaws.com',' RegionName&#39 ;:' ap-south-1'},{' Endpoint':' ec2.eu-west-1.amazonaws.com',' RegionName& #39;:' eu-west-1'},{' Endpoint':' ec2.ap-southeast-1.amazonaws.com',' ; RegionName':' ap-southeast-1'}]}

我为了空间而修剪了重复数据和ResponseMetadata。

如何将RegionName解析为列表?

2 个答案:

答案 0 :(得分:29)

除了Frédéric的答案,您还可以在不进行任何服务呼叫的情况下获取每项服务的已知区域。但是,我会告诫你,因为这是从botocore的本地模型中提取而不是命中一个端点,所以它并不总是详尽无遗,因为你需要更新botocore来更新列表。

from boto3.session import Session

s = Session()
dynamodb_regions = s.get_available_regions('dynamodb')

此外,您不限于此列表中的区域。如果您使用的是旧版本的botocore,则仍可以通过指定它们来使用新区域。它们不会出现在此列表中。

答案 1 :(得分:20)

以下内容将返回每个区域的RegionName和Endpoint。

# List all regions
client = boto3.client('ec2')
regions = [region['RegionName'] for region in client.describe_regions()['Regions']]