Impostazione del Regione AWS per AWS SDK for Java 2.x - AWS SDK for Java 2.x

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Impostazione del Regione AWS per AWS SDK for Java 2.x

I client SDK si connettono Servizio AWS a un indirizzo specifico Regione AWS specificato al momento della creazione del client. Questa configurazione consente all'applicazione di interagire con AWS le risorse in quell'area geografica. Quando crei un client di servizio senza impostare esplicitamente una regione, l'SDK utilizza la regione predefinita della configurazione esterna.

Configura esplicitamente un Regione AWS

Per impostare in modo esplicito una regione, si consiglia di utilizzare le costanti definite nella classe Region. Si tratta di un'enumerazione di tutte le regioni disponibili pubblicamente.

Per creare un client con una regione enumerata dalla classe, utilizzate il metodo del client builder. region

Ec2Client ec2 = Ec2Client.builder() .region(Region.US_WEST_2) .build();

Se la regione che desideri utilizzare non è una delle enumerazioni della Region classe, puoi creare una nuova regione utilizzando il metodo statico. of Questo metodo consente di accedere a nuove regioni senza aggiornare l'SDK.

Region newRegion = Region.of("us-east-42"); Ec2Client ec2 = Ec2Client.builder() .region(newRegion) .build();
Nota

Dopo aver creato un client con il builder, è immutabile e non può essere modificato. Regione AWS Se devi lavorare con più client Regioni AWS per lo stesso servizio, devi creare più client, uno per regione.

Consenti all'SDK di determinare automaticamente l'impostazione predefinita dall'ambiente Regione AWS

Quando il codice viene eseguito su Amazon EC2 o AWS Lambda, potresti voler configurare i client in modo Regione AWS che utilizzino lo stesso su cui è in esecuzione il codice. Questo disaccoppia il codice dall'ambiente in cui è in esecuzione e semplifica la distribuzione dell'applicazione su più utenti Regioni AWS per ridurre la latenza o la ridondanza.

Per utilizzare la catena di Regione AWS provider predefinita per determinare la regione dall'ambiente, utilizzate il metodo del client builder. create

Ec2Client ec2 = Ec2Client.create();

Puoi anche configurare il client in altri modi, ma non impostare la regione. L'SDK rileva Regione AWS utilizzando la catena di provider regionali predefinita:

Ec2Client ec2Client = Ec2Client.builder() .credentialsProvider(ProfileCredentialsProvider.builder() .profileName("my-profile") .build()) .build();

Se non ne imposti uno in modo esplicito Regione AWS utilizzando il region metodo, l'SDK consulta la catena di provider di regioni predefinita per determinare la regione da utilizzare.

Comprendere la catena di provider predefinita Regione AWS

L'SDK esegue le seguenti operazioni per cercare un Regione AWS:

  1. Qualsiasi regione esplicita impostata utilizzando il region metodo sul builder stesso ha la precedenza su qualsiasi altra cosa.

  2. L'SDK cerca la proprietà del sistema JVM aws.region e, se trovata, ne utilizza il valore.

  3. La variabile di ambiente AWS_REGION è selezionata. Se è impostata, quella regione viene utilizzata per configurare il client.

    Nota

    Il Lambda contenitore imposta questa variabile di ambiente.

  4. L'SDK controlla il profilo attivo nei file di configurazione e credenziali AWS condivisi. Se la region proprietà è presente, l'SDK la utilizza.

    Il default profilo è il profilo attivo a meno che non venga sovrascritto dalla variabile di AWS_PROFILE ambiente o dalla proprietà del sistema aws.profile JVM. Se l'SDK trova la region proprietà in entrambi i file per lo stesso profilo (incluso il default profilo), l'SDK utilizza il valore nel file delle credenziali condivise.

  5. L'SDK tenta di utilizzare il servizio di metadati dell' Amazon EC2 istanza (IMDS) per determinare la regione dell'istanza attualmente in esecuzione. Amazon EC2

  6. Se l'SDK non ha ancora trovato una regione a questo punto, la creazione del client fallisce con un'eccezione.

Quando si sviluppano AWS applicazioni, un approccio comune consiste nell'utilizzare il file di configurazione condiviso per impostare la regione per lo sviluppo locale e affidarsi alla catena di provider di regioni predefinita per determinare la regione quando l'applicazione viene eseguita sull' AWS infrastruttura. Questo semplifica notevolmente la creazione del client e mantiene l'applicazione portatile.

Verifica se un servizio è disponibile in una regione

Per vedere se un particolare Servizio AWS è disponibile in una regione, usa il serviceMetadata metodo statico su un client di servizio:

DynamoDbClient.serviceMetadata().regions().forEach(System.out::println);

Lo snippet precedente stampa un lungo elenco di Regione AWS codici che dispongono del servizio DynamoDB:

af-south-1 ap-east-1 ap-northeast-1 ap-northeast-2 ap-northeast-3 ap-south-1 ap-south-2 ap-southeast-1 ...

È possibile utilizzare un codice per cercare l'enumerazione delle classi Region per la regione da utilizzare dal client di servizio.

Ad esempio, se vuoi lavorare con DynamoDB nella regione con il ap-northeast-2 codice, crea il tuo client DynamoDB con almeno la seguente configurazione:

DynamoDbClient ddb = DynamoDbClient.builder() .region(Region.AP_NORTHEAST_2) .build();

Scegli un endpoint specifico

In determinate situazioni, ad esempio per testare in anteprima le funzionalità di un servizio prima che queste diventino disponibili sul mercato, potrebbe essere necessario specificare un endpoint specifico in una regione. In queste situazioni, i client del servizio possono essere configurati chiamando il metodo. endpointOverride

Ad esempio, per configurare un Amazon EC2 client in modo che utilizzi la regione Europa (Irlanda) con un endpoint specifico, usa il codice seguente.

Ec2Client ec2 = Ec2Client.builder() .region(Region.EU_WEST_1) .endpointOverride(URI.create("https://ec2.eu-west-1.amazonaws.com")) .build();

Vedi Regioni ed endpoint per l'elenco corrente delle regioni e gli endpoint corrispondenti per tutti i servizi. AWS