[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 lessonaws-serverless-express
- is a library that allows usingexpress
Import new dependencies
In thegetGroups.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 incomingGET
request, we need to use theapp.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 Expresshere.
To return a JSON response we use the.json()
methodon 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) }