27

我有一个使用 node.js express 开发的移动应用程序后端。我尝试将其部署为 lambda 服务。为此,我创建了一个无服务器框架项目 ( https://github.com/serverless )。以前我通过启动快速后端应用程序在本地测试移动应用程序。现在我找不到在没有本地后端的情况下在本地测试我的移动应用程序的方法。jaws run命令仅在我调用它时运行。

有什么方法可以将 lambda 函数作为 Web 服务启动吗?或者是否有任何替代无服务器框架的方法?

4

9 回答 9

19

现在看起来没有办法做到这一点,但版本 1.4.0 即将发布,除其他外,它应该包括一个新命令“jaws serve”,它应该可以解决您的问题。

这是公关:https ://github.com/jaws-framework/JAWS/pull/269

更新:您现在可以为此使用新的serverless-serve插件。

更新 2:serverless-serve 有一段时间没有更新了,看起来serverless-offline现在是模拟 Lambda 函数的更好选择。

于 2015-11-25T23:04:33.657 回答
4

您现在可以使用lambda-local

像这样安装它:

sudo -H npm install -g lambda-local

在此示例中,将您的参数作为 JSON 对象添加到文件中event.json,然后像这样调用该index.js文件:

lambda-local -l index.js -h handler -e event.json
于 2018-10-11T12:52:30.400 回答
3

我不确定这个问题是否仍然相关,但我正在使用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 

披露:我是这个框架的贡献者之一

于 2016-02-04T00:59:32.880 回答
3

无服务器框架现在提供了一种在本地调用函数的方法

这样,您可以在 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
于 2019-04-25T15:40:12.523 回答
2

Bespoken sevrerless 插件使您的本地 Lambda 可以从外部访问。它对于使用 Postman 进行本地测试以及基于 Webhook 的服务(如 Alexa、Slack、Twilio 等)都非常有用。

架构如下所示: 在此处输入图像描述

要使用它,您只需安装插件,然后运行:

sls proxy

然后,您可以开始在本地向您的服务发送请求:

在此处输入图像描述

我们认为它是一个非常有用的无服务器测试工具。

于 2016-11-03T22:33:02.737 回答
2

这可能为时已晚.. 但是现在您可以尝试无服务器离线(https://www.npmjs.com/package/serverless-offline)就像一个魅力

这也是它的 github 页面(https://github.com/dherault/serverless-offline

于 2017-08-29T06:14:13.760 回答
1

由于 1.4 尚未发布...

上周我需要完全相同的东西。因此,我创建了一个可以在本地运行的小型模拟服务器: https ://github.com/martinlindenberg/JawsLocalServer

  • 所有标头和参数都被复制到传递给处理程序的事件对象。
  • 上下文对象是一个将数据转发给响应对象的简单对象
于 2015-12-07T11:24:22.510 回答
1

Python

一个例子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
于 2019-06-29T14:45:09.583 回答
0

截至本文发布之日,您可以通过在本地运行函数sls function run [name-of-function]。函数中使用的任何 jsonevent.json都将传递到您的函数中。

为了测试您的端点,您还可以使用Serverless Offline,它是该serverless-serve项目的一个分支。

于 2016-04-10T16:04:17.157 回答