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

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

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

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

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

要下载源代码,请参阅 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; } }