我如何在 Amazon Lambda 中提供数据库凭证等配置参数?

How do I provide configuration parameters like database credentials in Amazon Lambda?

如何为我的 Java AWS Lambda 函数提供数据库凭证等配置参数?

我应该简单地将它们存储在一个属性文件中并从 jar 中加载它们吗?如果是这样,我如何区分开发配置和运行时配置?

有几个选项可用,具体取决于您尝试访问的系统以及您需要保持凭据的安全程度。

最重要的事情是,如果您在 Lambda 函数中需要 AWS 凭证,您应该使用 AWS 角色。这意味着您无需对凭据进行硬编码,只需使用 AWS 客户端库进行调用即可。

如果您需要提取其他机密或配置,您可以将它们存储在 DynamoDB 或 S3 中。您将使用 AWS 角色授予读取此信息的访问权限。如果安全性真的很重要,您可以使用 KMS 加密此信息以增加一层安全性。如果您正在从 S3 或 DynamoDB 读取数据,我建议您将其缓存适当的时间(Lambda 函数的生命周期是一个不错的选择,因为根据我的经验,实例通常不会超过 15 分钟)以避免不必要的请求到 DynamoDB 或 S3。

当谈到区分其所处环境的代码时,我假设您是在谈论单独的 Lambda 函数。为此,您可以将环境分配烘焙到您构建的工件中,或者您可以让代码查看 Lambda 函数的名称以确定它所处的环境。