AWS CloudFormation is a free service that can be used to create and configure AWS resources needed to run your application using a simple
JSON or YAML text file.

AWS CloudFormation is one of the highly used AWS Service. According to Amazon, more than 350,000 AWS customers used CloudFormation in 2017. Amazon has steadily increased the number of resources that can be provisioned using CloudFormation, from 177 resources by the end of 2016 to 248 resources by the end of 2017.

CloudFormation Resource Types
CloudFormation Resource Types

How does CloudFormation work?

The first step is to create a create a template that describes all the AWS resources needed to run an application.

CloudFormation takes care of provisioning and configuring the resources, reducing the time taken to get the applications up and running. Without CloudFormation, developers and admins must individually provision each resource and then configure them to work together.

These templates can be used to replicate the resources needed to run an application. For example, a user can create one template to set up his infrastructure in one region and then use the same template to replicate the same infrastructure in another region.

In Picture: How to use AWS CloudFormation
In Picture: How to use AWS CloudFormation

Easy to Modify, Track, Update and Reverse:

CloudFormation makes it easier to modify and update deployed resources in a highly predictable manner.

“When you provision your infrastructure with AWS CloudFormation, the AWS CloudFormation template describes exactly what resources are provisioned and their settings.

Because these templates are text files, you simply track differences in your templates to track changes to your infrastructure, similar to the way developers control revisions to the source code.

For example, you can use a version control system with your templates so that you know exactly what changes were made, who made them, and when. If at any point you need to reverse changes to your infrastructure, you can use a previous version of your template.”

CloudFormation Manages Dependency:

When developers configure multiple infrastructure resources, they not only have to provision and configure them correctly but they must also make sure that the resources are fired up in a proper sequence.

CloudFormation takes care of the order for provisioning AWS services as it is well aware of interdependency between resources. There is no need to specify the order in which resources are created, updated and deleted, as CloudFormation automatically determines the correct sequence of actions for the given template.

AWS CloudFormation Designer

AWS CloudFormation designer is a drag-and-drop graphic tool for designing CloudFormation templates.

No need to use a separate text editor to modify templates as the
designer’s integrated JSON and YAML editor allows users to modify templates directly.

AWS CloudFormation Designer Interface
AWS CloudFormation Designer Interface:
1. Toolbar, 2. Resource Types, 3.Canvas Pane, 4.Fit to Window button, 5.Full Screen and Split Screen Buttons, 6. Integrated JSON and YAML Text Editor, 7. Messages

AWS CloudFormation Pricing

Amazon does not charge for using CloudFormation. You only pay for the underlying AWS resources such as Amazon EC2, Load balancers etc