Module Objective: Automate the provisioning and management of a cloud architecture using infrastructure as code and AWS management tools.

Builds on Module 9: Elasticity and high availability depend on infrastructure that can be provisioned and reproduced automatically — this module supplies that automation.

Infrastructure as Code

Infrastructure as code (IaC) means defining infrastructure — VPCs, EC2 instances, RDS databases, IAM roles — in a version-controlled template rather than by manually clicking through the console, so an entire architecture can be reproduced consistently and repeatedly.

Manual ProvisioningInfrastructure as Code
Steps are undocumented unless written down separatelyThe template itself is the documentation
Hard to reproduce identically in another Region or accountDeploy the same template anywhere
Configuration drift is easy to introduceRe-deploying the template corrects drift
🔵 Note IaC is a direct implementation of the Operational Excellence pillar's "perform operations as code" principle, introduced in Module 2.

AWS CloudFormation

AWS CloudFormation is AWS's native infrastructure-as-code service: a JSON or YAML template describes the desired resources, and CloudFormation creates, updates, or deletes them as a single managed unit called a stack.

ConceptWhat It Means
TemplateThe JSON/YAML file describing desired resources and their configuration
StackA collection of resources created and managed together from one template
Change setA preview of what a template update would actually change before applying it
✅ Tip — Change Sets Prevent Surprises Reviewing a change set before updating a stack is a standard safeguard — it shows exactly what CloudFormation intends to add, modify, or delete, catching unintended changes before they happen.

AWS Elastic Beanstalk Revisited

As covered in AWS Academy Cloud Foundations Module 6, Elastic Beanstalk automates provisioning for application code specifically, while CloudFormation automates provisioning for arbitrary infrastructure — Elastic Beanstalk actually uses CloudFormation underneath to do so.

🔵 Note — Different Levels of Abstraction CloudFormation gives full control over every resource; Elastic Beanstalk trades some of that control for a much faster path from application code to a running, load-balanced, auto-scaled environment.

AWS Systems Manager

AWS Systems Manager provides operational tooling for managing already-running infrastructure — patching, running commands across a fleet of instances, and centralizing configuration and secrets — complementing the provisioning-time automation CloudFormation provides.

Systems Manager FeatureWhat It Does
Run CommandExecutes commands across a fleet of instances without SSH access
Patch ManagerAutomates operating system and software patching
Parameter StoreCentralizes configuration values and secrets for applications to retrieve securely
✅ Tip — Provisioning vs. Ongoing Operations CloudFormation answers "how do I create this infrastructure?" while Systems Manager answers "how do I operate and maintain it after it's running?" — the two are complementary, not competing.

Key Terms for Module 10

infrastructure as code (IaC)
Defining infrastructure in a version-controlled template rather than provisioning it manually
AWS CloudFormation stack
A collection of AWS resources created and managed together from one template
change set
A preview of what a CloudFormation stack update would change before it's applied
AWS Systems Manager
A service for operational tasks — patching, running commands, and managing configuration — on already-running infrastructure

Review Questions

  1. What problem does infrastructure as code solve that manual console provisioning doesn't?
  2. What is a CloudFormation stack, and what does a change set let an architect verify before applying it?
  3. How does AWS Elastic Beanstalk relate to AWS CloudFormation underneath?
  4. What is the difference in purpose between AWS CloudFormation and AWS Systems Manager?