ローカルでテストしたところうまく動作しましたが、AWS経由でラムダがHTTP getを実行していないように見える機能があります。次のように コードは次のとおりです。ラムダ関数はhttp.getを実行していません
function makeAPIRequest(path, responseControl, callback) {
var responseString = '';
console.log("Executing makeAPIRequest to " + apiSettings.host + " and path " + path);
var options = {
host: apiSettings.host,
path: path,
method: 'GET',
headers: {
'X-Auth-Token': apiSettings.token
}
};
http.get(options, function (res) {
console.log('Status Code: ' + res.statusCode);
if (res.statusCode != 200) {
callback(new Error("Non 200 Response"));
}
res.on('data', function (data) {
responseString += data;
});
res.on('end', function() {
console.log('http end function hit...');
callback(null, responseString);
});
}).on('error', function (e) {
console.log("Communications error: " + e.message);
callback(new Error(e.message));
});
}
私は当初、要求NPMパッケージを使用してそれを書いたが、それは失敗したので、私はバニラhttp.getに戻って落ちますが、どちらも実行するようです。渡される正しいホストとパスで
console.log("Executing makeAPIRequest to " + apiSettings.host + " and path " + path);
が、
console.log('Status Code: ' + res.statusCode);
は、画面に出力されません:ラムダからのログ出力では、私は次の出力を見ることができます。ログに記録されるエラーはなく、私が打つAPIエンドポイントはAPIリクエストの数を報告しますが、これは変更されていないため、リクエストが行われているとは思われません。
誰もがhttp呼出をするためにラムダを持っていますか?もしそうなら、私はここで何をしていないのでしょうか?
おかげ
編集:「はVPCが」私は数日ごとにここにこの質問のいくつかのバリエーションを見るラムダ
ラムダはタイムアウトで終了しますか?タイムアウト設定とは何ですか? – Leon
ちょっと単純化されたコードのバージョンが私に適していることを確認しました。 'http.get()'のハンドラが開始されないようにする他のコールバックはありますか? – Leon
レオンに感謝、あなたは正しい道を私に導いた。 ラムダ関数がレスポンスを「待っていない」ようにJavaScriptが私のコールバックの処理方法に問題があったスパゲッティコードが表示されます。 – LDJ