AWS Node JS with Request

时间:2017-03-17 03:46:49

标签: node.js amazon-web-services request aws-lambda

我不确定这里有什么不对,但我在节点js下面的lambda不起作用

'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(正文)。有人有想法吗?

1 个答案:

答案 0 :(得分:1)

我假设您发布的代码是您为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。接下来就是将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