Konfiguration von Service-Clients im Code für AWS SDK for Java 2.x - AWS SDK for Java 2.x

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.

Konfiguration von Service-Clients im Code für AWS SDK for Java 2.x

Als Alternative oder zusätzlich zur externen Konfiguration von Service-Clients können Sie sie programmgesteuert im Code konfigurieren.

Durch die Konfiguration von Service-Clients im Code erhalten Sie eine detaillierte Kontrolle über die vielen Optionen, die Ihnen zur Verfügung stehen. Die meisten Konfigurationen, die Sie extern festlegen können, stehen Ihnen auch zur Verfügung, um sie im Code festzulegen.

Grundkonfiguration im Code

Der folgende Codeausschnitt setzt beispielsweise den AWS-Region Wert EU_SOUTH_2 für einen Amazon S3-Serviceclient im Code:

S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .build();

Das vorherige Snippet zeigt die statische Factory-Methode,. builder() Die builder() Methode gibt ein builder Objekt zurück, mit dem Sie den Service-Client anpassen können. Die Fluent-Setter-Methoden geben das builder Objekt — in diesem Fall eine S3ClientBuilderInstanz — zurück, sodass Sie die Methodenaufrufen der Einfachheit halber und für besser lesbaren Code verketten können. Nachdem Sie die gewünschten Eigenschaften konfiguriert haben, rufen Sie die Methode auf, um den Client zu erstellen. build()

Erweiterte Konfiguration im Code

Das folgende Snippet zeigt zusätzliche Konfigurationsoptionen:

ClientOverrideConfiguration clientOverrideConfiguration = ClientOverrideConfiguration.builder() .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create()) .build(); S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(clientOverrideConfiguration) .httpClientBuilder( ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build()) ).build();

Im vorherigen Snippet sehen Sie mehrere Einstiegspunkte für die Konfiguration eines Service-Clients:

  • Ein ClientOverrideConfiguration.Builder Objekt, das Konfigurationsoptionen bereitstellt, die allen Service-Clients gemeinsam sind. Bei diesen Einstellungen handelt es sich um AWS spezifische Verhaltensweisen, die unabhängig von einer HTTP-Implementierung sind.

  • HTTP-Clientkonfiguration über eine separate HTTP-Client-Builder-Implementierung. Das ApacheHttpClient.Builder ist ein Beispiel. Der Service-Client stellt die httpClientBuilder() Methode bereit, um den konfigurierten HTTP-Client dem Service-Client zuzuordnen.

  • Methoden im Client Builder selbst, wie region() und credentialsProvider()

Anstatt separate Objekte zu erstellen und sie dann an Service-Client-Methoden zu übergeben, AWS SDK for Java 2.x bietet der Methoden, die Lambda-Ausdrücke akzeptieren, um diese Objekte inline zu erstellen. Die Konfigurationsmethoden im Builder haben den gleichen Namen, haben jedoch unterschiedliche Signaturen. Zum Beispiel:

Die zuvor mit diesem Ansatz gezeigte Konfiguration des S3-Clients kann in einem Codeblock erfolgen:

S3Client s3Client = S3Client.builder() .region(Region.EU_SOUTH_2) .credentialsProvider(EnvironmentVariableCredentialsProvider.create()) .overrideConfiguration(b -> b .apiCallAttemptTimeout(Duration.ofSeconds(1)) .addMetricPublisher(CloudWatchMetricPublisher.create())) .httpClientBuilder(ApacheHttpClient.builder() .maxConnections(100) .connectionTimeout(Duration.ofSeconds(5)) .proxyConfiguration(ProxyConfiguration.builder() .endpoint(URI.create("http://proxy:8080")) .build())) .build();

Konfigurationsoptionen sind im Code nicht verfügbar

Da sich die folgenden Einstellungen auf grundlegende Initialisierungsprozesse im SDK auswirken, können Sie die folgenden Konfigurationseinstellungen nur extern und nicht im Code festlegen:

Einstellungen für den Speicherort der Datei

Diese Einstellungen steuern den Speicherort der gemeinsam genutzten Konfigurations- und Anmeldeinformationsdateien und können nicht programmgesteuert außer Kraft gesetzt werden, nachdem das SDK sie geladen hat:

  • AWS_CONFIG_FILE (Umgebungsvariable)/aws.ConfigFile (JVM-Systemeigenschaft)

  • AWS_SHARED_CREDENTIALS_FILE (Umgebungsvariable)/aws. sharedCredentialsFile (JVM-Systemeigenschaft)

Diese Einstellungen müssen festgelegt werden, bevor das SDK die Konfigurationsdateien lädt, da sie bestimmen, wo das SDK nach der Konfiguration sucht. Sobald das SDK initialisiert wurde, hat eine Änderung dieser Werte keine Auswirkung.

Deaktivierung des Instanz-Metadatendienstes

  • AWS_EC2_METADATA_DISABLED (Umgebungsvariable)/aws.DisableEC2Metadata (JVM-Systemeigenschaft)

Diese Einstellung steuert, ob das SDK versucht, den Instanz-Metadatendienst überhaupt zu verwenden. EC2 Sobald das SDK initialisiert wurde, können Sie diese Einstellung nicht programmgesteuert ändern.

Auswahl des Profils

  • AWS_PROFILE(Umgebungsvariable)/aws.profile (JVM-Systemeigenschaft)

Diese Einstellung teilt dem SDK mit, welches Profil aus den gemeinsam genutzten Konfigurations- und Anmeldeinformationsdateien geladen werden soll. Nach dem Laden hat die Änderung dieses Werts keine Auswirkung.

Pfade für Container-Anmeldeinformationen

  • AWS_CONTAINER_CREDENTIALS_RELATIVE_URI

  • AWS_CONTAINER_CREDENTIALS_VOLLSTÄNDIGER_URI

  • AWS_CONTAINER_AUTORISIERUNGSTOKEN

  • AWS_CONTAINER_AUTORISIERUNGSTOKEN-DATEI

Sie verwenden diese Umgebungsvariablen, um dem SDK mitzuteilen, wie Anmeldeinformationen von Containerdiensten abgerufen werden sollen. Nachdem die Anmeldeinformationsanbieterkette während der Initialisierung des Service Clients eingerichtet wurde, können Sie diese Einstellungen nicht mehr ändern.

Auswahl der standardmäßigen HTTP-Implementierung

  • SYNC_HTTP_SERVICE_IMPL (Umgebungsvariable)/software.amazon.awssdk.http.service.impl (JVM-Systemeigenschaft)

  • ASYNC_HTTP_SERVICE_IMPL (Umgebungsvariable)/software.amazon.awssdk.http.async.service.impl (JVM-Systemeigenschaft)

Diese globalen Einstellungen bestimmen, welche HTTP-Client-Implementierung das SDK für alle Service-Clients verwendet, sofern sie nicht im Code für einzelne Service-Clients überschrieben werden. Sie müssen diese Einstellungen festlegen, bevor das SDK seine HTTP-Clients initialisiert. Sie können danach nicht mehr geändert werden.