检索 Java 应用程序中的 Amazon Secrets Manager 密钥 - Amazon Secrets Manager
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

检索 Java 应用程序中的 Amazon Secrets Manager 密钥

在检索密钥时,您可以使用 Secrets Manager 基于 Java 的缓存组件来缓存密钥,以备将来使用。检索已缓存密钥比从 Secrets Manager 中检索密钥的速度要快。由于调用 Secrets Manager API 会产生费用,因此使用缓存可以降低成本。

缓存策略为“最近最少使用 (LRU)”,因此当缓存必须丢弃某个密钥时,它会丢弃最近使用最少的密钥。原定设置下,缓存会每小时刷新一次秘密。您可以配置在缓存中刷新密钥的频率,也可以挂钩到密钥检索中以添加更多功能。

一旦释放缓存引用,缓存便不会进行强制垃圾回收。缓存实现侧重于缓存本身,而不是侧重加强安全性或以安全性为重点。如果您需要额外的安全性(例如加密缓存中的项目),请使用提供的接口和抽象方法。

要使用该组件,您必须满足以下条件:

  • Java 8 或更高版本的开发环境。请参阅 Oracle 网站上的 Java SE 下载

  • Amazon SDK 1.x for Java。您可以在项目中同时使用 Amazon SDK for Java 的两个版本。有关更多信息,请参阅 Using the SDK for Java 1.x and 2.x side-by-side(并行使用适用 SDK for Java 1.x 和 2.x 的软件开发工具包)。

要下载源代码,请参阅 GitHub 上的 Secrets Manager 基于 Java 的缓存客户端组件

要将该组件添加到您的项目中,请在 Maven pom.xml 文件中包括以下依赖项。有关 Maven 的更多信息,请参阅 Apache Maven Project 网站上的《入门指南》

<dependency> <groupId>com.amazonaws.secretsmanager</groupId> <artifactId>aws-secretsmanager-caching-java</artifactId> <version>1.0.1</version> </dependency>
例 示例:检索密钥

以下代码示例显示了检索密钥字符串的 Lambda 函数。它遵循在函数处理程序之外实例化缓存的最佳实践,因此如果您再次调用该 Lambda 函数,它不会继续调用该 API。

package com.amazonaws.secretsmanager.caching.examples; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; import com.amazonaws.services.lambda.runtime.LambdaLogger; import com.amazonaws.secretsmanager.caching.SecretCache; public class SampleClass implements RequestHandler<String, String> { private final SecretCache cache = new SecretCache(); @Override public String handleRequest(String secretId, Context context) { final String secret = cache.getSecretString(secretId); // Use the secret, return success; } }