从DynamoDB设置Nodejs ENV

时间:2016-07-12 07:00:03

标签: node.js amazon-dynamodb aws-lambda

我知道nodejs中的模块是同步的,但我遇到的问题是在该模块中,它使用aws-sdk对DynamoDB进行异步调用。因此,模块在对DynamoDB的异步调用之前完成,并允许其余的nodejs应用程序继续。

我放在一起的模块是为了从DynamoDB获取环境变量,并将它们设置为在APP中使用,这意味着要在运行时完成一次。

这是一个nodejs lambda函数,因此需要在运行时完成,而不是每次运行该函数。

以下是我的模块代码:

    var AWS = require("aws-sdk");
    var config = require("../config/config.js");

    module.exports = {

    setEnv: function(){

    AWS.config.update({
        region: config.awsregion,
        accessKeyId: process.env.AWSDYNAMOACCESS,
        secretAccessKey: process.env.AWSDYNAMOSECRET,
        sslEnabled: true,
        maxRetries: 5

    }); 

    var db = new AWS.DynamoDB.DocumentClient();

    var table = config.envTable;

    var params = {
        TableName: table,
        Key: {
            "type": config.envType
        }
    };

    db.get(params, function(err, data) {
        if (err) {
            console.error("Unable to read item. Error JSON:", JSON.stringify(err, null, 2));
        } else {

        console.log("GetItem succeeded:", JSON.stringify(data, null, 2));
        process.env.APIKEY = data.Item.tkey;
        process.env.KEYEXPIRE = data.Item.tkeyexpire;

        }
    });
}
    };

    module.exports.load = module.exports.setEnv

任何建议都将不胜感激。

0 个答案:

没有答案