Deploy a Highly Available Website with Terraform on AWS

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

Ready for the real environment experience?

Time Limit1h 30m


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:



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
Learning paths49

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.

Covered Topics