我开始使用AWS Lambda,并试图从我的处理函数请求外部服务。根据this answer,HTTP请求应该可以正常工作,而且我还没有发现任何其他文档。 (事实上,人们已经发布code that use the Twilio API to send SMS)为什么此HTTP请求无法在AWS Lambda上运行?
我的处理程序代码是:
var http = require('http');
exports.handler = function(event, context) {
console.log('start request to ' + event.url)
http.get(event.url, function(res) {
console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
console.log("Got error: " + e.message);
});
console.log('end request to ' + event.url)
context.done(null);
}
,我看到在我的CloudWatch日志以下4条线路:
2015-02-11 07:38:06 UTC START RequestId: eb19c89d-b1c0-11e4-bceb-d310b88d37e2
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 start request to http://www.google.com
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 end request to http://www.google.com
2015-02-11 07:38:06 UTC END RequestId: eb19c89d-b1c0-11e4-bceb-d310b88d37e2
我期待着另一个在那里的线:
2015-02-11 07:38:06 UTC eb19c89d-b1c0-11e4-bceb-d310b88d37e2 Got response: 302
但这是缺少。如果我在本地机器的节点上使用没有处理程序包装的重要部分,代码将按预期工作。
我使用的inputfile.txt
对于invoke-async
电话是:
{
"url":"http://www.google.com"
}
好像处理程序代码,不会请求被完全忽略的一部分。我从request lib开始,并回到使用普通http
创建一个最小的例子。我也试图请求我控制的服务的URL来检查日志,并且没有请求进来。
我完全难住了。 是否有任何原因节点和/或AWS Lambda不会执行HTTP请求?
我认为这可能是由于HTTP请求中缺少用户代理引起的。 – 2015-02-11 10:55:52
在撰写本文时,这是目前AWS论坛Lambda论坛中的首要问题。这让我疯狂,也是一群其他人。 – Nostradamus 2015-06-28 22:13:09
@Nostradamus我很欣赏任何其他反馈,更正和upvotes。把它们发送到这里;-) – awendt 2015-06-29 07:37:41