A collection of hands-on labs to help learning the fundamentals of AWS cloud computing services. Each lab has:
- a title,
- a difficulty level (1-3),
- a goal,
- an architecture diagram,
- a step-by-step guide, describing how to run the lab, with textual and visual information,
- links to AWS documentation or other relevant information,
- procedures to test and validate the lab, and
- optional challenges.
Supporting files such as scripts, policy documents, and CloudFormation templates are provided when relevant to completing the lab.
I hope you enjoy these labs. Suggestions and contributions are welcomed. Thanks!
Lab-001 - A Single EC2 Instance
The goal of this lab is to launch a single EC2 instance in a public subnet accessible over the Internet via SSH.
Lab-002 - A Single EC2 Instance in a Private Subnet + Bastion Host
The goal of this lab is to demonstrate how to access an EC2 instance launched in a private subnet using a bastion host.
Lab-003 - A Single EC2 Instance in a Private Subnet + Bastion Host + NAT Gateway
This lab illustrates how an EC2 instance running in a private subnet can be configured to access the internet with the help of a service called Nat gateway.
Lab-004 - A Single EC2 Instance in a Private Subnet + Bastion Host + Nat Instance
This lab is similar to lab-003 but instead of using a Nat gateway you are asked to use a Nat instance.
Lab-005 - An HTTP Load Balancer
The goal of this lab is to illustrate how to use an Application Load Balancer to distribute requests over two web servers running on distinct Availability Zones.
Lab-006 - A Simple EC2 Auto Scaling
This goal of this lab is to illustrate how to setup a simple EC2 auto scaling service. You will create an auto scaling group with initially only one EC2 instance running. A rule will be setup to automatically launch a second EC2 instance when the CPU usage of the first instance reaches 75%.
Lab-007 - A Simple EC2 Auto Scaling + Load Balancing
This lab is a continuation of lab-006 with a Load Balancer added.
Lab-008 - Secure EC2 Auto Scaling + Load Balancing
This is lab is similar to lab-007 with a caveat: the auto scaling group is configured to create the EC2 instances in the private subnet. Also, two security groups control traffic in and out of the application load balancer and the EC2 instances (in the private subnets). To enable the EC2 instances to respond to requests coming from the internet, NAT gateways were configured on the public subnets of the VPC.
Lab-009 - A Standalone RDS Instance Running MySQL
This lab illustrates how to launch a standalone RDS instance running a MySQL database. An EC2 instance will also be launched to allow access to the database using phpMyAdmin.
Lab-010 - An RDS Instance with a Standby
This lab is similar to lab-009 with the addition of a standby RDS instance in another AZ to simulate a failover scenario.
Lab-011 - An RDS Instance with a Read Replica
This lab is similar to lab-009 with the addition of a read replica RDS instance, a read-only copy of the database.
Lab-012 - A Simple Dynamodb Service This lab illustrates how to create and remotely access a dynamodb table. Dynamodb is a NoSQL managed database service.
Lab-013 - An S3 Bucket Accessed via AWS CLI
The goal of this lab is to illustrate how to create an S3 bucket and access it from a client computer via AWS CLI (command-line interface).
Lab-014 - An S3 Bucket Accessed via an S3 Gateway Endpoint
The goal of this lab is to illustrate how to access an S3 bucket from an EC2 instance in a private subnet using an S3 gateway endpoint.
Lab-015 - An S3 Bucket Accessed via AWS CLI + Resource-based Policy
This lab is similar to lab-013. However, we will be creating a resource-based policy to only allow access to the bucket if requests are sent from a specific IP address.
Lab-016 - Moving an EBS Volume Between EC2 Instances
The goal of this lab is to illustrate how to move an EBS volume from one EC2 instance to another.
Lab-017 - Snapshot an EBS Volume
This lab's goal is similar to lab-016 but because we want to move a volume from one AZ to another we will have to first create a snapshot of the volume and then create a new volume from the snapshot.
Lab-018 - Creating and Sharing an NFS File System via EFS
The goal of this lab is to illustrate how to create and share an NFS file system using AWS EFS service.
Lab-019 - Connecting to an EC2 Instance via Systems Manager
This lab illustrates how to connect to an EC2 instance via Systems Manager, a service that offers a central place to view and manage AWS resources.
Lab-20 - Running an Amazon ECS Sample App
This lab illustrates how to launch a web server using Amazon ECS's Fargate service.
The goal of this lab is to illustrate a VPC peering connection, a way to connect two VPCs using a private connection.