While working on MindMup 2.0, we started moving parts of our API and back-end infrastructure from Heroku to AWS Lambda.
The first Lambda function we created required a shell script of about
120 lines of AWS command-line calls to properly set up, and the second
one had a similar number with just minor tweaks. Instead of duplicating
this work for each service, we decided to create an open-source tool
that can handle the deployment process for us.
Enter Claudia.js: an open-source deployment tool for Node.js microservices that makes getting started with AWS Lambda and Amazon API Gateway very easy for JavaScript developers.
Claudia takes care of AWS deployment workflows, simplifying and automating many error-prone tasks, so that you can focus on solving important business problems rather than worrying about infrastructure code. Claudia sets everything up the way JavaScript developers expect out of the box, and significantly shortens the learning curve required to get Node.js projects running inside Lambda.
Create a directory, and initialize a new NPM project
Next, create app.js with the following code:
Add the Claudia API Builder as a project dependency:
Finally, install Claudia.js in your global path:
That’s pretty much it. You can now install your new microservice in AWS by running the following command:
In a few moments, Claudia will respond with the details of the newly-installed Lambda function and REST API.
The result contains the root URL of your new API Gateway resource. Claudia automatically created an endpoint resource for
That’s it! Your first Claudia-deployed Lambda function and API Gateway endpoint is now live on AWS!
Try this next:
Install the
Add a new endpoint to the API by appending these lines to
You can now update your existing deployed application by executing the following command:
When the deployment completes, try out the new endpoint by adding `/greet?name=’ followed by your name.
All the query string arguments are immediately available to your function in the
Asynchronous processes are also easy; just return a
To make serverless-style applications easier to set up, Claudia automatically enables cross-origin resource sharing (CORS), so a client browser can call your new API directly even from a different domain. All errors are, by default, triggering the 500 HTTP code, so your API works well with most AJAX libraries. You can, of course, easily customize the API endpoints to return a different content type or HTTP response code, or include additional headers. For more information, see the Claudia API Builder documentation.
Enter Claudia.js: an open-source deployment tool for Node.js microservices that makes getting started with AWS Lambda and Amazon API Gateway very easy for JavaScript developers.
Claudia takes care of AWS deployment workflows, simplifying and automating many error-prone tasks, so that you can focus on solving important business problems rather than worrying about infrastructure code. Claudia sets everything up the way JavaScript developers expect out of the box, and significantly shortens the learning curve required to get Node.js projects running inside Lambda.
Hello World
Here’s a quick ‘hello world’ example.Create a directory, and initialize a new NPM project
npm init
Next, create app.js with the following code:
JavaScript
var ApiBuilder = require('claudia-api-builder'),
api = new ApiBuilder();
module.exports = api;
api.get('/hello', function () {
return 'hello world';
});
Bash
npm install claudia-api-builder --save
Bash
npm install -g claudia
Bash
claudia create --region us-east-1 --api-module app
Bash
{
"lambda": {
"role": "test-executor",
"name": "test",
"region": "us-east-1"
},
"api": {
"id": "8x7uh8ho5k",
"module": "app",
"url": "https://8x7uh8ho5k.execute-api.us-east-1.amazonaws.com/latest"
}
}
/hello
, so just add /hello
to the URL, and try it out in a browser or from the console. You should see the ‘hello world’ response.That’s it! Your first Claudia-deployed Lambda function and API Gateway endpoint is now live on AWS!
What happened in the background?
In the background, Claudia.js executed the following steps:- Created a copy of the project.
- Packaged all the NPM dependencies.
- Tested that the API is deployable.
- Zipped up your application and deployed it to Lambda.
- Created the correct IAM access privileges.
- Configured an API Gateway endpoint with the
/hello
resource. - Linked the new resource to the previously-deployed Lambda function.
- Installed the correct API Gateway transformation templates.
claudia.json
), so that you can easily update the function without remembering any of those details.Try this next:
Install the
superb
module as a project dependency:
Bash
npm install superb --save
app.js
:
JavaScript
api.get('/greet', function (request) {
var superb = require('superb');
return request.queryString.name + ' is ' + superb();
});
Bash
claudia update
Benefits of using Claudia
Claudia significantly reduces the learning curve for deploying and managing serverless style applications, REST API, and event-driven microservices. Developers can use Lambda and API Gateway in a way that is similar to popular lightweight JavaScript web frameworks.All the query string arguments are immediately available to your function in the
request.queryString
object. HTTP Form POST variables are in request.post
, and any JSON, XML, or text content posted in as raw body text are in request.body
.Asynchronous processes are also easy; just return a
Promise
from the API endpoint handler, and Claudia waits until the promise
resolves before responding to the caller. You can use any A+
Promise-compliant library, including the promises supported out of the
box by the new AWS Lambda 4.3.2 runtime.To make serverless-style applications easier to set up, Claudia automatically enables cross-origin resource sharing (CORS), so a client browser can call your new API directly even from a different domain. All errors are, by default, triggering the 500 HTTP code, so your API works well with most AJAX libraries. You can, of course, easily customize the API endpoints to return a different content type or HTTP response code, or include additional headers. For more information, see the Claudia API Builder documentation.
I have read this post. collection of post is a nice one. Thanks for sharing AWS Online Training
ReplyDelete