Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Almacenamiento en caché de credenciales en AWS SDK for Java 2.x
AWS SDK for Java 2.x Implementa el almacenamiento en caché de credenciales para mejorar el rendimiento y reducir las llamadas a las fuentes de credenciales. En esta sección se explica cómo funciona el almacenamiento en caché de credenciales y cómo puede configurarlo para sus aplicaciones.
Descripción del almacenamiento en caché de los proveedores de credenciales
Los proveedores de credenciales del SDK para Java 2.x utilizan diferentes estrategias de almacenamiento en caché:
-
Almacenamiento interno de credenciales en caché: muchos proveedores almacenan en caché las credenciales que recuperan.
-
Actualización automática: los proveedores con credenciales almacenadas en caché implementan mecanismos de actualización.
Proveedores con almacenamiento interno de credenciales en caché
Los siguientes proveedores de credenciales almacenan las credenciales en caché internamente, incluso cuando se crean nuevas instancias:
-
Proveedor de credenciales de perfil de instancia: guarda en caché las credenciales del servicio de EC2 metadatos de Amazon.
-
Proveedor de credenciales del contenedor: guarda en caché las credenciales del punto final de metadatos del contenedor.
-
Proveedores basados en STS: guarda en caché las credenciales temporales de AWS Security Token Service (STS).
-
Proveedores de identificadores de identidad web: almacenan en caché las credenciales obtenidas de los identificadores de identidad web.
-
Proveedor de credenciales de procesos: guarda en caché las credenciales de procesos externos.
Proveedores sin almacenamiento en caché interno
Los siguientes proveedores no implementan el almacenamiento en caché interno:
-
Proveedor de credenciales de variables de entorno
-
Proveedor de credenciales de propiedades del sistema
-
Proveedor de credenciales estáticas
Configuración del almacenamiento en caché de credenciales
Puede personalizar el comportamiento del almacenamiento en caché al crear proveedores de credenciales:
Tiempo obsoleto
Controla cuándo las credenciales se consideran obsoletas y deben actualizarse:
.staleTime(Duration.ofMinutes(2)) // Consider stale 2 minutes before expiration.
Hora de captura previa
Determina cuándo empezar a actualizar las credenciales antes de que caduquen:
.prefetchTime(Duration.ofMinutes(10)) // Start refresh 10 minutes before expiration.
Actualizaciones asíncronas
Permite actualizar las credenciales en segundo plano:
.asyncCredentialUpdateEnabled(true) // Refresh credentials in background thread.
Duración de la sesión
En el caso de los proveedores basados en STS, controla el tiempo que permanecen válidas las credenciales temporales:
.refreshRequest(r -> r.durationSeconds(3600)) // 1 hour session.
Ejemplo de configuración de credenciales de almacenamiento en caché
Como ejemplo de configuración del almacenamiento en caché para la implementación de un proveedor de credenciales, es recomendable que el SDK utilice un subproceso en segundo plano para recuperar previamente las credenciales antes de que caduquen. De esta forma, puede evitar la llamada de bloqueo que recupera las credenciales nuevas.
A continuación se muestra un ejemplo en el que StsAssumeRoleCredentialsProvider
se crea un subproceso en segundo plano para obtener previamente las credenciales al establecer la asyncCredentialUpdateEnabled
propiedad true
en el generador:
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();
Cuando se invoca una operación s3Client
por primera vez, AssumeRoleRequest
se envía una al AWS Security Token Service (STS). El STS devuelve credenciales temporales que son válidas durante 15 minutos (900 segundos). La s3Client
instancia usa las credenciales almacenadas en caché hasta que llegue el momento de actualizarlas antes de que transcurran 15 minutos. De forma predeterminada, el SDK intenta recuperar las credenciales nuevas para una sesión nueva entre 5 y 1 minuto antes de la fecha de caducidad de la sesión actual. La ventana de captura previa se puede configurar mediante las propiedades prefetchTime
ystaleTime
.
Puede configurar los siguientes proveedores de credenciales basados en sesión de forma similar:
-
StsWebIdentityTokenFileCredentialsProvider
-
StsGetSessionTokenCredentialsProvider
-
StsGetFederationTokenCredentialsProvider
-
StsAssumeRoleWithWebIdentityCredentialsProvider
-
StsAssumeRoleWithSamlCredentialsProvider
-
StsAssumeRoleCredentialsProvider
-
DefaultCredentialsProvider
(cuando delega en el proveedor de credenciales que usa las sesiones) -
ProcessCredentialsProvider
-
WebIdentityTokenFileCredentialsProvider
-
ContainerCredentialsProvider
-
InstanceProfileCredentialsProvider
Comprender el almacenamiento en caché de credenciales le ayuda a optimizar el rendimiento y la fiabilidad de su aplicación al trabajar con ella. Servicios de AWS