从AWS lambda handler.js调用文件吗?

时间:2018-09-13 16:32:36

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

我有node.js文件(即abc.js),当我在node.js编辑器中运行时,它将提供输出。我想在AWS Lambda中运行相同的文件。为此,我创建了一个lambda并将abc.js移动到了那里。要运行,似乎我需要在handler.js中实现abc.js文件(即lambda表示回调等)。

有什么方法可以从abc.js触发handler.js而不是在handler.js中再次实现相同的事情?

已检查上述用例,但在google上找不到很多。

已更新

我的abc.js文件

var AWS = require('aws-sdk');
// Set the region 
AWS.config.update({
    region: "ap-south-1"
   });

// Create S3 service object
s3 = new AWS.S3();
var params= {};
 s3.listBuckets(params, bucketList);
function bucketList(err, data) {
  if (err) console.log(err, err.stack); // an error occurred
  else   
  {   
        console.log(data)
  }
}

我在lambda中的handler.js,并根据我对您答案的解释对其进行修改。

exports.handler = async (event) => {
    const abc = require('./abc.js');
    // TODO implement
abc.bucketList();     
};

这是我得到的错误

Response:
{
  "errorMessage": "abc.bucketList is not a function",
  "errorType": "TypeError",
  "stackTrace": [
    "exports.handler (/var/task/index.js:5:5)"
  ]
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

abc.js

的底部添加以下行
exports.bucketList = bucketList

其余的将按您期望的那样工作。