2016-07-19 12 views
6

ile kullanılabilir bölgeler nasıl bulunur AWS genişler ve yeni bölgeler ekler gibi, kodumun bunu otomatik olarak algılamasını isterim. Şu anda, "Bölgenizi seçin" sabit kodlanmış, ancak sadece RegionName için ayrıştırmak istiyorum.Boto3 (Python)

import boto3 

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

Benim çıkış şöyle JSON: Ben uzay uğruna tekrarlayan veri ve ResponseMetadata kapalı kesilmiş ettik

{'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'i bir listeye nasıl ayrıştırabilirim?

cevap

11

Aşağıdakiler, her bölge için RegionName ve Endpoint değerini döndürür. Frederic cevabı ek olarak

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

Teşekkürler! Bunu takdir ediyorum – Shawn

+1

'client = boto3.client ('ec2')' hatayla başarısız "botocore.exceptions.NoRegionError: Bir bölge belirtmelisiniz." – jononomo

+0

Bölgeyi ayarlamanın birden fazla yolu vardır (aws bunun için iyi bir doktora sahiptir) ancak siz doğrudan doğruya 'client = boto3.client (' ec2 ', region_name =' us-west-2 ') ' –

13

, ayrıca herhangi bir hizmet çağrıları yapmadan her hizmetin bölgeleri bilinen alabilirsiniz. Bununla birlikte, sizi bir son noktaya vurmak yerine botocore'un yerel modellerinden çekildiği için listeyi güncellemek için botocore'u güncellemeniz gerektiğinden her zaman kapsamlı olmayacağına dikkat edeceğim. Ayrıca, bu listedeki bölgelerle sınırlı değilsiniz. Ayrıca, bu listedeki bölgelerle sınırlı değilsiniz. Botocore'un eski bir sürümünü kullanıyorsanız, bunları belirterek yeni bölgeleri kullanabilirsiniz. Sadece bu listede görünmeyecekler.

İlgili konular