Локальное тестирование функций 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 и т. д.).

архитектура показана здесь: enter image description here

чтобы использовать его, вы просто установите плагин, запустите:

sls proxy

затем вы можете начать отправлять запросы в службу локально:

enter image description here

мы считаем, что это очень полезный инструмент для тестирования с 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