如何在 aws lambda 中隐藏 sql 连接字符串?

How to hide sql connection strings in aws lambda?

以下是我的连接方式。 Lambda 中是否有任何方法可以设置不可见且理想情况下会交叉到多个 lambda 的环境变量?理想情况下,在我可以使用 SDK 访问并跨所有 AWS 服务使用的另一个 AWS 服务中?

var MYSQL      = require('mysql');
var AWS = require('aws-sdk');

exports.handler = (event, context, callback) => {
    var connection = MYSQL.createConnection({
        host     : '127.0.0.1',
        port     : '3306',
        user     : 'myuser',
        password : 'mypass',
        database : 'mydb'
});
connection.connect();

我会将其存储在 DynamoDB table 或 S3 存储桶中。您可以为 Lambda 分配一个 IAM 角色以允许访问这些 - 也许是只读的。

或者,Lambda 现在有像 Elastic Beanstalk 这样的环境变量,您可以那样设置它。它们可以被加密,尽管这也增加了一些复杂性。

您现在可以使用 encrypted environment variables

在幕后,他们将使用 KMS 来加密值,然后允许您的 Lambda 函数使用它们,就好像它们是容器上下文中的纯文本一样。

恐怕之前给出的答案有些缺乏相关性。 AWS 推荐的存储此类数据(如 lambda 的连接字符串)的方法是 Systems Manager Parameter Store:

AWS Systems Manager provides a centralized store to manage your configuration data, whether plain-text data such as database strings or secrets such as passwords. This enables you to separate your secrets and configuration data from your code.

另请参阅:https://aws.amazon.com/blogs/compute/sharing-secrets-with-aws-lambda-using-aws-systems-manager-parameter-store/