
Throughout this guide, you will learn how to use Terraform to build a Serverless application that is used to generate greeting cards for employees working in a fictitious enterprise named AcmeCorp. In the final chapter you can download the sample code used in this guide, as well as get a collection of actionable resources to continue your learning journey.

Each chapter of this guide builds on the previously created solution, adds a new concept, and explains how to wire it with existing components. Note that this guide is not intended to be consumed as a step-by-step workshop or tutorial, its purpose is to illustrate and provide guidance through the concepts you can use to create your own Serverless applications.
When building applications on AWS, it is important you take care of IAM permissions in order to only allow resources you permit to communicate with each other. For example, you will need to grant your Lambda function permissions to poll (but not push) messages from the SQS queue, as well as read from and write to S3 buckets.
As a general practice, the guide follows the principle of least privileged access. Each step demonstrates how to grant the minimal required set of permissions. The guide will demonstrate how to use a combination of execution roles and resource policies. For example, the Lambda function will have an execution role allowing it to poll messages from the SQS Queue, and SQS Queue will have a resource policy allowing API Gateway to send messages. Read more about using AWS IAM.

Below tools are used throughout the guide. Install them on your machine if you want to replicate steps described in this guide.
Let's get started!