Deploy to AWS Lambda hassle-free

JavaScript cloud micro-services, the easy way

JavaScript cloud micro-services, the easy way

Claudia.js makes it easy to deploy Node.js projects to AWS Lambda and API Gateway. It automates all the error-prone deployment and configuration tasks, and sets everything up the way JavaScript developers expect out of the box.

This means that you can get started with Lambda microservices easily, and focus on solving important business problems instead of dealing with AWS deployment workflows.

Why use Claudia, and not just deploy manually?

AWS Lambda and API Gateway are incredibly flexible, but they can be tedious to set up, especially for simple scenarios. The basic runtime is oriented towards executing Java code, so running Node.js functions requires you to iron out quite a few quirks, that aren't exactly well documented.

Claudia automates all those steps for you, and uses the standard NPM packaging conventions, so you do not have to change your project layout. Just call `claudia create` and Claudia will pack up and post-process your code, grab all the dependencies, clean up irrelevant resources, upload to Lambda, set-up web APIs, and update version aliases. In addition, Claudia automatically configures the Lambda function for commonly useful tasks, allowing `console.log` to pipe to CloudWatch, helping you add event sources with correct IAM privileges and manage different versions for production, development and testing easily.

How does it compare to ...?

Claudia is a deployment utility, not a framework. It does not abstract away AWS services, but instead makes them easier to get started with. As opposed to Serverless and Seneca, Claudia is not trying to change the way you structure or run projects. The optional API Builder, which simplifies web routing, is the only additional runtime dependency and it's structured to be minimal and standalone. Microservice frameworks have many nice plugins and extensions that can help kick-start standard tasks, but Claudia intentionally focuses only on deployment. One of our key design goals is not to introduce too much magic, and let people structure the code the way they want to.

Claudia is focused on Node.js. As opposed to Apex and similar deployers, Claudia has a much narrower scope. It works only for Node.js, but it does it really well. Generic frameworks support more runtimes, but leave the developers to deal with language-specific issues. Because Claudia focuses on Node.js, it automatically installs templates to convert parameters and results into objects that Javascript can consume easily, and makes things work the way Javascript developers expect out of the box.

Claudia helps you get simple stuff done, quickly. As opposed to Swagger, Claudia has fewer features, but does simple stuff easier. Claudia doesn't require you to define APIs in separate interface files. There's no need to learn a special interface syntax, no need to keep your definition spread across multiple files and introduce the overhead of coordination and maintenance – just write the code to handle requests. So, for example, Claudia can help you get started easily with a simple web API, but you won't be able to export it easily into iOS or Android SDKs. If you want to use a heavy interface-definition library you still can, and Claudia can deploy it, but for most of what we needed to do, that was a huge overkill.

So, as a summary, if you want to build simple services and run them with AWS Lambda, and you're looking for something low-overhead, easy to get started with, and you only want to use the Node.js runtime, Claudia is a good choice. If you want to export SDKs, need fine-grained control over the distribution, allocation or discovery of services, need support for different runtimes and so on, use one of the alternative tools.

More information

Here are some quick links to help you get started and use Claudia more effectively:

Got a question? Claudia is supported by an active opensource community!