Вызов файла из 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.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)"
  ]
}

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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.info(s3Response); // your list of buckets 

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

export default abc;

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

exports.bucketList = bucketList

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

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