Serverless application can be easily created with AWS lambda and AWS Gateway. We can write an lambda function and configure the gateway. We get a Rest endpoint which we can call to reach the lambda function. This approach is easy, but comes with a caveats. We have to configure API gateway, manage the deployments, publish to stages.
In this blog, we will see how to develop and deploy a serverless application using
Lambda API, a lightweight framework for developing serverless applications.
Lets create a new project directory.
mkdir serverless-samples
cd serverless-samples
We will initiate the project and Install lambda-api.
npm init
npm i lambda-api
The Lambda-api just needs the 3 steps.
- Require the framework and Instantiate it.
- Define a route.
- Declare our Lambda Handler.
Create a new handler.js file and add the below contents.
//----------------------------------------------------------------------------//
// Require the framework
//----------------------------------------------------------------------------//
const app = require("lambda-api")({ version: "v1.0", base: "v1" });
//----------------------------------------------------------------------------//
// Define an API routes
//----------------------------------------------------------------------------//
// GET
app.get("/greet/:name", (req, res) => {
// Send the response
res.status(200).json({
//name: req.params,
status: "ok",
body: "Hello " + req.params.name,
});
});
//----------------------------------------------------------------------------//
// Lambda handler
//----------------------------------------------------------------------------//
module.exports.router = (event, context, callback) => {
context.callbackWaitsForEmptyEventLoop = false;
// Run the request
app.run(event, context, callback);
}; // end router handler
In the above code, we have created an GET endpoint with /greet/:name. The Path parameter is name which will be passed to the GET endpoint. The API will return the response with statuscode as 200 and the body will greet a person with name that is passed in the pathparams. To run the request, we use app.run() method.
Deploy to AWS
Login into AWS and search for Lambda service. Create a new function, provide the name and Runtime as shown below.
Create a zip file of the project and upload the zip file to function serverless-sample and change the handler to handler.router.
Invoke the function with a test event. We need to choose the template that matches the service that triggers our function or we can also create a event document in Json.
As shown above, we have to select a New event option and select apigateway-aws-proxy template and give an test event name as gatewaysample. We will get a sample event which is compatible with the api-gateway.
Now test the endpoint by adding values to below keys.
- "resource": "/v1/greet/rahul"
- "path": "/v1/greet/rahul"
- "httpMethod": "GET"
Once configured, click on Test button, We get the below greeting for the name passed into the function.
Top comments (0)