[AWS Lambda] Convert a Express node.js app to serverless
Install new dependencies
In a folder with the serverless project run the following commands to add new dependencies:
npm install --save aws-serverless-express
npm install --save express
express
- is a very popular Node.js web framework that we will use in this lesson aws-serverless-express
- is a library that allows using express
with AWS Lambda
Import new dependencies
In the getGroups.ts
you need to import the following dependencies:
import * as express from 'express'
import * as awsServerlessExpress from 'aws-serverless-express'
Create an Express instance
Once the dependencies are imported you need to create an Express application:
const app = express()
Add a handler for a GET method
To define how to process an incoming GET
request, we need to use the app.get
method and pass a function that will be called to process a request:
app.get('/groups', async (_req, res) => {
// TODO: get all groups as before
const groups = ...
// Return a list of groups
res.json({
items: groups
})
})
You can read more about how to use Express here.
To return a JSON response we use the .json()
method on the response object.
Export a Lambda handler
Now the last thing that we need to do is to create a Lambda handler. To do this you can use the following code snippet:
// Create Express server
const server = awsServerlessExpress.createServer(app)
// Pass API Gateway events to the Express server
exports.handler = (event, context) => { awsServerlessExpress.proxy(server, event, context) }