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.
Mise en cache des informations d'identification dans AWS SDK for Java 2.x
AWS SDK for Java 2.x implémente la mise en cache des informations d'identification pour améliorer les performances et réduire les appels aux sources d'informations d'identification. Cette section explique comment fonctionne la mise en cache des informations d'identification et comment vous pouvez la configurer pour vos applications.
Comprendre la mise en cache des fournisseurs d'informations d'identification
Les fournisseurs d'identifiants du SDK pour Java 2.x utilisent différentes stratégies de mise en cache :
-
Mise en cache interne des informations d'identification : de nombreux fournisseurs mettent en cache les informations d'identification qu'ils récupèrent.
-
Actualisation automatique : les fournisseurs dont les informations d'identification sont mises en cache mettent en œuvre des mécanismes d'actualisation.
Fournisseurs dotés d'une mise en cache interne des informations d'identification
Les fournisseurs d'informations d'identification suivants mettent en cache les informations d'identification en interne, même lorsque vous créez de nouvelles instances :
-
Fournisseur d'informations d'identification de profil d'instance : met en cache les informations d'identification provenant du service de EC2 métadonnées Amazon.
-
Fournisseur d'informations d'identification du conteneur : met en cache les informations d'identification depuis le point de terminaison des métadonnées du conteneur.
-
Fournisseurs basés sur STS : mettez en cache les informations d'identification temporaires provenant de AWS Security Token Service (STS).
-
Fournisseurs de jetons d'identité Web : mettez en cache les informations d'identification obtenues à partir de jetons d'identité Web.
-
Fournisseur d'informations d'identification de processus : met en cache les informations d'identification provenant de processus externes.
Fournisseurs sans mise en cache interne
Les fournisseurs suivants n'implémentent pas de mise en cache interne :
-
Fournisseur d'informations d'identification variables d'environnement
-
Fournisseur d'informations d'identification des propriétés du système
-
Fournisseur d'informations d'identification statiques
Configuration de la mise en cache des informations d'identification
Vous pouvez personnaliser le comportement de mise en cache lorsque vous créez des fournisseurs d'informations d'identification :
Temps périmé
Contrôle lorsque les informations d'identification sont considérées comme périmées et doivent être actualisées :
.staleTime(Duration.ofMinutes(2)) // Consider stale 2 minutes before expiration.
Heure de prélecture
Détermine quand commencer à actualiser les informations d'identification avant leur expiration :
.prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration.
Mises à jour asynchrones
Permet d'actualiser les informations d'identification en arrière-plan :
.asyncCredentialUpdateEnabled(true) // Refresh credentials in background thread.
Durée de la session
Pour les fournisseurs basés sur STS, contrôle la durée de validité des informations d'identification temporaires :
.refreshRequest(r -> r.durationSeconds(3600)) // 1 hour session.
Exemple de configuration des informations d'identification de mise en cache
À titre d'exemple de configuration de la mise en cache pour l'implémentation d'un fournisseur d'informations d'identification, vous pouvez demander au SDK d'utiliser un thread d'arrière-plan pour pré-récupérer (récupérer à l'avance) les informations d'identification avant leur expiration. De cette façon, vous pouvez éviter l'appel bloquant qui permet de récupérer de nouvelles informations d'identification.
L'exemple suivant montre un exemple qui crée un StsAssumeRoleCredentialsProvider
qui utilise un thread d'arrière-plan pour pré-récupérer les informations d'identification en définissant la asyncCredentialUpdateEnabled
propriété true
sur le générateur :
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();
Lorsque vous invoquez une opération s3Client
pour la première fois, un signal AssumeRoleRequest
est envoyé au AWS Security Token Service (STS). STS renvoie des informations d'identification temporaires valides pendant 15 minutes (900 secondes). L's3Client
instance utilise les informations d'identification mises en cache jusqu'à ce qu'il soit temps de les actualiser avant l'expiration des 15 minutes. Par défaut, le SDK tente de récupérer les nouvelles informations d'identification pour une nouvelle session entre 5 minutes et 1 minute avant l'heure d'expiration de la session en cours. La fenêtre de pré-extraction est configurable à l'aide des propriétés prefetchTime
etstaleTime
.
Vous pouvez configurer les fournisseurs d'informations d'identification basés sur les sessions suivants de la même manière :
-
StsWebIdentityTokenFileCredentialsProvider
-
StsGetSessionTokenCredentialsProvider
-
StsGetFederationTokenCredentialsProvider
-
StsAssumeRoleWithWebIdentityCredentialsProvider
-
StsAssumeRoleWithSamlCredentialsProvider
-
StsAssumeRoleCredentialsProvider
-
DefaultCredentialsProvider
(lorsqu'il délègue au fournisseur d'informations d'identification qui utilise des sessions) -
ProcessCredentialsProvider
-
WebIdentityTokenFileCredentialsProvider
-
ContainerCredentialsProvider
-
InstanceProfileCredentialsProvider
Comprendre la mise en cache des informations d'identification vous permet d'optimiser les performances et la fiabilité de votre application lorsque vous travaillez avec. Services AWS