如何将node.js快速服务器转换为AWS Lambda?

雷扎

我有一个带有许多端点的功能完善的node.js Express服务器。

我需要将此代码转换为AWS lambda。我所看到的所有示例中,快递服务器仅公开一个端点,并且将其定义并导出为ex​​ports.handler。

他们在暗示如何做到这一点吗?

svsdnb

如果我对您的理解正确,那么您有想要在Lambda上运行的express.js应用程序吗?

Claudia.js可以帮助您将应用程序部署到AWS Lambda。

在运行Claudia命令之前,请确保已配置AWS访问凭证。

您的代码应稍作修改以支持AWS Lambda并通过Claudia进行部署。您需要导出应用程序,而不是使用app.listen启动服务器。您的app.js应该类似于以下代码清单:

'use strict'
const express = require('express')
const app = express()
app.get('/', (req, res) => res.send('Hello world!'))
module.exports = app

那会破坏本地Express服务器,但是您可以添加具有以下内容的app.local.js文件:

'use strict'
const app = require('./app')
const port = process.env.PORT || 3000
app.listen(port, () => 
console.log(`Server is listening on port ${port}.`)
)

然后使用以下命令运行本地服务器:

node app.local.js

为了使您的应用程序可以与AWS Lambda一起正常使用,您需要为Express应用程序生成AWS Lambda包装器。使用Claudia,您可以通过在终端中运行以下命令来实现:

claudia generate-serverless-express-proxy --express-module app

其中app是Express应用程序的条目文件的名称,只是不带.js扩展名。

此步骤生成了一个名为lambda.js的文件,其内容如下:

'use strict'
const awsServerlessExpress = require('aws-serverless-express')
const app = require('./app')
const binaryMimeTypes = [
  'application/octet-stream',
  'font/eot',
  'font/opentype',
  'font/otf',
  'image/jpeg',
  'image/png',
  'image/svg+xml'
   ]
    const server = awsServerlessExpress
  .createServer(app, null, binaryMimeTypes)
exports.handler = (event, context) =>
  awsServerlessExpress.proxy(server, event, context
)

现在,您只需要使用claudia create命令将Express应用程序(带有lambda.js文件)部署到AWS Lambda和API Gateway。

claudia create --handler lambda.handler --deploy-proxy-api --region eu-central-1

片刻之后,该命令完成并打印以下响应:

{
  "lambda": {
    "role": "awesome-serverless-expressjs-app-executor",
    "name": "awesome-serverless-expressjs-app",
    "region": "eu-central-1"
  },
  "api": {
    "id": "iltfb5bke3",
    "url": "https://iltfb5bke3.execute-api.eu-central-1.amazonaws.com/latest"
  }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何将本地服务器转换为在线服务器 Node.js

如何将forEach转换为lambda

使用Node JS将AWS Lambda XML转换为JSON

如何使用无服务器模块在本地调试AWS Lambda Node.js?

如何将AWS Secret Manager与Node.js Lambda一起使用

如何将无服务器的SpringBoot微服务应用程序(RESTful)部署到AWS Lambda?

如何将NODE_EXTRA_CA_CERTS的值传递给通过Serverless部署的AWS Lambda?

我如何将一个node.js swagger项目放入lambda?

如何将超级代理(或任何请求库)安装到无服务器框架 AWS Lambda 函数中?

大锤如何将lambda-抽象转换为ATP?

如何将 linq groupjoin 转换为 lambda groupjoin

如何将sql限制查询转换为linq lambda?

如何将Lambda转换为简单的Java函数

如何将LINQ查询自动转换为Lambda

如何将Lambda表达式转换为LINQ?

如何将Java 8的lambda转换为Java 7?

如何将SQL转换为Lambda表达式

如何将Linq转换为Lambda表达式

如何将 lambda 函数转换为单独的函数?

如何将say_whee函数转换为lambda?

如何将lambda表达式转换为对象?

如何将 lambda 函数转换为常规函数?

如何将 lambda 语法转换为常规语法?

如何将 net.socket 数据从 AWS Lambda Node.js 8.10 异步函数返回到 AWS API 网关?

如何使用AWS Lambda Node.js服务器实施Braintree并生成带有承诺的客户端令牌?

无服务器 AWS Lambda@Edge:如何调试

如何使用Terraform查找AWS Lambda名称服务器?

如何将MVC 4项目转换为AWS Lambda Function?

如何将返回的异常从AWS Java Lambda Function转换为API Gateway?