У меня есть файл 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.info(err, err.stack); // an error occurred
else
{
console.info(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)"
]
}
Любая помощь приветствуется.
Требовать ваш файл
const abc = require('./abc.js');
И в функции-обработчике вызовите свой код
abc.yourExportedMethod();
У вас есть проблемы с файлом 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.info(s3Response); // your list of buckets
}
catch (ex)
{
console.error(ex);
}
}
export default abc;
Добавьте следующую строку внизу вашего abc.js
exports.bucketList = bucketList
а остальное будет работать так, как вы этого ожидаете.
Не могли бы вы уточнить? Когда я попробовал
abc.yourExportedMethod();
в моем handler.js, он выдает ошибку. Пожалуйста, проверьте мой Обновленный раздел в моем вопросе