我有一个使用 node.js express 开发的移动应用程序后端。我尝试将其部署为 lambda 服务。为此,我创建了一个无服务器框架项目 ( https://github.com/serverless )。以前我通过启动快速后端应用程序在本地测试移动应用程序。现在我找不到在没有本地后端的情况下在本地测试我的移动应用程序的方法。jaws run
命令仅在我调用它时运行。
有什么方法可以将 lambda 函数作为 Web 服务启动吗?或者是否有任何替代无服务器框架的方法?
我有一个使用 node.js express 开发的移动应用程序后端。我尝试将其部署为 lambda 服务。为此,我创建了一个无服务器框架项目 ( https://github.com/serverless )。以前我通过启动快速后端应用程序在本地测试移动应用程序。现在我找不到在没有本地后端的情况下在本地测试我的移动应用程序的方法。jaws run
命令仅在我调用它时运行。
有什么方法可以将 lambda 函数作为 Web 服务启动吗?或者是否有任何替代无服务器框架的方法?
现在看起来没有办法做到这一点,但版本 1.4.0 即将发布,除其他外,它应该包括一个新命令“jaws serve”,它应该可以解决您的问题。
这是公关:https ://github.com/jaws-framework/JAWS/pull/269
更新:您现在可以为此使用新的serverless-serve插件。
更新 2:serverless-serve 有一段时间没有更新了,看起来serverless-offline现在是模拟 Lambda 函数的更好选择。
您现在可以使用lambda-local。
像这样安装它:
sudo -H npm install -g lambda-local
在此示例中,将您的参数作为 JSON 对象添加到文件中event.json
,然后像这样调用该index.js
文件:
lambda-local -l index.js -h handler -e event.json
我不确定这个问题是否仍然相关,但我正在使用DEEP Framework在本地测试代码和/或将其部署在 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
披露:我是这个框架的贡献者之一
这样,您可以在 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
Bespoken sevrerless 插件使您的本地 Lambda 可以从外部访问。它对于使用 Postman 进行本地测试以及基于 Webhook 的服务(如 Alexa、Slack、Twilio 等)都非常有用。
要使用它,您只需安装插件,然后运行:
sls proxy
然后,您可以开始在本地向您的服务发送请求:
我们认为它是一个非常有用的无服务器测试工具。
这可能为时已晚.. 但是现在您可以尝试无服务器离线(https://www.npmjs.com/package/serverless-offline)就像一个魅力
这也是它的 github 页面(https://github.com/dherault/serverless-offline)
由于 1.4 尚未发布...
上周我需要完全相同的东西。因此,我创建了一个可以在本地运行的小型模拟服务器: https ://github.com/martinlindenberg/JawsLocalServer
一个例子lambda_function.py
:
def lambda_handler(*args, **kwargs):
return 'hello'
本地 lambda 函数的示例调用:
pip install python-lambda-local
echo '{}' >> event.json
python-lambda-local -t 15 -f lambda_handler lambda_function.py event.json
截至本文发布之日,您可以通过在本地运行函数sls function run [name-of-function]
。函数中使用的任何 jsonevent.json
都将传递到您的函数中。
为了测试您的端点,您还可以使用Serverless Offline,它是该serverless-serve
项目的一个分支。