Création de clients de service - AWS SDK for Java 1. x

Nous avons annoncé la sortie prochaine end-of-support de AWS SDK for Java (v1). Nous vous recommandons de migrer vers la AWS SDK for Java version v2. Pour les dates, les détails supplémentaires et les informations sur la façon de migrer, reportez-vous à l'annonce associée.

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.

Création de clients de service

Pour envoyer des demandes à Amazon Web Services, vous devez d'abord créer un objet client de service. La méthode recommandée consiste à utiliser le générateur client de service.

Chacun Service AWS possède une interface de service avec des méthodes pour chaque action dans l'API de service. Par exemple, l'interface de service de DynamoDB s'appelle DbClient. AmazonDynamo Chaque interface de service possède un générateur client correspondant que vous pouvez utiliser pour construire une implémentation de l'interface de service. La classe de création de clients pour DynamoDB est nommée AmazonDynamoDB ClientBuilder.

Obtention d'un générateur client

Pour obtenir une instance du générateur client, utilisez la méthode de fabrique.statique standard, comme illustré dans l'exemple suivant.

AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();

Une fois que vous disposez d'un générateur, vous pouvez personnaliser les propriétés du client à l'aide de nombreuses méthodes setter Fluent dans l'API du générateur. Par exemple, vous pouvez définir une région personnalisée et un fournisseur d'informations d'identification personnalisé, comme suit.

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .build();
Note

Les méthodes withXXX Fluent renvoient l'objet builder pour vous permettre de chaîner les appels de méthode pour plus de commodité et un code plus lisible. Une fois que vous avez configuré les propriétés souhaitées, vous pouvez appeler la méthode build pour créer le client. Une fois qu'un client a été créé, il est immuable et tous les appels à setRegion ou setEndpoint échoueront.

Un générateur peut créer plusieurs clients avec la même configuration. Lorsque vous écrivez votre application, gardez à l'esprit que le générateur est mutable et n'est pas thread-safe.

Le code suivant utilise le générateur en tant que fabrique pour les instances client.

public class DynamoDBClientFactory { private final AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")); public AmazonDynamoDB createClient() { return builder.build(); } }

Le générateur expose également des setters fluides pour ClientConfigurationet RequestMetricCollector, ainsi qu'une liste personnalisée de RequestHandler 2.

Voici un exemple complet qui remplace toutes les propriétés configurables.

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .withClientConfiguration(new ClientConfiguration().withRequestTimeout(5000)) .withMetricsCollector(new MyCustomMetricsCollector()) .withRequestHandlers(new MyCustomRequestHandler(), new MyOtherCustomRequestHandler) .build();

Création de clients asynchrones

AWS SDK for Java Il possède des clients asynchrones (ou asynchrones) pour chaque service (sauf pour Amazon S3) et un générateur de clients asynchrones correspondant pour chaque service.

Pour créer un client DynamoDB asynchrone avec la valeur par défaut ExecutorService

AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() .withRegion(Regions.US_WEST_2) .withCredentials(new ProfileCredentialsProvider("myProfile")) .build();

Outre les options de configuration prises en charge par le générateur de clients synchrones (ou de synchronisation), le client asynchrone vous permet de définir une personnalisation ExecutorFactorypour modifier ExecutorService celle utilisée par le client asynchrone. ExecutorFactoryest une interface fonctionnelle, elle interagit donc avec les expressions lambda de Java 8 et les références de méthodes.

Pour créer un client asynchrone avec un exécuteur personnalisé

AmazonDynamoDBAsync ddbAsync = AmazonDynamoDBAsyncClientBuilder.standard() .withExecutorFactory(() -> Executors.newFixedThreadPool(10)) .build();

En utilisant DefaultClient

Les générateurs client synchrones et asynchrones ont une autre méthode nommée defaultClient. Cette méthode crée un client de service avec la configuration par défaut, en utilisant la chaîne de fournisseurs par défaut pour charger les informations d'identification et le Région AWS. 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 à defaultClient échoue. Consultez la section Utilisation des AWS informations d'identification et Région AWS sélection pour plus d'informations sur la manière dont les informations d'identification et la région sont déterminées.

Pour créer un service client par défaut

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

Cycle de vie des clients

Les clients de service du kit SDK sont thread-safe, et pour des performances optimales, vous devrez les traiter comme des objets à longue durée de vie. Chaque client possède sa propre ressource de groupe de connexion. Arrêtez explicitement les clients lorsque vous n'en avez plus besoin pour éviter les fuites de ressources.

Pour arrêter explicitement un client, appelez la méthode shutdown. Une fois la méthode shutdown appelée, toutes les ressources client sont libérées et le client devient inutilisable.

Pour arrêter un client

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient(); ddb.shutdown(); // Client is now unusable