Как проверить облачность лямбда-функций локально? - PullRequest
1 голос
/ 06 марта 2019

USECASE

У меня есть стек облачной информации, который имеет около 25 лямбда-функций. Перед развертыванием в производство мне нужно проверить все функции локально.

Я знаю, что у aws есть SAM Cli для тестирования бессерверных функций, у которых совершенно другой синтаксис по сравнению с лямбдами облачной информации.

Есть ли какой-нибудь возможный инструмент от aws, который решает мой вариант использования?

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

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

1 Ответ

0 голосов
/ 28 мая 2019

Я знаю, что вы выбрали SAM cli для создания своих шаблонов, но я бы посоветовал вам перейти на Serverless (npm i serverless -g), поскольку они более продвинуты. Serverless - это инфраструктура, созданная инженерами и не имеющая облачного провайдера, подключенного к нему / зависимого от него, поэтому вы сможете легко переключаться с Azure на AWS из вашего шаблона.

Поскольку он поддерживается большим сообществом разработчиков, в фреймворке есть множество плагинов, включая автономный плагин без сервера, который позволит вам запускать ваш API локально, как если бы вы только что запускали node index.js. Существуют также плагины, такие как «serverless-jest» или «serverless-mocha» для модульных тестов, но в итоге я использовал обычный интеграционный тест «Jest» (я использую пул пользователей cognito и мне нужно проверить токен аутентификации).

Если вы действительно хотите протестировать свой код архитектуры облачной информации, вы можете иметь JS-файл со своей функцией и запускать его с узлом локально, и вместо того, чтобы иметь код в своем шаблоне облачной информации, вам нужно будет заархивировать ip, загрузить на S3, а затем сообщите путь в вашем шаблоне.

Таким образом, я знаю, что вы спрашивали, как протестировать SAM без сервера, но, поскольку вы хотели бы иметь надлежащий процесс разработки (локальное выполнение, модульное тестирование, конвейер и т. Д.), Переключение на инфраструктуру без сервера было бы решением. Вы можете моделировать функции через узел, но это увеличит ваше ручное управление тем, что уже делает фреймворк.

...