【发布时间】:2019-10-03 20:43:26
【问题描述】:
我的代码在使用 serverless invoke local -f myFunction -d 3 进行本地测试时工作正常一旦我使用 node.js 8.10 运行时将其部署到 lambda 并尝试使用 launch.js 运行它,我收到错误“任务在 6.01 秒后超时” aws 控制台我已将超时更改为 2 分钟,这是充足的时间
这是我得到的回复:
{ StatusCode: 200,
FunctionError: 'Unhandled',
LogResult:
'U1RBUlQgUmVxdWVzdElkOiBlY2I0OWVjMC05NTFjLTQ2NTAtOTI3ZS01NDdkMzIzM2QyODUgVmVyc2lvbjogJExBVEVTVApFTkQgUmVxdWVzdElkOiBlY2I0OWVjMC05NTFjLTQ2NTAtOTI3ZS01NDdkMzIzM2QyODUKUkVQT1JUIFJlcXVlc3RJZDogZWNiNDllYzAtOTUxYy00NjUwLTkyN2UtNTQ3ZDMyMzNkMjg1CUR1cmF0aW9uOiA2MDA2LjI0IG1zCUJpbGxlZCBEdXJhdGlvbjogNjAwMCBtcyAJTWVtb3J5IFNpemU6IDEwMjQgTUIJTWF4IE1lbW9yeSBVc2VkOiAxMDUgTUIJCjIwMTktMDUtMTZUMTQ6MTE6MTMuOTk0WiBlY2I0OWVjMC05NTFjLTQ2NTAtOTI3ZS01NDdkMzIzM2QyODUgVGFzayB0aW1lZCBvdXQgYWZ0IgNi4wMSBzZWNvbmRzCgo=',
ExecutedVersion: '$LATEST',
Payload:
'{"errorMessage":"2019-05-16T14:11:13.994Z ecb49ec0-951c-4650-927e-547d3233d285 Task timed out after 6.01 seconds"}' }
launch.js
这个文件定义了一个函数来调用我的 lambda 函数来抓取有多少页面的数据
"use strict";
const AWS = require("aws-sdk")
var pages = [1]
function deployScraper(page) {
const lambda = new AWS.Lambda({
region: "eu-west-2"
});
const params = {
FunctionName: "serverless-dev-myFunction",
InvocationType: "RequestResponse",
LogType: "Tail",
Payload: JSON.stringify(page)
};
return lambda.invoke(params, function(error, data) {
if (error) {
console.error(JSON.stringify(error));
return new Error(`Error scraping: ${JSON.stringify(error)}`);
} else if (data) {
console.log(data);
return JSON.stringify(data);
}
});
}
function swarm(arr) {
arr.forEach(page => {
deployScraper(page);
});
}
swarm(pages);
handler.js这是我的 lambda 函数,它登录到站点并从页面打印出一组数据
"use strict";
const {login, getDataArray, saveToDB} = require("./utils");
const username = 'my_username';
const password = 'my_password';
module.exports.myFunction = (page, context, callback) => {
// 1. login to site
login(username, password)
// 2. scrape data from page
.then( () => getDataArray(page))
// 3. upload data to DB
.then(data => saveToDB(data))
.catch(error =>
callback(new Error(`Error scraping ${page}: ${JSON.stringify(error)}`))
);
};
【问题讨论】:
-
您是否为您的 lambda vpc 启用了互联网访问权限?
标签: javascript node.js amazon-web-services aws-lambda