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

2024-05-14 00:23:04 发布

您现在位置:Python中文网/ 问答频道 /正文

随着AWS扩展和添加新的区域,我希望我的代码能够自动检测到这一点。目前,“Select your region”是硬编码的,但我只想为RegionName解析以下内容。

import boto3

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

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

{'Regions': [{'Endpoint': 'ec2.ap-south-1.amazonaws.com', 'RegionName': 'ap-south-1'}, {'Endpoint': 'ec2.eu-west-1.amazonaws.com', 'RegionName': 'eu-west-1'}, {'Endpoint': 'ec2.ap-southeast-1.amazonaws.com', 'RegionName': 'ap-southeast-1'}]}

为了节省空间,我删掉了重复数据和响应数据。

如何将RegionName解析为列表?


Tags: 数据comaws区域boto3ec2endpointap
2条回答

除了Frédéric的回答,您还可以在不打任何服务电话的情况下获得每个服务的已知区域。不过,我要提醒您的是,由于这是从botocore的本地模型中提取的,而不是到达一个端点,因此它并不总是详尽无遗的,因为您需要更新botocore来更新列表。

from boto3.session import Session

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

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

下面将返回每个区域的RegionName和Endpoint。

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

相关问题 更多 >