View a markdown version of this page

Fabrication Service AWS demandes à l'aide du 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.

Fabrication Service AWS demandes à l'aide du AWS SDK for Java 2.x

Utiliser les clients du service pour faire des demandes

Après avoir suivi les étapes décrites dans Configuration du SDK et compris comment configurer les clients de service, vous êtes prêt à adresser des demandes à AWS des services tels qu'Amazon S3, Amazon DynamoDB Gestion des identités et des accès AWS, Amazon EC2, etc.

Création d'un client de service

Pour adresser une demande à un Service AWS, vous devez d'abord instancier un client de service pour ce service à l'aide de la méthode static factory,. builder() La builder() méthode renvoie un builder objet qui vous permet de personnaliser le client du service. Les méthodes setter courantes renvoient l'objet builder pour vous permettre de chaîner les appels de méthode pour plus de commodité et pour obtenir un code plus lisible. Après avoir configuré les propriétés souhaitées, appelez la build() méthode pour créer le client.

À titre d'exemple, l'extrait de code suivant instancie un Ec2Client objet en tant que client de service pour Amazon EC2.

Region region = Region.US_WEST_2; Ec2Client ec2Client = Ec2Client.builder() .region(region) .build();
Note

Les clients de service du kit SDK sont thread-safe. Pour de meilleures performances, traitez-les comme des objets à longue durée de vie. Chaque client possède sa propre ressource de groupe de connexion qui est libérée lorsque le client est nettoyé de la mémoire.

Un objet client de service est immuable. Vous devez donc créer un nouveau client pour chaque service auquel vous envoyez des demandes, ou si vous souhaitez utiliser une configuration différente pour adresser des demandes au même service.

Il n'est pas nécessaire de spécifier la valeur Region dans le générateur de clients du service pour tous les AWS services ; toutefois, il est recommandé de définir la région pour les appels d'API que vous effectuez dans vos applications. Voir AWS la sélection de la région pour plus d'informations.

Configuration du client par défaut

Les générateurs client ont une autre méthode de fabrique nommée create(). Cette méthode crée un client de service avec la configuration par défaut. Il utilise la chaîne de fournisseurs par défaut pour charger les informations d'identification et la chaîne Région AWS de fournisseurs par défaut. Si les informations d'identification ou la région ne peuvent pas être déterminées à partir de l'environnement dans lequel l'application s'exécute, l'appel create échoue. Consultez la section Utilisation des informations d'identification et sélection de la région pour plus d'informations sur la manière dont le SDK détermine les informations d'identification et la région à utiliser.

Par exemple, l'extrait de code suivant instancie un DynamoDbClient objet en tant que client de service pour Amazon DynamoDB :

DynamoDbClient dynamoDbClient = DynamoDbClient.create();

Configuration des clients de service

Pour plus d'informations sur la configuration des clients de service, reportez-vous aux Configuration du client en externe sections etConfiguration du client dans le code.

Fermez le client de service

Il est recommandé d'utiliser un client de service pour plusieurs appels de service API pendant la durée de vie d'une application. Toutefois, si vous avez besoin d'un client de service pour une utilisation unique ou si vous n'en avez plus besoin, fermez-le.

Appelez la close() méthode lorsque le client du service n'est plus nécessaire pour libérer des ressources.

ec2Client.close();

Si vous avez besoin d'un client de service à usage unique, vous pouvez instancier le client de service en tant que ressource dans une instruction try -with-resources. Les clients de service implémentent l'Autoclosableinterface, de sorte que le JDK appelle automatiquement la close() méthode à la fin de l'instruction.

L'exemple suivant montre comment utiliser un client de service pour un appel ponctuel. Le StsClient qui appelle le AWS Security Token Service est fermé une fois qu'il a renvoyé l'identifiant du compte.

import software.amazon.awssdk.services.sts.StsClient; String getAccountID() { try (StsClient stsClient = StsClient.create()) { return stsClient.getCallerIdentity().account(); } }

Faire des demandes

Utilisez le client de service pour adresser des demandes au correspondant Service AWS.

