我正在尝试编写一个lambda函数,它将对在pod的ec2实例中运行的服务的端点进行3次http调用, aws lambda将由我配置的cron触发, 配置aws lambda时,我还在网络设置中添加了VPC。
我正在使用node.js 8.10编写我的lambda处理函数,这是我的lambda处理函数的代码
x = my_custom_conv_layer(x, weights, args..)
我也尝试过
'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');
}
我提到了this答案
有什么原因不能正常工作吗?
答案 0 :(得分:3)
利用(最新的)async/await功能,并减少样板,您可以像这样提出请求:
const get = async (requestUrl) => {
return new Promise((resolve, reject) => {
http.get(requestUrl, function(res) {
console.log("Got response: " + res.statusCode);
resolve(res);
}).on('error', function(e) {
console.log("Got error: " + e.message);
reject(e);
});
});
}
在您的lambda文件中定义该函数,然后可以在处理程序函数中调用它,如下所示:
const response1 = await get('url1');
然后您的lambda应该可以正常运行。
有关将async
函数与AWS Lambda结合使用的更多信息,请参见this blog post(从他们将Node.js 8.10运行时引入AWS Lambda时开始(因此允许async/await
功能)。