使用 AWS 开发的开源客户端缓存组件 - AWS Secrets Manager
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

使用 AWS 开发的开源客户端缓存组件

要高效地使用密钥,您不能仅在每次要使用密钥时检索密钥值。您还应包含执行以下操作的代码:

  • 您的应用程序应在检索密钥后对其进行缓存。然后,请使用缓存的值,而不是在每次需要密钥时通过网络从 Secrets Manager 中检索密钥。

  • 当您的代码收到网络或 AWS 服务错误时,请使用实现指数回退和抖动的算法重试您的请求,如 AWS 架构博客 中的指数回退和抖动所述。

通过编写代码来执行这些任务,您可获得以下好处:

  • 降低了成本 – 对于您经常使用的密钥,从缓存中检索它们可以减少应用程序对 Secrets Manager 进行的 API 调用次数。由于 Secrets Manager 按 API 调用收取费用,因此,这可能会显著降低您的成本。

  • 提高了性能 – 通过从内存中检索密钥,而不是通过 Internet 将请求发送到 Secrets Manager,可以大大提高您的应用程序的性能。

  • 提高了可用性 – 在从缓存中检索密钥信息时,瞬时网络错误可能不是什么问题。

Secrets Manager 创建了一个客户端组件以实施这些最佳实践,并简化创建代码以访问 AWS Secrets Manager 中存储的密钥的过程。您安装客户端,然后调用密钥,并提供您希望代码使用的密钥的标识符。Secrets Manager 还要求您用于调用 Secrets Manager 的 AWS 凭证包含密钥的 secretsmanager:DescribeSecretsecretsmanager:GetSecretValue 权限。这些凭证通常与 IAM 角色关联。如果您使用 SAML 联合Web 身份 (OIDC) 联合,则可能会在登录时为您分配该角色。如果您在 Amazon EC2 实例上运行应用程序,则管理员可以创建实例配置文件以分配 IAM 角色。

组件必须是以下形式:

  • 客户端库为 Java、Python、Go 和 .NET 等形式,您通过密钥进行交互,而不是直接调用 GetSecretValue 操作。

  • 符合 Java 数据库连接 (JDBC) 要求的数据库驱动程序组件。该组件是真正的 JDBC 驱动程序的包装器,它添加了上述功能。

有关下载和使用下列链接之一的说明,请参阅: