如何使用 Boto3 列出可用区域 (Python)
How to list available regions with Boto3 (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'}]}
为了 space,我已经删除了重复数据和 ResponseMetadata。
如何将 RegionName 解析为列表?
以下将为您 return 每个区域的 RegionName 和 Endpoint。
# List all regions
client = boto3.client('ec2')
regions = [region['RegionName'] for region in client.describe_regions()['Regions']]
除了 Frédéric 的回答之外,您还可以在不进行任何服务调用的情况下获取每个服务的已知区域。但是,我会提醒您,由于这是从 botocore 的本地模型中提取数据而不是到达端点,因此它并不总是详尽无遗,因为您需要更新 botocore 以更新列表。
from boto3.session import Session
s = Session()
dynamodb_regions = s.get_available_regions('dynamodb')
此外,您不限于此列表中的区域。如果您使用的是旧版本的 botocore,您仍然可以通过指定新区域来使用它们。他们只是不会出现在这个列表中。
随着 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'}]}
为了 space,我已经删除了重复数据和 ResponseMetadata。
如何将 RegionName 解析为列表?
以下将为您 return 每个区域的 RegionName 和 Endpoint。
# List all regions
client = boto3.client('ec2')
regions = [region['RegionName'] for region in client.describe_regions()['Regions']]
除了 Frédéric 的回答之外,您还可以在不进行任何服务调用的情况下获取每个服务的已知区域。但是,我会提醒您,由于这是从 botocore 的本地模型中提取数据而不是到达端点,因此它并不总是详尽无遗,因为您需要更新 botocore 以更新列表。
from boto3.session import Session
s = Session()
dynamodb_regions = s.get_available_regions('dynamodb')
此外,您不限于此列表中的区域。如果您使用的是旧版本的 botocore,您仍然可以通过指定新区域来使用它们。他们只是不会出现在这个列表中。