2017-03-17 137 views
0

我不知道什麼是錯在這裏,但我下面的拉姆達在節點JS不工作AWS節點JS與請求

'use strict'; 
exports.handler = function (event, context) { 
    try { 

    var req = require('request'); 
    var headers = { 'User-Agent': 'Super Agent/0.0.1' }; 

    var options = { 
     url: 'http://google.com', 
     method: 'GET', 
     headers: headers 
    }; 

    req(options, function (error, response, body) { 
     console.log(body); 
    }); 

以上是加載模塊正常,但它並沒有獲取到的console.log(身體)由於某種原因。任何人有想法?

+0

也許這是錯誤?嘗試添加'if(!error && response.statusCode == 200)'和'else console.log(error)'來檢查。 –

+0

似乎工作!你可以粘貼你的整個代碼的Lambda,你有回調和... – Majid

+0

我不能粘貼整個事情。問題是控制檯日誌在這裏爲主體不返回所有的代碼繼續就好了只是在該請求功能的任何東西不會返回任何想法在控制檯中的任何東西? – SernOne

回答

0

我假設您發佈的代碼是您爲lambda編寫的代碼。 AWS Lambda具有稱爲處理程序的特定入口點/函數,它在調用lambda時運行。因此,每個lambda函數都必須具有此方法才能符合lambda。

exports.handler = (event, context, callback) => { 
} 

此外,lambda的外部依賴不會自動拉出。因此,我們需要使用依賴關係壓縮整個代碼並將其上傳到lambda,以便在有外部依賴的情況下工作。

lambda.js現在

var req = require('request'); 
var headers = { 'User-Agent': 'Super Agent/0.0.1' }; 

// Configure the request 
var options = { 
    url: 'http://google.com', 
    method: 'GET', 
    headers: headers 
}; 

exports.handler = (event, context, callback) => { 
req(options, function (error, response, body) { 
    console.log(body); 
    callback(error); 
}); 
} 

讓我們考慮一下你的目錄結構是爲

node_modules/ 
lambda.js 
package.json 

現在你需要壓縮該內容,並把它上傳到拉姆達在AWS 。接下來的事情是將lambda.js指向當前lambda的處理程序。

如果一切正常完成,現在可以在lambda調用後看到cloudwatch中的日誌。

參考文獻:

http://docs.aws.amazon.com/lambda/latest/dg/get-started-create-function.html http://docs.aws.amazon.com/lambda/latest/dg/nodejs-create-deployment-pkg.html

+0

非常感謝您花時間做出回覆,我的代碼確實有處理程序,並且我確實按照要求構建了包,其餘代碼爲 [code] 'use strict'; exports.handler = function(event,context){ try { var req = require('request'); var headers = {'User-Agent':'Super Agent/0.0.1'}; var options = { url:'http://google.com', 方法:'GET', 標題:標題 }; req(options,function(error,response,body){console.log(body); }); [/ code] – SernOne

+0

機體未在控制檯中顯示。 – SernOne