ฉันกำลังเริ่มต้นกับ 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);
}
และฉันเห็น 4 บรรทัดต่อไปนี้ในบันทึก CloudWatch ของฉัน:
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 และ / หรือ AWS Lambda ไม่ดำเนินการตามคำขอ HTTP