Пользовательский шаг сборки для SAM CLI - PullRequest
2 голосов
/ 11 февраля 2020

При использовании AWS SAM CLI для создания безсерверного приложения он волшебным образом обнаруживает зависимости и устанавливает их все как этап «сборки». Например, используя приложение NodeJS:

$> sam build
Building resource 'HelloWorldFunction'
Running NodejsNpmBuilder:NpmPack
Running NodejsNpmBuilder:CopyNpmrc
Running NodejsNpmBuilder:CopySource
Running NodejsNpmBuilder:NpmInstall
Running NodejsNpmBuilder:CleanUpNpmrc

Build Succeeded

Built Artifacts  : .aws-sam/build
Built Template   : .aws-sam/build/template.yaml

Commands you can use next
=========================
[*] Invoke Function: sam local invoke
[*] Deploy: sam deploy --guided

$>

Глядя на официальную документацию , они счастливы просто относиться к нему как к волшебникам c, говоря, что оно:

перебирает функции в вашем приложении, ищет файл манифеста (например, requirements.txt), который содержит зависимости, и автоматически создает артефакты развертывания, которые вы можете развернуть в Lambda

Но что, если у меня есть зависимость помимо тех, которые указаны в файле манифеста? Что если мой код зависит от скомпилированного двоичного файла или файла данных stati c?

Я хотел бы добавить дополнительные этапы сборки, чтобы при запуске sam build он компилировал эти файлы или копировал их соответствующим образом , Есть ли способ сделать это?

Ответы [ 2 ]

1 голос
/ 07 марта 2020

sam build работает npm install. Поэтому, если вы вставите свой собственный скрипт в шаг, такой как preinstall в пакете. json, sam build также выполнит этот шаг.

package. json

{
  ...
  "preinstall": "cp -r ../../../common ./"
  ...
}

Приведенный выше сценарий предварительной установки представляет собой хак, который встраивает общий каталог в папку root проекта, инициированного sam, в zip-код каждого лямбда-обработчика, чтобы на него можно было ссылаться из каждого.

Вы также должны создать символьную ссылку c в локальном каталоге-обработчике лямбда, например ln -s ../common ./common, чтобы local и lambda работали с одним и тем же кодом.

0 голосов
/ 15 февраля 2020

Вам нужно будет обернуть эту команду в другую пользовательскую команду и добавить к ней необходимые шаги.

Вы можете создать файл make с несколькими целями, которые удовлетворяют вашим требованиям.

I Я не использовал sam build раньше, у меня обычно есть цель для этой цели.

Вы можете попробовать его с этим шаблоном bootstrap здесь https://github.com/healthbridgeltd/nodejs-sam-bootstrap, что более эффективнее, чем использование sam build.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...