Régler le Région AWS pour AWS SDK for Java 2.x - AWS SDK for Java 2.x

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Régler le Région AWS pour AWS SDK for Java 2.x

Les clients du SDK se connectent à un Service AWS in spécifique Région AWS que vous spécifiez lors de la création du client. Cette configuration permet à votre application d'interagir avec AWS les ressources de cette zone géographique. Lorsque vous créez un client de service sans définir explicitement de région, le SDK utilise la région par défaut de votre configuration externe.

Configurez explicitement un Région AWS

Pour définir explicitement une région, nous vous recommandons d'utiliser les constantes définies dans la classe Region. Il s'agit d'une énumération de toutes les régions disponibles publiquement.

Pour créer un client avec une région énumérée à partir de la classe, utilisez la region méthode du générateur de clients.

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

Si la région que vous souhaitez utiliser n'est pas l'une des énumérations de la Region classe, vous pouvez créer une nouvelle région à l'aide de la méthode statiqueof. Cette méthode vous permet d'accéder à de nouvelles régions sans mettre à niveau le SDK.

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

Une fois que vous avez créé un client avec le générateur, il est immuable et Région AWS ne peut pas être modifié. Si vous devez travailler avec plusieurs clients Régions AWS pour le même service, vous devez créer plusieurs clients, un par région.

Laissez le SDK déterminer automatiquement la valeur par défaut à Région AWS partir de l'environnement

Lorsque votre code s'exécute sur Amazon EC2 ou AWS Lambda, vous souhaiterez peut-être configurer les clients pour qu'ils utilisent le même système Région AWS que celui sur lequel votre code s'exécute. Cela dissocie votre code de l'environnement dans lequel il s'exécute et facilite le déploiement de votre application sur plusieurs Régions AWS sites afin de réduire la latence ou la redondance.

Pour utiliser la chaîne de Région AWS fournisseurs par défaut afin de déterminer la région à partir de l'environnement, utilisez la create méthode du générateur de clients.

Ec2Client ec2 = Ec2Client.create();

Vous pouvez également configurer le client d'une autre manière, mais vous ne pouvez pas définir la région. Le SDK récupère le en Région AWS utilisant la chaîne de fournisseurs de régions par défaut :

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

Si vous ne définissez pas explicitement un Région AWS en utilisant la region méthode, le SDK consulte la chaîne de fournisseurs de régions par défaut pour déterminer la région à utiliser.

Comprendre la chaîne de Région AWS fournisseurs par défaut

Le SDK suit les étapes suivantes pour rechercher un Région AWS :

  1. Toute région explicite définie à l'aide de la region méthode sur le générateur lui-même a priorité sur toute autre option.

  2. Le SDK recherche la propriété du système JVM aws.region et utilise sa valeur si elle est trouvée.

  3. La variable d'environnement AWS_REGION est contrôlée. Si elle est définie, cette région est utilisée pour configurer le client.

    Note

    Le Lambda conteneur définit cette variable d'environnement.

  4. Le SDK vérifie le profil actif dans les fichiers de configuration et d'identification AWS partagés. Si la region propriété est présente, le SDK l'utilise.

    Le default profil est le profil actif sauf s'il est remplacé par une variable d'AWS_PROFILEenvironnement ou une propriété du système aws.profile JVM. Si le SDK trouve la region propriété dans les deux fichiers pour le même profil (y compris le default profil), il utilise la valeur du fichier d'informations d'identification partagé.

  5. Le SDK tente d'utiliser le service de métadonnées d' Amazon EC2 instance (IMDS) pour déterminer la région de l'instance en cours d'exécution Amazon EC2 .

  6. Si le SDK n'a toujours pas trouvé de région à ce stade, la création du client échoue avec une exception.

Lors du développement d' AWS applications, une approche courante consiste à utiliser le fichier de configuration partagé pour définir la région pour le développement local, et à s'appuyer sur la chaîne de fournisseurs de régions par défaut pour déterminer la région lorsque l'application s'exécute sur l' AWS infrastructure. La création du client s'en trouve ainsi grandement simplifiée et votre application demeure portable.

Vérifiez si un service est disponible dans une région

Pour voir si une donnée Service AWS est disponible dans une région, utilisez la serviceMetadata méthode statique sur un client de service :

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

L'extrait de code précédent affiche une longue liste de Région AWS codes dotés du service 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 ...

Vous pouvez utiliser un code pour rechercher l'énumération de la classe Region correspondant à la région que votre client de service doit utiliser.

Par exemple, si vous souhaitez utiliser DynamoDB dans la région avec le ap-northeast-2 code, créez votre client DynamoDB avec au moins la configuration suivante :

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

Choisissez un point de terminaison spécifique

Dans certaines situations, par exemple pour tester les fonctionnalités d'aperçu d'un service avant que les fonctionnalités ne soient mises à disposition générale, vous devrez peut-être spécifier un point de terminaison spécifique dans une région. Dans ces situations, les clients du service peuvent être configurés en appelant la endpointOverride méthode.

Par exemple, pour configurer un Amazon EC2 client afin qu'il utilise la région Europe (Irlande) avec un point de terminaison spécifique, utilisez le code suivant.

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

Voir Régions et points de terminaison pour la liste actuelle des régions et leurs points de terminaison correspondants pour tous les AWS services.