Zwischenspeichern von Anmeldeinformationen im 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.

Zwischenspeichern von Anmeldeinformationen im AWS SDK for Java 2.x

Der AWS SDK for Java 2.x implementiert das Zwischenspeichern von Anmeldeinformationen, um die Leistung zu verbessern und die Anzahl der Aufrufe an Anmeldeinformationsquellen zu reduzieren. In diesem Abschnitt wird erklärt, wie das Zwischenspeichern von Anmeldeinformationen funktioniert und wie Sie es für Ihre Anwendungen konfigurieren können.

Grundlegendes zum Caching von Anmeldeinformationsanbietern

Anmeldeinformationsanbieter im SDK for Java 2.x verwenden unterschiedliche Caching-Strategien:

  • Internes Zwischenspeichern von Anmeldeinformationen: Viele Anbieter speichern Anmeldeinformationen, die sie abrufen.

  • Automatische Aktualisierung: Anbieter mit zwischengespeicherten Anmeldeinformationen implementieren Aktualisierungsmechanismen.

Anbieter mit internem Caching von Anmeldeinformationen

Die folgenden Anbieter von Anmeldeinformationen speichern Anmeldeinformationen intern im Cache, auch wenn Sie neue Instanzen erstellen:

  • Anbieter von Anmeldeinformationen für Instanzprofile: Speichert Anmeldeinformationen aus dem EC2 Amazon-Metadatenservice im Cache.

  • Anbieter von Container-Anmeldeinformationen: Speichert Anmeldeinformationen vom Container-Metadaten-Endpunkt im Cache.

  • STS-basierte Anbieter: Zwischenspeichern temporärer Anmeldeinformationen von AWS Security Token Service (STS).

  • Anbieter von Web-Identitätstoken: Cache-Anmeldeinformationen, die aus Web-Identitätstoken abgerufen wurden.

  • Anbieter von Prozessanmeldedaten: Speichert Anmeldeinformationen von externen Prozessen im Cache.

Anbieter ohne internes Caching

Die folgenden Anbieter implementieren kein internes Caching:

  • Anbieter von Anmeldeinformationen für Umgebungsvariablen

  • Anbieter von Anmeldeinformationen für Systemeigenschaften

  • Anbieter für statische Anmeldeinformationen

Zwischenspeicherung von Anmeldeinformationen konfigurieren

Sie können das Caching-Verhalten beim Erstellen von Anmeldeinformationsanbietern anpassen:

Stabile Zeit

Steuert, wann Anmeldeinformationen als veraltet gelten und aktualisiert werden müssen:

.staleTime(Duration.ofMinutes(2)) // Consider stale 2 minutes before expiration.

Zeit vor dem Abrufen

Legt fest, wann mit der Aktualisierung der Anmeldeinformationen begonnen werden soll, bevor sie ablaufen:

.prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration.

Asynchrone Updates

Aktiviert die Aktualisierung von Anmeldeinformationen im Hintergrund:

.asyncCredentialUpdateEnabled(true) // Refresh credentials in background thread.

Sitzungsdauer

Steuert für STS-basierte Anbieter, wie lange temporäre Anmeldeinformationen gültig bleiben:

.refreshRequest(r -> r.durationSeconds(3600)) // 1 hour session.

Konfigurationsbeispiel für das Zwischenspeichern von Anmeldeinformationen

Als Beispiel für die Konfiguration des Zwischenspeichers für die Implementierung eines Anbieters für Anmeldeinformationen möchten Sie vielleicht, dass das SDK einen Hintergrundthread verwendet, um Anmeldeinformationen vorab abzurufen (im Voraus abzurufen), bevor sie ablaufen. Auf diese Weise können Sie den blockierenden Aufruf vermeiden, der neue Anmeldeinformationen abruft.

Das folgende Beispiel zeigt ein Beispiel, StsAssumeRoleCredentialsProvider das einen erstellt, der einen Hintergrundthread verwendet, um Anmeldeinformationen vorab abzurufen, indem die asyncCredentialUpdateEnabled Eigenschaft im Builder true auf gesetzt wird:

StsAssumeRoleCredentialsProvider provider = StsAssumeRoleCredentialsProvider.builder() .refreshRequest(r -> r .roleArn("arn:aws:iam::111122223333:role/example-role") .roleSessionName("example-session") .durationSeconds(3600)) // 1 hour session .staleTime(Duration.ofMinutes(5)) // Consider stale 5 minutes before expiration .prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration .asyncCredentialUpdateEnabled(true) // Refresh in background .build(); S3Client s3 = S3Client.builder() .credentialsProvider(provider) .build();

Wenn Sie einen Vorgang s3Client zum ersten Mal aufrufen, AssumeRoleRequest wird ein an den AWS Security Token Service (STS) gesendet. STS gibt temporäre Anmeldeinformationen zurück, die für 15 Minuten (900 Sekunden) gültig sind. Die s3Client Instanz verwendet die zwischengespeicherten Anmeldeinformationen, bis sie vor Ablauf der 15 Minuten aktualisiert werden müssen. Standardmäßig versucht das SDK, zwischen 5 Minuten und 1 Minute vor Ablauf der aktuellen Sitzung neue Anmeldeinformationen für eine neue Sitzung abzurufen. Das Pre-Fetch-Fenster kann mithilfe der Eigenschaften prefetchTime und staleTime konfiguriert werden.

Sie können die folgenden Anbieter für sitzungsbasierte Anmeldeinformationen auf ähnliche Weise konfigurieren:

  • StsWebIdentityTokenFileCredentialsProvider

  • StsGetSessionTokenCredentialsProvider

  • StsGetFederationTokenCredentialsProvider

  • StsAssumeRoleWithWebIdentityCredentialsProvider

  • StsAssumeRoleWithSamlCredentialsProvider

  • StsAssumeRoleCredentialsProvider

  • DefaultCredentialsProvider(wenn es an einen Anbieter für Anmeldeinformationen delegiert, der Sitzungen verwendet)

  • ProcessCredentialsProvider

  • WebIdentityTokenFileCredentialsProvider

  • ContainerCredentialsProvider

  • InstanceProfileCredentialsProvider

Wenn Sie das Zwischenspeichern von Anmeldeinformationen verstehen, können Sie die Leistung und Zuverlässigkeit Ihrer Anwendung bei der Arbeit mit optimieren. AWS-Services