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

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

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

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

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

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

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

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

  • AWS SDK 1.x for Java。您可以在项目中同时使用 AWS 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.2</version> </dependency>

所需权限:

  • secretsmanager:DescribeSecret

  • secretsmanager:GetSecretValue

有关更多信息,请参阅权限参考

例 检索密钥

以下代码示例显示了检索密钥字符串的 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; } }