Par exemple, cet extrait de code montre comment créer un RunInstancesRequest objet pour créer une nouvelle instance Amazon EC2 :

// Create the request by using the fluid setter methods of the request builder. RunInstancesRequest runInstancesRequest = RunInstancesRequest.builder() .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1) .build(); // Use the configured request with the service client. RunInstancesResponse response = ec2Client.runInstances(runInstancesRequest);

Plutôt que de créer une demande et de transmettre l'instance, le SDK fournit une API fluide que vous pouvez utiliser pour créer une demande. Avec l'API Fluent, vous pouvez utiliser des expressions lambda Java pour créer la demande « en ligne ».

L'exemple suivant réécrit l'exemple précédent en utilisant la version de la runInstances méthode qui utilise un générateur pour créer la demande.

// Create the request by using a lambda expression. RunInstancesResponse response = ec2.runInstances(r -> r .imageId(amiId) .instanceType(InstanceType.T1_MICRO) .maxCount(1) .minCount(1));

Utiliser des requêtes pour modifier la configuration du client

Bien qu'un client de service soit immuable, vous pouvez modifier bon nombre de ses paramètres au niveau de la demande. Lorsque vous créez une demande, vous pouvez fournir une AwsRequestOverrideConfiguration instance pour fournir les paramètres remplacés. Voici quelques-unes des méthodes que vous pouvez utiliser pour modifier les paramètres du client :

  • apiCallAttemptTimeout

  • apiCallTimeout

  • credentialProvider

  • compressionConfiguration

  • putHeader

Pour un exemple de remplacement d'un paramètre client par une demande, supposons que vous disposez du client S3 suivant qui utilise les paramètres par défaut.

S3Client s3Client = S3Client.create();

Vous souhaitez télécharger un fichier volumineux et vous assurer que la demande n'expire pas avant la fin du téléchargement. Pour ce faire, augmentez les valeurs de délai d'attente pour une seule GetObject demande, comme indiqué dans le code suivant.

Standard API
AwsRequestOverrideConfiguration overrideConfiguration = AwsRequestOverrideConfiguration.builder() .apiCallTimeout(Duration.ofSeconds(100L)) .apiCallAttemptTimeout(Duration.ofSeconds(25L)) .build(); GetObjectRequest request = GetObjectRequest.builder() .bucket("amzn-s3-demo-bucket") .key("demo-key") .overrideConfiguration(overrideConfiguration) .build(); s3Client.getObject(request, myPath);
Fluent API
s3Client.getObject(b -> b .bucket("amzn-s3-demo-bucket") .key("demo-key") .overrideConfiguration(c -> c .apiCallTimeout(Duration.ofSeconds(100L)) .apiCallAttemptTimeout(Duration.ofSeconds(25L))), myPath);

Gérer les réponses

Le SDK renvoie un objet de réponse pour la plupart des opérations de service. Votre code peut traiter les informations contenues dans l'objet de réponse en fonction de vos besoins.

Par exemple, l'extrait de code suivant affiche l'identifiant de la première instance renvoyé avec l'RunInstancesResponseobjet de la demande précédente.

RunInstancesResponse runInstancesResponse = ec2Client.runInstances(runInstancesRequest); System.out.println(runInstancesResponse.instances().get(0).instanceId());

Cependant, toutes les opérations ne renvoient pas un objet de réponse contenant des données spécifiques au service. Dans ces situations, vous pouvez interroger l'état de la réponse HTTP pour savoir si l'opération a réussi.

Par exemple, le code de l'extrait de code suivant vérifie la réponse HTTP pour voir si le DeleteContactList fonctionnement d'Amazon Simple Email Service s'est bien déroulé.

SesV2Client sesv2Client = SesV2Client.create(); DeleteContactListRequest request = DeleteContactListRequest.builder() .contactListName("ExampleContactListName") .build(); DeleteContactListResponse response = sesv2Client.deleteContactList(request); if (response.sdkHttpResponse().isSuccessful()) { System.out.println("Contact list deleted successfully"); } else { System.out.println("Failed to delete contact list. Status code: " + response.sdkHttpResponse().statusCode()); }