Подтвердить что ты не робот

Как проверить локальные функции aws lambda

У меня есть мобильное приложение, разработанное с помощью node.js express. Я попробовал его развернуть его как лямбда-сервис. Для этого я создал проект без сервера (https://github.com/serverless). Раньше я тестировал мобильное приложение локально, открывая экспресс-приложение. Теперь я не могу найти метод для тестирования моего мобильного приложения локально без локального бэкэнд. Команда jaws run запускается только после ее вызова.

Есть ли какой-либо метод для запуска лямбда-функции в качестве веб-службы? Или есть альтернатива безсерверной платформе?

4b9b3361

Ответ 1

Сейчас не похоже, как это сделать, но версия 1.4.0 должна быть выпущена, и, помимо всего прочего, она должна включать новую команду "chaws serve", которая должна решить вашу проблему.

Здесь PR: https://github.com/jaws-framework/JAWS/pull/269

UPDATE: теперь вы можете использовать новый serverless-serve плагин.

UPDATE 2: serverless-serve не обновлялся через некоторое время, похоже, что serverless-offline - гораздо лучший вариант для эмуляции функций лямбда.

Ответ 2

Я не уверен, что этот вопрос по-прежнему актуальным или нет, но я использую DEEP Framework для проверки кода локально и/или развернуть его на AWS Lambda. Проверьте это:

npm install deepify -g

deepify run-lambda --help

  [email protected] - 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 

Раскрытие информации: Я являюсь одним из участников этой структуры

Ответ 3

Беспотенциальный плагин Bespoken делает ваши локальные Lambdas доступными извне. Это очень полезно как для локального тестирования с помощью Postman, так и для Webhook-сервисов (таких как Alexa, Slack, Twilio и т.д.).

Архитектура показана здесь: введите описание изображения здесь

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

sls proxy

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

введите описание изображения здесь

Мы считаем, что это очень полезный инструмент для тестирования без сервера.

Ответ 4

Поскольку 1.4 еще не выпущен...

На прошлой неделе мне нужно было точно то же самое. Поэтому я создал небольшой макетный сервер, который можно запускать локально: https://github.com/martinlindenberg/JawsLocalServer

  • Все заголовки и параметры были скопированы в объект-событие, переданный обработчику.
  • Объект контекста - это простой объект, который перенаправляет данные в объект ответа

Ответ 6

Теперь вы можете использовать лямбда-локальный.

Установите это так:

sudo -H npm install -g lambda-local

Добавьте ваши параметры в виде объекта JSON в файл, в этом примере event.json, и вызовите файл index.js следующим образом:

lambda-local -l index.js -h handler -e event.json

Ответ 7

Начиная с даты этого сообщения, вы можете запускать функции локально, выполняя sls function run [name-of-function]. Любой json, используемый в вашей функции event.json, будет передан в вашу функцию.

Для тестирования конечных точек вы также можете использовать Serverless Offline, который является вилкой проекта serverless-serve.

Ответ 8

Безсерверная структура теперь предоставляет способ локального вызова функций

При этом вы можете создавать запросы в файлах json, таких как

{
  "body": "{\"hello\":\"world\"}",
  "pathParameters": {
    "id": "foo"
  },
  "queryStringParameters": {
    "bar": "42"
  }
  "requestContext": {
    "identity": {
      "cognitoIdentityId": "cognito-id"
    }
  }
}

Если ваша функция описана в файле serverless.yml, вы можете вызвать ее локально с помощью

serverless invoke local --function yourFunction --path path/to/your/mock.json

Ответ 9

питон

Пример lambda_function.py:

def lambda_handler(*args, **kwargs):
    return 'hello'

Пример вызова локальной лямбда-функции:

pip install python-lambda-local
echo '{}' >> event.json
python-lambda-local -t 15 -f lambda_handler lambda_function.py event.json