In previous blog posts I’ve shown how to build serverless microservices which provide a REST API. Each service consists of a bunch of Lambda functions triggered by the AWS API Gateway. In a real world scenario multiple microservices would compose an application exposed through a single domain. To achieve this, a custom domain can be used.
It’s not uncommon to work with external systems from within a Lambda function: databases, web services, legacy systems, etc. Oftentimes it is necessary to authenticate against these systems via API keys or actual usernames and passwords. Now the questions is how to securely handle these secrets.
The OpenAPI Specification (aka Swagger) provides a structured way for describing REST APIs. The AWS API Gateway can be configured based on this Swagger configuration files. This way the configuration of the API can be done in “code”, can be automated completely and from the configuration the documentation can be generated.
In a previous blog post I described the steps for implementing Lambda functions in Java. While working on the implementation of the simple microservice presented in that blog post I ran into some unexpected obstacles compared to my previous experiences working with other runtimes for AWS Lambda.
Most of the time I’ve been using Node.js for building Lambda functions running on AWS. Recently, I wanted to experiment with Java for building a serverless application. In this blog post I describe the necessary steps for building a very simple microservice.
Building microservices based on serverless platform services provided by public cloud providers is pretty easy. However, there seems to be no real recommendations how to set up and manage bigger codebases. In this post I’ll explain how we decided to structure a project when we started working on a serverless backend API in one of our client projects.
Hosting static websites by combining managed services offered by AWS provides a solution with almost no operations overhead at very low cost. Furthermore, no additional work is required to make it fault-tolerant and scalable. This post shows how the setup can be completely automated to get started in literally a couple of minutes.
Basic authentication can be added pretty easily to CloudFront distributions using a simple Lambda@Edge function. This opens up the possibility to restrict access to static websites hosted with AWS S3.