DynamoDB,Lambda 函数/自定义模块超时



我有两个JS文件。我的问题是,当我调用调用.js调用存档.js将日志存档到 DynamoDB 时,请求超时。 我尝试过很多东西,读过很多东西,在本地/AWS环境中尝试过,但没有运气。我错过了什么?

链接 1, 链接 2, 链接 3, 链接4, 链接 5,

存档.js

module.exports.archive = archive;
...
function archive(input, callback){
AWS.config.update({
region: "eu-west-1",
endpoint: "http://localhost:8000"
});
var documentClient = new AWS.DynamoDB.DocumentClient({
httpOptions: {
agent: new https.Agent({
rejectUnauthorized: true,
secureProtocol: "TLSv1_method",
ciphers: "ALL"
})
}
});
...
var paramsPUT = {
TableName: "Logging",
Item: {
HashKey: dbID,
archiveEntry: archiveEntry
}
};
...
documentClient.put(paramsPUT, function(err, data) {
if (err) console.log(err);
if (data) console.log(data);
...
callback(data);
});

}

呼叫.js

exports.handler(event, context, callback)   => {
const archive = require("./..path..").archive;
...
context.callbackWaitsForEmptyEventLoop = false;
...
archive(input, callback);
...
}

我无法用您的代码重现超时条件。 您的代码正在与 AWS 终端节点进行通信 http://localhost:8000,因此我假设您已在本地启动并运行 DynamoDB,不是吗? 未能运行本地 DynamoDB 将导致超时。

话虽如此,我强烈建议重构您的代码以使用Promise和 NodeJS 8 提供的新async/await,而不是传递 Lambda 回调。

这是修改后的代码。

const AWS = require("aws-sdk");
async function archive(input) {
return new Promise( (resolve, reject) => {
AWS.config.update({
region: "eu-west-1",
endpoint: 'http://localhost:8000'        
});
//use client specific AWS configuration instead of the global one
const documentClient = new AWS.DynamoDB.DocumentClient();
var paramsPUT = {
TableName: "Logging",
Item: {
HashKey: "123",
archiveEntry: input
}
};
documentClient.put(paramsPUT, function (err, data) {
if (err) {
console.log("ERROR " + err);
reject(err);
}
console.log("Returned from DDB " + JSON.stringify(data, null,2));
resolve(data);
});
});
}
exports.handler = async (event, context, callback) => {
const result = await archive("abc");
callback(result);
}
// stuffs to test locally 
callback = function (data) {
console.log("callback called with " + JSON.stringify(data,null,2));
}
event = context = {}
exports.handler(event, context, callback);

相关内容

  • 没有找到相关文章

最新更新