DEV Community

Vijaya Laxmi Kadham
Vijaya Laxmi Kadham

Posted on • Originally published at my-cloud-journey.hashnode.dev

AWS CloudFormation Explained for Beginners | Infrastructure as Code (IaC) Made Simple

AWS CloudFormation Explained for Beginners | Infrastructure as Code (IaC) Made Simple

Introduction

In the previous article, we learned how to use the AWS CLI to interact with AWS services from the command line.

The AWS CLI is great for performing quick tasks such as:

  • Listing S3 buckets
  • Launching an EC2 Instance
  • Creating a VPC

However, imagine that you need to build an entire production environment consisting of:

  • A VPC
  • Public and Private Subnets
  • Internet Gateway
  • NAT Gateway
  • Route Tables
  • Security Groups
  • EC2 Instances
  • Load Balancer
  • Auto Scaling Group

Creating all these resources manually every time would be slow, repetitive and prone to mistakes.

This is where Infrastructure as Code (IaC) comes in.

AWS provides a service called CloudFormation that allows us to create infrastructure using code instead of clicking through the AWS Console.

In this article, we will understand the basics of CloudFormation and why it is one of the most important services for AWS and DevOps engineers.


What We Will Learn

In this article, we will learn:

  • What is Infrastructure as Code (IaC)?
  • Why CloudFormation is needed
  • Problems with manual infrastructure
  • What is CloudFormation?
  • Templates
  • Stacks
  • Stack Updates
  • Stack Deletion
  • Benefits
  • Real-world examples

Imagine this Scenario

Suppose you work for an online learning platform.

Every new customer gets their own AWS environment.

Each environment needs:

  • 1 VPC
  • 2 Public Subnets
  • 2 Private Subnets
  • Internet Gateway
  • NAT Gateway
  • Security Groups
  • EC2 Instances
  • Load Balancer

Now imagine creating this manually for:

  • Customer A
  • Customer B
  • Customer C
  • Customer D

Every single week.

It would become repetitive and time-consuming.

Even worse, one small mistake could cause production issues.


The Problem with Manual Infrastructure

Creating infrastructure manually has several drawbacks.

  • Time consuming
  • Human errors
  • Difficult to recreate
  • Hard to maintain
  • No version control

Think of writing a long document.

Would you rather rewrite the document every time, or simply save it and reuse it whenever needed?

Infrastructure works the same way.

Instead of rebuilding everything manually, we write the infrastructure once and reuse it whenever required.


What is Infrastructure as Code (IaC)?

Infrastructure as Code means defining your infrastructure using code instead of manually creating resources through the AWS Console.

Instead of clicking buttons every time, we write instructions inside a file.

AWS reads those instructions and creates the required resources automatically.

Think of it like following a recipe.

Rather than preparing a dish from memory every time, you write the recipe once and anyone can recreate the same dish by following those instructions.

CloudFormation works in a similar way.

You write the infrastructure once, and AWS builds it whenever needed.


What is AWS CloudFormation?

AWS CloudFormation is a service that allows you to create, update and manage AWS infrastructure using code.

Instead of manually creating resources, you write a template describing what you want.

AWS reads the template and creates all the required resources for you.

Developer
     │
Writes Template
     │
     ▼
CloudFormation
     │
Creates Resources
     │
 ┌───────────────┐
 │ VPC           │
 │ Subnets       │
 │ EC2           │
 │ S3            │
 │ IAM           │
 │ Load Balancer │
 └───────────────┘
Enter fullscreen mode Exit fullscreen mode

What is a CloudFormation Template?

A Template is simply a blueprint of your infrastructure.

It contains instructions describing:

  • What resources should be created
  • Configuration
  • Dependencies

Think of it as a house blueprint.

The blueprint doesn't build the house.

It simply describes how the house should be built.

CloudFormation uses the blueprint to create the infrastructure.


What is a Stack?

When CloudFormation reads your template and creates the resources, AWS groups all those resources into something called a Stack.

Think of a Stack as a project folder.

Instead of managing resources individually, AWS manages them together.

For example, your Stack may contain:

  • VPC
  • EC2
  • Security Group
  • S3 Bucket

Deleting the Stack deletes all those resources together.


Real-World Example

Imagine a company with separate environments:

  • Development
  • Testing
  • Production

Instead of creating infrastructure manually three times, the DevOps engineer writes one CloudFormation template.

Then they deploy it three times:

  • Dev Stack
  • Test Stack
  • Production Stack

Same code.

Different environments, much easier.


Why Companies Use CloudFormation

Companies use CloudFormation because it provides:

  • Automation
  • Consistency
  • Version Control
  • Faster Deployments
  • Easy Recovery
  • Repeatability

CloudFormation vs Manual AWS Console

Manual AWS Console CloudFormation
Click every resource Write once
Slow Fast
Human mistakes Consistent
Hard to repeat Easily reusable
No version control Git friendly

CloudFormation Supports Almost Every AWS Service

Examples include:

  • EC2
  • VPC
  • IAM
  • S3
  • Route 53
  • Lambda
  • DynamoDB
  • RDS
  • CloudFront

A Simple Flow

Write Template
       │
       ▼
Upload to CloudFormation
       │
       ▼
Create Stack
       │
       ▼
AWS Creates Resources
Enter fullscreen mode Exit fullscreen mode

Conclusion

In this article, we learned the theory behind AWS CloudFormation and Infrastructure as Code.

We explored why manually creating AWS resources becomes difficult as environments grow and how CloudFormation solves this problem by allowing us to define infrastructure using code.

What's Next?

In the next article, we will put these concepts into practice by creating our first CloudFormation template, launching resources using a Stack and understanding how CloudFormation manages infrastructure automatically.

Top comments (0)