Можно ли настроить команду сборки AWS SAM для приложения NodeJS? - PullRequest
0 голосов
/ 20 июня 2020

Я использую 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"}

enter image description here

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?

...