Cache de credenciais no AWS SDK for Java 2.x - AWS SDK for Java 2.x

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Cache de credenciais no AWS SDK for Java 2.x

O AWS SDK for Java 2.x implementa o armazenamento em cache de credenciais para melhorar o desempenho e reduzir as chamadas para fontes de credenciais. Esta seção explica como o armazenamento em cache de credenciais funciona e como você pode configurá-lo para seus aplicativos.

Entendendo o armazenamento em cache do provedor de credenciais

Os provedores de credenciais no SDK for Java 2.x usam diferentes estratégias de armazenamento em cache:

  • Cache interno de credenciais: muitos provedores armazenam em cache as credenciais que eles recuperam.

  • Atualização automática: provedores com credenciais em cache implementam mecanismos de atualização.

Provedores com armazenamento interno de credenciais

Os seguintes provedores de credenciais armazenam as credenciais em cache internamente, mesmo quando você cria novas instâncias:

  • Provedor de credenciais de perfil de instância: armazena em cache as credenciais do serviço de metadados da Amazon EC2 .

  • Provedor de credenciais de contêiner: armazena em cache as credenciais do endpoint de metadados do contêiner.

  • Provedores baseados em STS: armazene em cache as credenciais temporárias de AWS Security Token Service (STS).

  • Provedores de tokens de identidade da Web: Credenciais de cache obtidas dos tokens de identidade da Web.

  • Provedor de credenciais de processo: armazena em cache as credenciais de processos externos.

Provedores sem cache interno

Os seguintes provedores não implementam o cache interno:

  • Provedor de credenciais variáveis de ambiente

  • Provedor de credenciais de propriedade do sistema

  • Provedor de credenciais estáticas

Configurando o cache de credenciais

Você pode personalizar o comportamento do armazenamento em cache ao criar provedores de credenciais:

Tempo obsoleto

Controla quando as credenciais são consideradas obsoletas e precisam ser atualizadas:

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

Hora da pré-busca

Determina quando começar a atualizar as credenciais antes que elas expirem:

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

Atualizações assíncronas

Permite a atualização de credenciais em segundo plano:

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

Duração da sessão

Para provedores baseados em STS, controla por quanto tempo as credenciais temporárias permanecem válidas:

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

Exemplo de configuração de credenciais de cache

Como exemplo de configuração do armazenamento em cache para a implementação de um provedor de credenciais, talvez você queira que o SDK use um encadeamento em segundo plano para pré-buscar (recuperar com antecedência) as credenciais antes que elas expirem. Dessa forma, você pode evitar a chamada de bloqueio que recupera novas credenciais.

Veja a seguir um exemplo que cria um StsAssumeRoleCredentialsProvider que usa um encadeamento em segundo plano para pré-buscar credenciais definindo a asyncCredentialUpdateEnabled propriedade como true no construtor:

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

Quando você invoca uma operação ativada s3Client pela primeira vez, uma AssumeRoleRequest é enviada para o AWS Security Token Service (STS). O STS retorna credenciais temporárias válidas por 15 minutos (900 segundos). A s3Client instância usa as credenciais em cache até a hora de atualizá-las antes de decorridos os 15 minutos. Por padrão, o SDK tenta recuperar novas credenciais para uma nova sessão entre 5 minutos e 1 minuto antes do prazo de expiração da sessão atual. A janela de pré-busca é configurável usando as propriedades e. prefetchTime staleTime

Você pode configurar os seguintes provedores de credenciais baseados em sessão da mesma forma:

  • StsWebIdentityTokenFileCredentialsProvider

  • StsGetSessionTokenCredentialsProvider

  • StsGetFederationTokenCredentialsProvider

  • StsAssumeRoleWithWebIdentityCredentialsProvider

  • StsAssumeRoleWithSamlCredentialsProvider

  • StsAssumeRoleCredentialsProvider

  • DefaultCredentialsProvider(quando delega ao provedor de credenciais que usa sessões)

  • ProcessCredentialsProvider

  • WebIdentityTokenFileCredentialsProvider

  • ContainerCredentialsProvider

  • InstanceProfileCredentialsProvider

Compreender o cache de credenciais ajuda você a otimizar o desempenho e a confiabilidade do seu aplicativo ao trabalhar com. Serviços da AWS