Erstellen von Service-Clients - AWS SDK for Java 1.x

Version AWS SDK for Java 1.x wurde am 31. Juli 2024 in den Wartungsmodus versetzt und wird end-of-supportam 31. Dezember 2025 verfügbar sein. Wir empfehlen Ihnen, auf den zu migrieren AWS SDK for Java 2.x, um weiterhin neue Funktionen, Verfügbarkeitsverbesserungen und Sicherheitsupdates zu erhalten.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Erstellen von Service-Clients

Um Anfragen zu stellen Amazon Web Services, erstellen Sie zunächst ein Service-Client-Objekt. Die empfohlene Methode besteht darin, den Service-Client-Generator zu nutzen.

Jedes AWS-Service hat eine Serviceschnittstelle mit Methoden für jede Aktion im DienstAPI. Beispielsweise wird die Dienstschnittstelle für DynamoDB benannt. AmazonDynamoDBClient Jede Service-Schnittstelle verfügt über einen entsprechenden Client-Generator, mit dem Sie eine Implementierung der Service-Schnittstelle erstellen können. Die Client-Builder-Klasse für DynamoDB ist benannt. AmazonDynamoDBClientBuilder

Abruf eines Client-Generators

Um eine Instance des Client-Generators abzurufen, verwenden Sie die statische Factory-Methode standard, wie im folgenden Beispiel gezeigt.

AmazonDynamoDBClientBuilder builder = AmazonDynamoDBClientBuilder.standard();

Sobald Sie einen Builder haben, können Sie die Eigenschaften des Clients anpassen, indem Sie viele Fluent-Setter im Builder verwenden. API Beispielsweise können Sie wie folgt eine benutzerdefinierte Region und einen benutzerdefinierten Anmeldeinformationsanbieter festlegen.

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

Die praktischen withXXX-Methoden geben das builder-Objekt zurück. So können Sie die Methodenaufrufe in Reihe schalten, was nicht nur einfacher ist, sondern auch für besser lesbaren Code sorgt. Nachdem Sie die gewünschten Eigenschaften konfiguriert haben, rufen Sie die build-Methode auf, um den Client zu erstellen. Sobald ein Client erstellt wurde, ist er unveränderlich und alle Aufrufe an setRegion oder setEndpoint schlagen fehl.

Ein Generator kann mehrere Clients mit der gleichen Konfiguration erstellen. Wenn Sie Ihre Anwendung entwerfen, sollten Sie daran denken, dass der Generator veränderlich und nicht threadsicher ist.

Der folgende Code verwendet den Generator als Factory für Client-Instances.

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

Der Builder bietet auch Fluent-Setter für ClientConfigurationund und eine benutzerdefinierte RequestMetricCollectorListe mit 2. RequestHandler

Im Folgenden finden Sie ein vollständiges Beispiel, in dem sämtliche konfigurierbaren Eigenschaften überschrieben werden.

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();

Erstellen von Async-Clients

Der AWS SDK for Java hat asynchrone (oder asynchrone) Clients für jeden Dienst (außer Amazon S3) und einen entsprechenden asynchronen Client-Builder für jeden Dienst.

So erstellen Sie einen asynchronen DynamoDB-Client mit dem Standard ExecutorService

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

Zusätzlich zu den Konfigurationsoptionen, die der synchrone (oder synchrone) Client-Builder unterstützt, ermöglicht Ihnen der asynchrone Client, benutzerdefinierte Optionen festzulegen, um die ExecutorFactoryzu ändern, ExecutorService die der asynchrone Client verwendet. ExecutorFactoryist eine funktionale Schnittstelle, sodass sie mit Lambda-Ausdrücken und Methodenreferenzen in Java 8 zusammenarbeitet.

So erstellen Sie einen asynchronen Client mit einem benutzerdefinierten Executor

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

Verwenden DefaultClient

Sowohl der synchrone als auch der asynchrone Client-Generator haben eine weitere Factory-Methode mit dem Namen defaultClient. Mit dieser Methode wird ein Dienstclient mit der Standardkonfiguration erstellt, wobei die Standardanbieterkette zum Laden von Anmeldeinformationen und der verwendet wird AWS-Region. Wenn die Anmeldeinformationen oder die Region nicht aus der Umgebung, in der die Anwendung ausgeführt wird, ermittelt werden können, schlägt der Aufruf von defaultClient fehl. Weitere Informationen darüber, wie AWS Anmeldeinformationen und Region bestimmt werden, finden Sie unter Mit Anmeldeinformationen arbeiten und AWS-Region Auswahl.

So erstellen Sie einen Standard-Service-Client

AmazonDynamoDB ddb = AmazonDynamoDBClientBuilder.defaultClient();

Client-Lebenszyklus

Service-Clients in der SDK sind Thread-sicher. Um eine optimale Leistung zu erzielen, sollten Sie sie als langlebige Objekte behandeln. Jeder Client verfügt über seine eigene Verbindungspool-Ressource. Explizit Clients herunterfahren, wenn sie nicht mehr benötigt werden, um Ressourcenverluste zu vermeiden.

Um einen Client explizit herunterzufahren, rufen Sie die shutdown-Methode auf. Nach dem Aufruf von shutdown werden alle Client-Ressourcen freigegeben und der Client kann nicht mehr verwendet werden.

So fahren Sie einen Client herunter

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