hands-on lab

Deploy a Highly Available Website with Terraform on AWS

Up to 1h 30m
Get guided in a real environmentPractice with a step-by-step scenario in a real, provisioned environment.
Learn and validateUse validations to check your solutions every step of the way.
See resultsTrack your knowledge and monitor your progress.


An attractive feature of the cloud is that you can deploy applications in multiple data centers making them highly available and able to tolerate a high degree of failures. In this Lab, you will deploy a secure and highly available website with Terraform on AWS using a two-tier architecture with private and public subnets. The web servers and Elastic Load Balancer will span multiple availability zones to achieve high availability.

Lab Objectives

Upon completion of this Lab you will be able to:

  • Apply infrastructure changes in Terraform
  • Configure all the network and security infrastructure needed to deploy a highly available website
  • Use user data to bootstrap web servers
  • Destroy infrastructure managed by Terraform

Lab Prerequisites

You should be familiar with:

Lab Environment

Before completing the Lab instructions, the environment will look as follows:

After completing the Lab instructions, the environment should look similar to:



April 20th, 2023 - Resolved an issue that caused the lab to fail to set up on rare occasions

November 22nd, 2022 - Updated lab to use EC2 Instance Connect and added checks

January 10th, 2019 - Added a validation Lab Step to check the work you perform in the Lab

About the author

Logan Rakai, opens in a new tab
Lead Content Developer - Labs
Learning paths

Logan has been involved in software development and research since 2007 and has been in the cloud since 2012. He is an AWS Certified DevOps Engineer - Professional, AWS Certified Solutions Architect - Professional, Microsoft Certified Azure Solutions Architect Expert, MCSE: Cloud Platform and Infrastructure, Google Cloud Certified Associate Cloud Engineer, Certified Kubernetes Security Specialist (CKS), Certified Kubernetes Administrator (CKA), Certified Kubernetes Application Developer (CKAD), and Certified OpenStack Administrator (COA). He earned his Ph.D. studying design automation and enjoys all things tech.

LinkedIn, Twitter, GitHub

Covered topics

Lab steps

Logging In to the Amazon Web Services Console
Connecting to the Virtual Machine using EC2 Instance Connect
Configuring the Website on the EC2 Instances with Terraform
Configuring Network Resources for Elastic Load Balancing with Terraform
Configuring an Elastic Load Balancer with Terraform
Destroying Resources with Terraform