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

时间:2017-01-06 16:11:43

标签: amazon-web-services aws-lambda

以下是我的联系方式。在Lambda中有什么方法可以设置不可见的环境变量,理想情况下可以交叉到几个lambdas吗?理想情况下,我可以使用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();

3 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:2)

您现在可以使用encrypted environment variables

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

答案 2 :(得分:1)

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

  

AWS Systems Manager提供了一个集中式存储来管理您的   配置数据,是否为纯文本数据,例如数据库字符串   或密码之类的机密。这使您可以分开   代码中的机密和配置数据。

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