2016-07-19 95 views
6

Mentre AWS espande e aggiunge nuove regioni, mi piacerebbe che il mio codice lo rilevasse automaticamente. Attualmente, la "Seleziona la tua regione" è codificata in modo rigido, ma vorrei analizzare quanto segue solo per il nome della regione .Come elencare le regioni disponibili con Boto3 (Python)

import boto3 

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

La mia uscita è JSON in questo modo:

{'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'}]}

ho rifilata i dati ripetuti e il ResponseMetadata per il bene di spazio.

Come posso analizzare RegionName in un elenco?

risposta

11

Quanto segue restituirà RegionName ed Endpoint per ogni regione.

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

Grazie! Lo apprezzo – Shawn

+1

'client = boto3.client ('ec2')' fallisce con l'errore "botocore.exceptions.NoRegionError: devi specificare una regione." – jononomo

+0

Ci sono diversi modi per impostare la regione (aws ha un buon documento per quello) ma puoi andare direttamente da 'client = boto3.client ('ec2', region_name = 'us-west-2')' –

13

Oltre alla risposta di Frédéric, è anche possibile ottenere le regioni conosciute per ciascun servizio senza effettuare chiamate di servizio. Tuttavia, ti informerò che dal momento che questo sta estrapolando i modelli locali di botocore anziché colpire un endpoint, non sarà sempre esaustivo dal momento che devi aggiornare Botocore per aggiornare l'elenco.

from boto3.session import Session 

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

Inoltre, non sei limitato alle regioni in questo elenco. Se stai usando una versione precedente di botocore puoi ancora usare nuove regioni specificandole. Semplicemente non appariranno in questa lista.

Problemi correlati