Introduction
Hello Dev readers,
I am creating this blog to help someone who is absolutely new to AWS (Amazon Web Services) with little to no experience working with the AWS Console.
I started my AWS journey to become a cloud engineer a few months ago. While learning Andrew Brown's AWS Certified Cloud Practitioner course, which was 14 hours long, I encountered something known as the "forgetting curve." This curve describes how information is lost over time if there's no attempt to retain it. Without reinforcement or practice, you tend to forget a lot of what you've learned. For someone about to attempt the AWS CCP exam, this was a significant problem.
To solve it, I began searching the internet and came across people shouting, "PROJECTS! PROJECTS! PROJECTS!" I started researching beginner-friendly projects, but the names sounded overwhelming, like "Create an Amazon RDS DB Instance," "Create a Lambda Function to Add Two Numbers," or "Deploy a CloudFormation Template from the AWS Console." I thought, "These projects sound hard!"
During that time, I came across a quote that is also my LinkedIn background: "The only true failure is failure to try." I told myself that I couldn't label them as hard if I hadn't attempted them. So, the next day, I put my AWS CCP course on hold (only for a day, of course) and started with the first project (which is also the first project in the list below). I won't go into details, but it was so easy! When I completed it, I felt a sense of accomplishment that further boosted my confidence to tackle more projects.
Now that I have completed all 14 projects listed below, I can say they were some of the easiest projects I've ever done, especially without any prior AWS Console knowledge. I believe that if I could do them, many beginners can too.
Note
I will not be posting step-by-step instructions for every project for two reasons:
- I believe that for learners to truly grasp the material, they should work their way around the platform. Trust me, you will find your way. (Don't worry, I'll guide you in the right direction to get you started.)
- AWS frequently updates its console, so the steps I list below might change a few days after this blog is published. Therefore, I don't think it's worth the effort.
So, with that out of the way, here’s the list of projects below:
- Create Three Billing Alarms
- Create a Cost Budget
- Launch a Hello World Website on the Internet
- Push a Docker Image to Amazon ECR Repository
- Create an Amazon RDS DB Instance (MS SQL Server)
- Create a DynamoDB Table
- Install & Configure AWS CLI, then Create an S3 Bucket
- Create an S3 Bucket and Store an Object in It
- Introduction to SNS (Simple Notification Service)
- Create a Lambda Function to Add Two Numbers
- Host a Simple Static Webpage with S3 and CloudFront
- Create an IAM User
- Use a Managed Config Rule
- Deploy a CloudFormation Template from the AWS Console
Project 1: Create a Billing Alarm
Overview
Set up three distinct billing alarms at $5, $25, and $100 in AWS to monitor and control cloud spending at different thresholds and proactively address potential cost overruns.
Objective
- Create a billing alarm for $5
- Create a billing alarm for $25
- Create a billing alarm for $100
Service Used
AWS CloudWatch for monitoring and creating alarms.
Reference
Create a billing alarm to monitor your estimated AWS charges
Output
What will you learn?
- You'll learn how to monitor your AWS spending in real time.
- You'll learn how to respond to alerts. For example, if you hit the $5 alarm, you might review your resource usage and make adjustments.
Project 2: Create a Cost Budget
Overview
Implement an AWS Cost Budget to set and monitor financial limits for AWS resource usage.
Objective
- Create a cost budget.
Service Used
AWS Budgets for cost management.
Reference
Output
What will you learn?
You will learn how AWS services contribute to your overall costs, helping you identify areas where you can optimize spending.
Project 3: Launch a Hello World Website on the Internet
Overview
Deploy a Linux-based Amazon EC2 instance within a public subnet, configure it to serve web traffic, and verify its functionality through a simple web page.
Objective
- Launch a Linux-based EC2 instance in any region of your choice within a public subnet.
- Set up a security group that allows HTTP/HTTPS connections from the Internet and SSH from your IP address.
- SSH into the EC2 instance on Linux and Mac, or use PuTTY on Windows.
- Set up a web server on the EC2 instance.
- Add a simple 'Hello, World!' header to the
index.html
file. - Access the public IP address from a browser and confirm that the site is served.
Service Used
AWS EC2 (Elastic Compute Cloud) for launching the instance.
Output
What will you learn?
You will learn the basics of EC2 instances, how they work, and how to configure a web server to serve static files, as well as how to use SSH via the local CLI.
Tip: While checking the endpoint, use HTTP instead of HTTPS to obtain the output.
Project 4: Push a Docker Image to Amazon ECR Repository
Overview
Create a Docker image and push it to Amazon Elastic Container Registry (ECR), which is a fully managed container registry by AWS.
Objective
- Create your Amazon ECR repository.
- Authenticate your Docker client with Amazon ECR.
- Tag your Docker image with the Amazon ECR repository.
- Push your image to Amazon ECR.
Service Used
AWS ECR (Elastic Container Registry) for hosting and managing Docker images.
References
Output
What will you learn?
You'll learn basic concepts of Docker, how to create and manage Docker images and containers, along with hands-on experience with the command-line interface for pushing images to ECR.
Project 5: Create an Amazon RDS DB Instance (MS SQL Server)
Overview
Set up a fully managed MS SQL Server database instance on Amazon RDS and connect the RDS instance from a local development environment.
Objective
- Create an MS SQL Server database instance on RDS.
- Connect to the RDS database instance from your local machine.
Service Used
Amazon RDS for database setup and management.
Output
What will you learn?
You will learn how to configure an RDS database instance and navigate through Microsoft SQL Server Management Studio (SSMS).
Project 6: Create a DynamoDB Table
Overview
Create a DynamoDB table, insert data into it, and perform basic query operations on it.
Objective
- Create a DynamoDB table with provisioned capacity.
- Create three random items in the table.
- Run a scan on the table that returns all three items.
- Run a query on the table that returns a single item.
Service Used
AWS DynamoDB for table creation and management.
Reference
Create and Query a NoSQL Table with Amazon DynamoDB
Output
What will you learn?
You will learn how to create a DynamoDB table, insert items into it, and run a query on that table.
Project 7: Install & Configure AWS CLI, then Create an S3 Bucket
Overview
Set up the AWS CLI on your local machine and create a new S3 bucket using the CLI.
Objective
- Install the AWS CLI.
- Configure your AWS credentials locally:
aws configure
. - Create an S3 bucket:
aws s3 mb s3://<unique-bucket-name>
. - Check that the bucket was created:
aws s3 ls
. - Delete the bucket when you are done:
aws s3 rb s3://<unique-bucket-name>
.
Service Used
Amazon S3 (Simple Storage Service) for creating and managing storage buckets.
References
Output
What will you learn?
You'll learn how to install and configure the AWS CLI and how to create, list, and delete S3 buckets via the CLI.
Project 8: Create an S3 Bucket and Store an Object in It
Overview
Create an Amazon S3 bucket using the AWS console and upload an object into it.
Objective
- Use the console to create an S3 bucket.
- Upload an object (any file) into the bucket.
Service Used
Amazon S3 for creating the bucket and storing objects.
Reference
Step 1: Create your first S3 bucket
Output
What will you learn?
You will learn what Amazon S3 (Simple Storage Service) is and how it works as a scalable object storage service.
Project 9: Introduction to SNS
Overview
Set up a Simple Notification Service (SNS) topic and subscribe to it using an email address.
Objective
- Create an SNS topic.
- Subscribe to that SNS topic using your email address.
- Accept the subscription in the email you receive.
- Send a test message through the SNS topic.
- Ensure that you receive the message at your email address.
Service Used
Amazon SNS for managing topics and sending notifications.
Output
What will you learn?
You'll learn how notifications are sent and managed for real-time updates in applications.
Project 10: Create a Lambda Function to Add Two Numbers
Overview
Create an AWS Lambda function using Python to add two numbers.
Objective
- Create an AWS Lambda function to add two numbers supplied as input and return the result.
- Print the result in the logs.
Service Used
AWS Lambda for serverless computing.
Output
What will you learn?
You will learn how to create anonymous functions using Lambda.
Project 11: Host a Simple Static Webpage with S3 and CloudFront
Overview
Create a simple static webpage and host it on AWS S3, then set up a CloudFront distribution to serve the content securely and efficiently.
Objective
- Create an S3 bucket and upload a simple static webpage.
- Create a CloudFront distribution using the S3 bucket as the origin.
- Ensure that the bucket's content can be accessed only through the CloudFront endpoint.
Services Used
- Amazon S3 for static website hosting.
- Amazon CloudFront for content delivery and caching.
Reference
Hosting a static website using Amazon S3
Output
What will you learn?
You will learn how to create and configure an S3 bucket for static website hosting, along with creating and managing a CloudFront distribution.
Project 12: Create an IAM User
Overview
Create a new AWS Identity and Access Management (IAM) user with console access.
Objective
- Create a new user in IAM with console access.
- Add the user to an Admin group.
- Create a new group called "Admins."
- Attach the
AdministratorAccess
managed policy to the new group. - Add your new user to the "Admins" group.
- Enable MFA for the root user.
- Apply an IAM password policy that adheres to security best practices.
Service Used
AWS IAM for user, group, and permission management.
Output
What will you learn?
You will learn how to create IAM users, including setting up permissions and access methods, and gain insight into how AWS permissions work, including attaching policies to users.
Project 13: Use a Managed Config Rule
Overview
Enable AWS Config in the us-east-1 region and use a managed config rule to monitor the encryption status of Amazon EBS volumes.
Objective
- Turn on AWS Config in the US East (N. Virginia) region.
- Choose the managed Config rule, such as
encrypted-volumes
. - Launch an EC2 instance without an encrypted EBS volume.
- Monitor AWS Config until it detects that there is an unencrypted EBS volume.
Services Used
- AWS Config for resource monitoring and compliance tracking.
- Amazon EC2 for testing compliance with encrypted and unencrypted EBS volumes.
Output
What will you learn?
You will learn how AWS Config can trigger alerts or actions when a resource is found to be non-compliant.
Project 14: Deploy a CloudFormation Template from the AWS Console
Overview
Deploy a CloudFormation template from the AWS Console, which automatically provisions a DynamoDB table and an S3 bucket.
Objective
- Download a simple CloudFormation template.
- Go to the CloudFormation Console in AWS.
- Choose "Create stack" with new resources and use the template file from above.
- On the "Configure stack options" page, leave everything at the default settings.
- Watch as CloudFormation deploys the resources, and check the Events tab to see what is being created.
- Ensure that a new DynamoDB table and a new S3 bucket are deployed.
- Delete the stack in the CloudFormation console.
- Confirm that both resources have been deleted.
Service Used
AWS CloudFormation for deploying infrastructure as code.
Output
What will you learn?
You will learn how to create, update, and delete AWS resources in a controlled manner using CloudFormation stacks.
Conclusion
When you complete all 14 projects listed above, you will have gained experience with services like CloudWatch, AWS Budgets, Amazon EC2, Amazon Elastic Container Registry (ECR), Docker, AWS CLI, Amazon Relational Database Service (RDS), Amazon DynamoDB, Amazon S3, Amazon SNS, AWS Lambda, Amazon CloudFront, AWS Identity and Access Management (IAM), AWS Config, and AWS CloudFormation.
I call all of the above projects 'Level 100 Introductory Projects,' meaning they are suitable for beginners and cover fundamental AWS concepts and basic services.
I'll probably create a blog about a few more projects, but those will be 'Level 200 Projects,' designed for those who have a basic understanding of AWS and want to explore more complex scenarios.
You can check out my GitHub repository for more:
https://github.com/Dark-Cookie/AWS-Projects
Asif Khan — Aspiring Cloud Architect | Weekly Cloud Learning Chronicler