AWS Lambdas 的本地开发服务器

Luk*_*kas 3 amazon-web-services node.js aws-lambda

是否有本地运行 AWS Lambda 的开发服务器?我的要求是

  • nodejs服务器,ruby除了和软件包go之外不需要安装任何东西nodenpm
  • 创建一个我可以通过wget/curl或 API 测试工具查询的服务器,以将各种事件发送到
  • 我应该能够指定js服务器用作 lambda 的文件,并且当我更改该文件时服务器应该重新启动/更新

das*_*mug 5

这是一个不需要serverlessor的解决方案claudiajs

express我通常只是为此目的编写自己的小脚本。我总是只使用 Lambda 代理集成,因此它更简单。

像这样的东西...

const bodyParser = require('body-parser')
const express = require('express')

// Two different Lambda handlers
const { api } = require('../src/api')
const { login } = ('../src/login')

const app = express()

app.use(bodyParser.json())

// route and their handlers
app.post('/login', lambdaProxyWrapper(login))
app.all('/*', lambdaProxyWrapper(api))


app.listen(8200, () => console.info('Server running on port 8200...'))


function lambdaProxyWrapper(handler) {
  return (req, res) => {
    // Here we convert the request into a Lambda event
    const event = {
      httpMethod: req.method,
      queryStringParameters: req.query,
      pathParameters: {
        proxy: req.params[0],
      },
      body: JSON.stringify(req.body),
    }

    return handler(event, null, (err, response) => {
      res.status(response.statusCode)
      res.set(response.headers)

      return res.json(JSON.parse(response.body))
    })
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,运行它,nodemon以便它监视文件并根据需要重新加载。

nodemon --watch '{src,scripts}/**/*.js' scripts/server.js
Run Code Online (Sandbox Code Playgroud)