Deploy a high-availability web app using CloudFormation

The Basics

Criteria Meet Specification

Parameters

The more the better, but an exaggerated number of parameters can be messy ( say, 10 or more ). 1 or 0 is definitely lacking.

Resources

This is the mandatory section of the script, we are looking for a LoadBalancer, Launch Configuration, AutoScaling group a health check, security groups and a Listener and Target Group.

Outputs

This is optional, but it would be nice to have a URL here with the Load Balancer DNS Name and “http” in front of it .

Working Test

If the student provides a URL to verify his work is running properly, it will be a page that says “it works! Udagram, Udacity”

Load Balancer

Criteria Meet Specification

Target Group

The auto-scaling group needs to have a property that associates it with a target group. The Load Balancer will have a Listener rule associated with the same target group

Health Check and Listener

Port 80 should be used in Security groups, health checks and listeners associated with the load balancer

Auto-Scaling

Criteria Meet Specification

Subnets

Students should be using PRIV-NET ( private subnets ) for their auto-scaling instances

Machine Specs

The machine should have 10 GB or more of disk and should be a t3.small or better.

SSH Key

There shouldn’t be a ‘keyname’ property in the launch config

Bonus

Criteria Meet Specification

Output

Any values in the output section are a bonus

Bastion Host

Any resource of type AWS::EC2::Instance, optional, but nice to have.

Tips to make your project standout:

-Students can deploy Windows Servers instead of Linux and use PowerShell scripts to showcase their Windows management skills.
-Students can use AWS Parameter Store to save sensitive data, such as credentials to showcase their attention to security.
-Students can use CloudWatch Alarms and CloudWatch custom metrics to showcase their performance and monitoring skills.