证书缓存在 Amazon SDK for Java 2.x - Amazon SDK for Java 2.x
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

证书缓存在 Amazon SDK for Java 2.x

Amazon SDK for Java 2.x 实现凭据缓存以提高性能并减少对凭证源的调用。本节说明凭证缓存的工作原理以及如何为应用程序配置凭证缓存。

了解凭证提供商缓存

适用于 Java 的 SDK 2.x 中的凭据提供程序使用不同的缓存策略:

  • 内部凭证缓存:许多提供商会缓存他们检索到的凭证。

  • 自动刷新:具有缓存凭据的提供者实现刷新机制。

具有内部凭据缓存的提供商

即使您创建了新实例,以下凭证提供程序也会在内部缓存凭证:

  • 实例配置文件凭证提供者:缓存来自 Amazon EC2 元数据服务的证书。

  • 容器凭证提供者:缓存来自容器元数据端点的凭证。

  • 基于 STS 的提供商:缓存来自 Amazon Security Token Service (STS) 的临时证书。

  • Web 身份令牌提供商:缓存从 Web 身份令牌获取的凭据。

  • 进程凭据提供者:缓存来自外部进程的凭据。

没有内部缓存的提供商

以下提供商不实现内部缓存:

  • 环境变量凭证提供程序

  • 系统属性凭证提供者

  • 静态凭证提供程序

配置凭据缓存

在构建凭据提供程序时,您可以自定义缓存行为:

陈旧时间

控制证书何时被视为过时且需要刷新:

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

预取时间

确定在证书过期之前何时开始刷新:

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

异步更新

启用后台凭证刷新:

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

会话持续时间

对于基于 STS 的提供商,控制临时证书的有效期:

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

缓存凭证配置示例

作为为证书提供程序实现配置缓存的示例,您可能希望让 SDK 使用后台线程在证书过期之前对其进行预提取(提前检索)。这样,您就可以避免检索新凭据的阻塞调用。

以下示例显示了一个示例,该示例通过StsAssumeRoleCredentialsProvider在生成器true上将asyncCredentialUpdateEnabled属性设置为,使用后台线程来预取凭证:

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

首次在上s3Client调用操作时,会向 Amazon Security Token Service (STS) 发送一个AssumeRoleRequest。STS 返回有效期为 15 分钟(900 秒)的临时证书。s3Client实例使用缓存的凭证,直到需要在 15 分钟之前刷新它们。默认情况下,SDK 会在当前会话到期前 5 分钟到 1 分钟之间尝试为新会话检索新凭证。预取窗口可使用prefetchTimestaleTime属性进行配置。

您可以类似地配置以下基于会话的凭证提供程序:

  • StsWebIdentityTokenFileCredentialsProvider

  • StsGetSessionTokenCredentialsProvider

  • StsGetFederationTokenCredentialsProvider

  • StsAssumeRoleWithWebIdentityCredentialsProvider

  • StsAssumeRoleWithSamlCredentialsProvider

  • StsAssumeRoleCredentialsProvider

  • DefaultCredentialsProvider(当它委托给使用会话的凭证提供商时)

  • ProcessCredentialsProvider

  • WebIdentityTokenFileCredentialsProvider

  • ContainerCredentialsProvider

  • InstanceProfileCredentialsProvider

了解凭据缓存有助于您在使用时优化应用程序的性能和可靠性。 Amazon Web Services 服务