Вызов файла из aws lambda handler.js?

У меня есть файл node.js (например, abc.js), который будет выдавать результат, когда я запускаю в своем редакторе node.js. Я хочу запустить тот же файл в AWS Lambda. Для этого я создал лямбду и переместил туда abc.js. Для запуска мне кажется, что мне нужно реализовать мой файл abc.js в handler.js (т.е. лямбда-способ означает обратный вызов и т. д.).

Есть ли способ запустить 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)
  }
}

Мой 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)"
  ]
}

Любая помощь приветствуется.

2
0
993
3

Ответы 3

Требовать ваш файл

const abc = require('./abc.js');

И в функции-обработчике вызовите свой код

abc.yourExportedMethod();

Не могли бы вы уточнить? Когда я попробовал abc.yourExportedMethod(); в моем handler.js, он выдает ошибку. Пожалуйста, проверьте мой Обновленный раздел в моем вопросе

Private 13.09.2018 20:59

У вас есть проблемы с файлом abc.js.

Попробуйте этот фрагмент:

const abc = async function() 
{
    try
    {
        const AWS = require('aws-sdk');
        let s3 = new AWS.S3({region: "ap-south-1", apiVersion: '2006-03-01' });
        let params= {};
        const s3Response = await s3.listBuckets(params).promise();

        console.log(s3Response); // your list of buckets 

    }
    catch (ex)
    {
        console.error(ex);
    }
}

export default abc;

Добавьте следующую строку внизу вашего abc.js

exports.bucketList = bucketList

а остальное будет работать так, как вы этого ожидаете.

Другие вопросы по теме