Как тестировать лямбда-функции облачной информации локально?

Вариант использования

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

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

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

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

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


person Private    schedule 06.03.2019    source источник
comment
Одинаковы ли обработчики, rte и триггеры событий для всех функций? Вы всегда можете использовать консоль aws для тестирования ваших лямбда-функций. medium.com/@reginald.johnson/   -  person Sushant Sonker    schedule 06.03.2019
comment
@SushantSonker, да, вы правы, мы всегда можем использовать консоль aws, но для тестирования нам нужно развернуть лямбда-функции. Если в SAM мы не развертываем в aws, а делаем это в контейнере докера, я спрашиваю, есть ли какой-либо инструмент такого типа для лямбда-выражений облачной информации.   -  person Private    schedule 07.03.2019
comment
Насколько я знаю, у вас есть 2 варианта - 1. который вы уже упоминаете в своем вопросе (напишите бессерверный yaml) 2. такой же, как @SushantSonker   -  person asr9    schedule 07.03.2019
comment
@ASR Вы правы. Сейчас я использую Option 1. Но надеюсь, что смогу найти лучший вариант, чем этот :)   -  person Private    schedule 07.03.2019
comment
Вы изучали местный SAM? У меня нет, но у них может быть это.   -  person asr9    schedule 07.03.2019
comment
@ASR для преобразования лямбда-выражений облачной информации в sam Я использую функцию лямбда-консоли export. У SAM local пока все в порядке ..   -  person Private    schedule 08.03.2019


Ответы (1)


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

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

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

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

person Cleriston    schedule 28.05.2019