Я использую AWS SAM в Visual Studio Code для настройки ряда Node.js лямбда-функций. Я использую Windows 10. Я только начинаю с AWS SAM и сгенерировал Sample Hello World App, используя командную палитру, и она работает. Я начал расширять приложение, добавив вторую функцию и реструктурировав структуру каталогов, чтобы начать добавлять больше функций. Моя структура каталогов теперь выглядит следующим образом:
|--my-app
| |--event-handlers
| | |--hello-world
| | | |--app.js
| | |--hello-world-2
| | | |--app.js
| |--package.json
| |--template.yml
Когда я запускаю sam build
, я получаю ошибку Невозможно установить из .. \ my-app \ event-handlers \ hello-world как это не содержит пакет. json файл . Если я скопирую свой пакет. json файл в каждый из подкаталогов hello-world и hello-world-2 , тогда sam build
будет работать нормально. Но кажется неправильным, что мне нужно указывать отдельный файл пакета. json для каждой функции, потому что он нарушает принципы DRY. Я ожидал, что он должен использовать пакет. json из каталога root для всех моих лямбда-функций, если я структурирую его следующим образом.
Нужно ли мне действительно дублировать пакет. json file для каждой лямбда-функции? Каковы лучшие практики с точки зрения структуры каталогов для приложения SAM, которое определяет несколько лямбда-функций? Почему он не забирает мой пакет. json файл из моего каталога root?
Для справки я также включил раздел моего файла template.yaml
Resources:
HelloWorldFunction:
Type: AWS::Serverless::Function
Properties:
CodeUri: event-handlers/hello-world/
Handler: app.lambdaHandler
Runtime: nodejs12.x
Events:
HelloWorld:
Type: Api
Properties:
Path: /hello
Method: get
HelloWorldFunction2:
Type: AWS::Serverless::Function
Properties:
CodeUri: event-handlers/hello-world-2/
Handler: app.lambdaHandler
Runtime: nodejs12.x
Events:
MyScheduledEvent:
Type: Schedule
Properties:
Schedule: rate(2 minutes)
Name: app.lambdaHandler
Description: Interval at which node function should be called
Enabled: True