【发布时间】:2019-04-30 00:09:12
【问题描述】:
我正在尝试编写一个 lambda 函数,该函数将对在我的 pod 的 ec2 实例中运行的服务的端点进行 3 次 http 调用, aws lambda 将由我配置的 cron 触发, 在配置 aws lambda 时,我还在网络设置中添加了 VPC。
我正在使用 node.js 8.10 来编写我的 lambda 处理函数,这是我的 lambda 处理函数的代码
'use strict';
var http = require('http');
exports.handler = async (event) => {
http.get('url1', function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
http.get('url2', function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
http.get('url3', function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
console.log('end request to');
}
我也试过了
'use strict';
var http = require('http');
exports.handler = async (event,context) => {
http.get('url1', function(res) {
console.log("Got response: " + res.statusCode);
context.succeed();
}).on('error', function(e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
http.get('url2', function(res) {
console.log("Got response: " + res.statusCode);
context.succeed();
}).on('error', function(e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
http.get('url3', function(res) {
console.log("Got response: " + res.statusCode);
context.succeed();
}).on('error', function(e) {
console.log("Got error: " + e.message);
context.done(null, 'FAILURE');
});
console.log('end request to');
}
但在这两种情况下我都得到了这个:
START RequestId: 0fa5225f-a54f-11e8-85a9-83174efb4714 Version: $LATEST
2018-08-21T14:32:41.855Z 0fa5225f-a54f-11e8-85a9-83174efb4714 end request to
END RequestId: 0fa5225f-a54f-11e8-85a9-83174efb4714
REPORT RequestId: 0fa5225f-a54f-11e8-85a9-83174efb4714
我参考this回答
有什么原因导致它不工作吗?
【问题讨论】:
-
您可能正在使用更新版本的 Node.js 运行时(考虑到您对函数声明使用了
async关键字)。这意味着您真的不想使用context来处理 lambda 的执行。相反,我将依赖async await功能,并在您的功能完成后简单地使用return。 -
另外,看看this page,它解释了如何使用更新的运行时。
标签: node.js amazon-web-services aws-lambda