To sum up, we have seen how to build a serverless API from scratch using multiple Lambda functions, as well as how to use API Gateway to create a unified API and dispatch the incoming requests to the right Lambda function. We resolved the Lambda's stateless issue with a DynamoDB datastore and looked at how the use of reserved concurrency can help protect downstream resources. Then, we hosted a serverless web application in an S3 bucket with CloudFront in front of it to optimize the delivery of the web assets. Finally, we learned how to route domain traffic to the web application using Route 53 and how to secure it with SSL termination.
The following figure illustrates the architecture we've implemented so far:
In the next chapter, we will improve the CI/CD workflow to add unit and integration testing to catch bugs and issues before deploying Lambda functions...