AWS Lambdaを使い始めて、ハンドラー関数から外部サービスをリクエストしようとしています。この回答によると、HTTPリクエストは問題なく機能するはずですが、そうでないことを示すドキュメントは見つかりませんでした。(実際、人々はTwilio APIを使用してSMSを送信するコードを投稿しています。)
私のハンドラーコードは次のとおりです。
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"
}
リクエストを行うハンドラコードの部分が完全にスキップされているようです。私はリクエストlibから始めてhttp
、最小限の例を作成するためにプレーンを使用することに戻りました。また、ログを確認するために制御しているサービスのURLをリクエストしようとしましたが、リクエストが届きません。
私は完全に困惑しています。NodeやAWSLambdaがHTTPリクエストを実行しない理由はありますか?