Challenge Objectives:
- Obtain the AWS Cloud Practitioner Certification
- Write your resume in HTML
- Style your resume with CSS
- Deploy your resume as an S3 static website using Amazon CloudFront
- Point a custom DNS domain name to the CloudFront distribution
- Include a visitor counter using JavaScript
- Create DynamoDB to retrieve and update counter
- Create an API to communicate with Javascript code and DynamoDB
- Create a Lambda function using Python to trigger the API Gateway which reads from DynamoDB and updates the visitor counter
- Write the AWS Infrastructure as Code
- Set up GitHub to automate updates and deployment
The Cloud Resume Challenge
To gain additional experience in the cloud realm, I stumbled upon the Cloud Resume Challenge. It's a hands-on project designed to help bridge the gap from cloud certification to landing a cloud job. The challenge incorporates many of the skills that real cloud and DevOps engineers utilize in their daily work. Not only was it a perfect opportunity for me to create a personal website, but it also allowed me to showcase additional projects and skills.
When I began exploring cloud providers for creating my remarkable personal website, I made the decision to go with AWS (Amazon Web Services). Obtaining the AWS Cloud Practitioner Certification was my first step in laying a strong foundation for my AWS journey. This certification provided me with a comprehensive understanding of AWS cloud concepts and services, equipping me with the necessary knowledge to make informed decisions throughout my website development process.
Next, I set up my AWS account with AWS Organization. Recognizing the importance of having a well-organized structure for my AWS account, I created separate accounts within each organizational unit (OU) for my development and production environments. This segregation ensured better control and management of resources. With my organization layout in place, I was ready to dive into the creative process of designing my resume.
The first step in creating my personal website was crafting an appealing resume using HTML. I found an existing template and structured the content by adding headings, paragraphs, and lists. To enhance its visual appeal, I employed CSS to incorporate colors, fonts, and layouts, transforming my resume into a visually appealing representation of my unique brand.
Now, it was time to make my website accessible to the world. I chose Amazon S3 (Simple Storage Service), a reliable and scalable storage solution, to host my static website. I uploaded my HTML and CSS files to an S3 bucket and enabled static website hosting. Additionally, I integrated Amazon CloudFront, a content delivery network (CDN), to ensure fast and reliable content delivery to visitors across the globe.
Ensuring the security and trustworthiness of my website was crucial, so I employed AWS Certificate Manager to obtain an SSL/TLS certificate. This certificate allowed me to establish a secure HTTPS connection between my website and its visitors. With AWS Certificate Manager, I gained peace of mind knowing that sensitive information exchanged on my website would be encrypted and protected.
Next, I registered a custom DNS domain name, such as www.wecpotfolio.link, through Route 53. I configured the DNS settings to point my domain to the CloudFront distribution associated with my S3 bucket. This way, visitors could access my website using the carefully chosen domain name.
In the creation of my resume website, I decided to incorporate JavaScript to implement a visitor counter. I wanted to track the number of people accessing my website, providing me with valuable statistics on its reach and engagement.
To effectively manage and store the visitor counter data, I leveraged Amazon DynamoDB, a fully managed NoSQL database service. I created a DynamoDB table with attributes such as the counter value and key schemas. To facilitate communication between my website and DynamoDB, I set up an API using Amazon API Gateway. This powerful service allowed me to define RESTful APIs and securely communicate with backend services. I configured the API Gateway endpoints to connect with DynamoDB, enabling seamless retrieval and updates of the visitor counter.
To trigger the API Gateway and update the visitor counter, I utilized AWS Lambda, a serverless compute service. By writing some Python code, I created a function within Lambda that interacted with DynamoDB, retrieving and incrementing the counter value. AWS Lambda provided the flexibility and scalability required to handle these backend operations seamlessly.
With each piece falling into place, I realized the importance of managing my AWS resources and infrastructure efficiently. I embraced Infrastructure as Code (IaC) practices, utilizing tools like Terraform. By defining my infrastructure as code, I could version control and automate the provisioning and configuration of my resources, ensuring scalability and reproducibility.
To streamline the process of updating and deploying my website, I integrated GitHub into my workflow. GitHub, being a popular version control and collaboration platform, allowed me to automate the deployment process. By configuring continuous integration and deployment pipelines, I ensured that any changes made to my code were automatically reflected on my live website.
The Cloud Resume Challenge provided me with valuable hands-on experience in the cloud realm and allowed me to showcase my skills and projects. Through AWS services like S3, CloudFront, DynamoDB, API Gateway, and Lambda, I created a professional and secure personal website. By adopting Infrastructure as Code practices and leveraging tools like Terraform and GitHub, I streamlined the management and deployment of my website. This challenge served as a stepping stone towards my journey in the cloud industry, equipping me with practical skills that are highly sought after by employers.