通常情况下,ExpressServerless可以在本地环境中正常运行,但一旦它部署到AWS Lambda中就会出现问题。这是因为AWS Lambda并不是一个真正的Web服务器,它只是一个事件驱动的计算服务。因此,在部署之前需要进行一些额外的配置。
以下是
在部署Lambda函数的时候,必须将ExpressServerless的入口点配置为Lambda函数的处理程序。同时需要将事件类型设置为“API网关”。这可以在AWS Lambda中完成:
exports.handler = function(event, context) {
};
AWS官方提供了一个Node.js模块叫aws-serverless-express,该模块是一个适用于AWS Lambda的代理服务器,可以将Express应用程序转换为可以在Lambda函数中使用的形式。以下是使用aws-serverless-express的示例:
const express = require('express'); const awsServerlessExpressMiddleware = require('aws-serverless-express/middleware');
const app = express();
// Add the AWS middleware to enable the Lambda proxy server functionality. app.use(awsServerlessExpressMiddleware.eventContext());
app.get('/', function(req, res) { res.send('Hello World!'); });
// Export the app object. AWS Lambda expects the handler // to be named "handler". module.exports.handler = require('aws-serverless-express')( app, { // Optional: If you're using a domain name, specify it here to route requests // based on the domain name. domain: 'example.com' } );
在部署Lambda函数之后,需要在AWS API Gateway中创建一个新的API,然后将其代理到Lambda函数上。
以上是解决“AWS Lambda部署后ExpressServerless无法正常工作”问题的方法。