web-dev-qa-db-ja.com

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」 }]}

スペースを確保するために、繰り返しデータとResponseMetadataを削除しました。

RegionNameを解析してリストにするにはどうすればよいですか?

17
Shawn

以下は、各地域のRegionNameとEndpointを返します。

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

フレデリックの答えに加えて、サービスを呼び出すことなく、各サービスの既知の地域を取得することもできます。ただし、これはエンドポイントにヒットするのではなく、botocoreのローカルモデルから取得するため、botocoreを更新してリストを更新する必要があるため、必ずしも網羅的ではないことに注意してください。

from boto3.session import Session

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

さらに、このリストの地域に制限されません。古いバージョンのbotocoreを使用している場合、新しいリージョンを指定することで引き続き使用できます。このリストには表示されません。

32
Jordon Phillips