Как проверить локальные функции aws lambda
У меня есть мобильное приложение, разработанное с помощью node.js express. Я попробовал его развернуть его как лямбда-сервис. Для этого я создал проект без сервера (https://github.com/serverless). Раньше я тестировал мобильное приложение локально, открывая экспресс-приложение. Теперь я не могу найти метод для тестирования моего мобильного приложения локально без локального бэкэнд. Команда jaws run
запускается только после ее вызова.
Есть ли какой-либо метод для запуска лямбда-функции в качестве веб-службы? Или есть альтернатива безсерверной платформе?
Ответы
Ответ 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
- Все заголовки и параметры были скопированы в объект-событие, переданный обработчику.
- Объект контекста - это простой объект, который перенаправляет данные в объект ответа
Ответ 5
Это может быть слишком поздно.. Но теперь вы можете попробовать Serverless-Offline (https://www.npmjs.com/package/serverless-offline) работает как шарм
Также это страница github для него (https://github.com/dherault/serverless-offline)
Ответ 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