Я использую AWS SAM (модель бессерверного приложения) для написания лямбда-функций. У меня есть требование, когда модуль / библиотека необходимо разместить на том же уровне, на котором доступна моя лямбда-функция, а затем импортировать ( привет. js) его в файл Lambda JS ( app. js).
Например, иерархия файлов проекта выглядит следующим образом: -
projectname
-> .aws-sam
-> build
-> events
-> hello-world
-> app.js
-> lib
-> hello.js
-> template.yaml
-> README.md
Теперь я использую модуль hello. js внутри приложения . js файл, как показано ниже: -
let response;
const { hello } = require('../lib/hello');
exports.lambdaHandler = async (event, context) => {
try {
response = {
'statusCode': 200,
'body': JSON.stringify({
message: hello()
})
}
} catch (err) {
console.log(err);
return err;
}
return response
};
Если я выполню, sam build , тогда только лямбда-функция ( hello-world ) получит файл сборки и сборки переходит в папку . aws -sam-> build без lib-> hello. js, и я получаю эту ошибку (см. прикрепленный снимок экрана): -
{"errorType":"Runtime.ImportModuleError","errorMessage":"Error: Cannot find module '../lib/hello'\nRequire stack:\n- /var/task/app.js\n- /var/runtime/UserFunction.js\n- /var/runtime/index.js"}
If I place the lib folder inside the lambda function (hello-world) then there is no problem and build happens successfully without any missing module.
введите описание изображения здесь
Можно ли настроить сборку sam таким образом, чтобы я мог держать lib вне (или на том же уровне) лямбда-функции, и когда я выполняю сборку, сборка происходит успешно, включая папку lib внутри папка. aws -sam-> build?