Локальное тестирование функций aws lambda
У меня есть мобильное приложение, разработанное с помощью node.JS express. Я попытался развернуть его как лямбда-сервис. Для этого я создал проект Serverless Framework (https://github.com/serverless). Ранее я тестировал мобильное приложение локально, запустив приложение express backend. Теперь я не могу найти способ проверить свое мобильное приложение локально без локального бэкэнда. jaws run
команда запускается только один раз, когда я ее вызвал.
есть ли какой-либо метод для запуска лямбда-функции как веб-сервис? Или есть ли альтернатива Serverless Framework?
7 ответов
не похоже, что есть способ сделать это прямо сейчас, но версия 1.4.0 скоро будет выпущена, и, среди прочего, она должна включать новую команду "jaws serve", которая должна решить вашу проблему.
вот PR:https://github.com/jaws-framework/JAWS/pull/269
UPDATE: теперь вы можете использовать новый serverless-служить плагин для этого.
UPDATE 2: serverless-serve не обновлялся некоторое время, похоже serverless-offline теперь гораздо лучший вариант для эмуляции лямбда-функций.
Я не уверен, что этот вопрос все еще актуален или нет, но я использую глубокие рамки для локального тестирования кода и / или его развертывания на AWS Lambda. Проверьте это:
npm install deepify -g
deepify run-lambda --help
run-lambda@1.6.8 - Run Lambda function locally
Usage example: deepify run-lambda path/to/the/lambda -e='{"Name":"John Doe"}'
Arguments:
path: The path to the Lambda (directory of handler itself)
Options:
--event|-e: JSON string used as the Lambda payload
--skip-frontend-build|-f: Skip picking up _build path from the microservices Frontend
--db-server|-l: Local DynamoDB server implementation (ex. LocalDynamo, Dynalite)
--version|-v: Prints command version
--help|-h: Prints command help
раскрытие информации: я один из участников этой структуры
на Bespoken sevrerless плагин делает ваши местные лямбды внешне доступными. Это очень полезно как для локального тестирования с Postman, так и для webhook-сервисов (таких как Alexa, Slack, Twilio и т. д.).
чтобы использовать его, вы просто установите плагин, запустите:
sls proxy
затем вы можете начать отправлять запросы в службу локально:
мы считаем, что это очень полезный инструмент для тестирования с serverless.
As 1.4 еще не выпущен...
на прошлой неделе мне нужно было то же самое. Поэтому я создал небольшой макет сервера, который можно запустить локально: https://github.com/martinlindenberg/JawsLocalServer
- все заголовки и параметры были скопированы в объект-событие, который передается обработчику.
- объект контекста-это простой объект, который пересылает данные объекту ответа
по состоянию на дату этого поста, вы можете запускать функции локально, выполнив sls function run [name-of-function]
. Любой json, используемый в вашей функции event.json
передается в вашу функцию.
для тестирования конечных точек, вы можете также использовать Serverless Offline который является вилкой .
Это может быть слишком поздно.. Но теперь вы можете попробовать Serverless-Offline (https://www.npmjs.com/package/serverless-offline) работает как шарм
также это страница github для него (https://github.com/dherault/serverless-offline)
теперь вы можете использовать лямбда-местные.
установите его следующим образом:
sudo -H npm install -g lambda-local
добавьте свои параметры в качестве объекта JSON в файл, в этом примере event.json
, а вызов такой:
lambda-local -l index.js -h handler -e event.json