Part 1: Tackling The Cloud Resume Challenge

Ntando Mvubu
6 min readMar 20, 2024

--

Introduction

As a newcomer to the world of cloud computing, embarking on the Cloud Resume Challenge by Forrest Brazeal, I felt like stepping into a vast, uncharted territory filled with endless possibilities and complex technologies. With a humble understanding of the cloud’s potential and armed with determination, I set out on this journey to build and showcase my technical skills while learning along the way.

In this series of articles, I’ll be documenting my experiences, triumphs, and inevitable challenges encountered as I navigate through the Cloud Resume Challenge. Join me as I unravel the intricacies of AWS services, grapple with unfamiliar concepts, and ultimately emerge with a deeper understanding of cloud computing.

Whether you’re a fellow beginner seeking guidance or a seasoned professional reminiscing about your own early days in the cloud, I invite you to join me on this adventure. Together, let’s explore the ever-evolving landscape of cloud technology and embark on a journey of continuous learning and growth.

Unpacking the Challenge

In the Cloud Resume Challenge, participants are tasked with hosting a personal resume website using cloud technologies on their preferred cloud platform. In my pursuit of the challenge, I've chosen to harness the power of Amazon Web Services (AWS). With its comprehensive suite of cloud services and robust infrastructure capabilities, AWS provides the ideal platform for hosting my personal resume website. Leveraging AWS allows me to tap into scalable, reliable, and secure solutions, ensuring an optimal user experience while showcasing my technical skills.

The challenge is divided into these main steps:

  1. Frontend
    -
    HTML, CSS, S3, CloudFront, Route 53
  2. Backend API
    -
    DynamoDB, Lambda, JavaScript, Python
  3. Automation and CI/CD
    -
    Terraform and Github Actions
  4. The Blog
    -
    Documenting your work

Some Pre- Requisites

  1. Certification: It is advisable to acquire the AWS Cloud Practitioner certification at least before taking the challenge. It serves as a foundational qualification, providing essential understanding of the AWS cloud platform. Moreover, it is a requirement that your resume include the AWS Cloud Practitioner certification.
  2. Foundational understanding of cloud computing principles, including key concepts such as scalability, reliability, and security.
  3. Basic knowledge of AWS, including familiarity with services like S3, Route 53, CloudFront, AWS Lambda and Amazon DynamoDB.
  4. Access to an AWS Account: AWS offers a free tier with limited resources, which can be utilized for the challenge. It would best practice to create a dedicated user account instead of using root access.
  5. Desire to Learn

In this article, our main focus will be on my experiences navigating through the frontend aspect of the challenge. Fortunately, I had previously obtained the AWS Cloud Practitioner certification and had become acquainted with the services through practical exercises on A Cloud Guru. Despite this preparation, tackling the challenge proved to be more intricate than initially anticipated.

Setting Up Infrastructure: S3, Route 53, and CloudFront

To kick things off, let’s explore key components of frontend web infrastructure. Amazon S3 provides scalable storage and static website hosting capabilities, while CloudFront speeds up content delivery worldwide. DNS translates domain names to IP addresses, enabling smooth website access. Finally, ensuring secure communication between clients and servers, SSL/TLS certificates play a pivotal role in encrypting data transmitted over the internet. These elements form the backbone of cloud-based systems, ensuring reliability, speed, and security. I set up these configurations using the AWS console.

S3 Website Hosting

In setting up the infrastructure for my resume website, I began by configuring an S3 bucket to store the website’s static content. Special thanks to CodePen for providing the website template used for this project. While I’m not experienced in coding, their templates allowed me to create a simple website with ease. The website files included HTML and CSS which I customized to my liking.

After uploading the files to my S3 bucket, I enabled static website hosting to ensure that my website content could be served directly from the bucket. To grant public access to both the bucket and its objects, I configured the necessary permissions by enabling public access settings and attaching a bucket policy. This ensured that visitors could access my website’s content securely and without any restrictions.

Route 53 for Custom Domain Name

After configuring S3 to host my website’s files, the next step involved setting up DNS records in Route 53 to associate my custom domain. I registered a new domain name, ntandocloud.link, through AWS and created a public hosted zone to manage DNS records for this domain. Initially, my website was accessible via the S3 bucket endpoint URL. However, to give it a custom domain name, I needed to create DNS records linking my domain name to the S3 bucket endpoint.

Content Delivery through CloudFront

Next, I integrated CloudFront as a content delivery network to enhance website performance and security. This involved creating a CloudFront distribution and associating it with the S3 bucket as the origin, setting up OAC and enabling HTTPS with an SSL certificate for secure communication.

When I requested a new AWS Certificate Manager (ACM) certificate using DNS validation. However, the CNAME record wasn’t resolving and the status is still pending validation. I managed to solve the issue by adding the CNAME record to my DNS configuration under the public hosted zone. ACM uses the CNAME records to validate ownership of domains. After all domains are validated, the certificate status updates from Pending validation to Success. I referred to an AWS resource available here which provided valuable insights and guidance.

To further enhance security, I implemented Origin Access Identity (OAI) for CloudFront, ensuring that access to the S3 bucket hosting my website files was restricted only to CloudFront. This involved updating the S3 bucket policy to grant access to the OAI, thereby reinforcing security measures and safeguarding against unauthorized access to the bucket content.

When I attempted to validate my CloudFront distribution by using the CloudFront endpoint in my browser, I encountered a 404 Error Page, indicating that the requested website object could not be found. To address this issue, I realized that the problem might stem from the way I initially uploaded my files. Instead of uploading them within a folder, I re-uploaded each file individually. This approach enabled CloudFront to locate the files correctly, ensuring that the distribution passed the validation test successfully.

The final step of the setup process entailed updating the A Record in Route 53. Initially pointing to the S3 Bucket endpoint, this record was modified to resolve to the CloudFront distribution endpoint. By doing so, the website content is now served through the CloudFront service, ensuring faster delivery and enhanced performance.

Despite the initial complexity, the seamless integration of these AWS services ensured a reliable and scalable infrastructure for hosting my resume website.

Key Take Aways:

  1. Integration of Frontend Technologies: As part of the challenge, I delved into frontend configurations and their integration with AWS services. Understanding how frontend technologies such as HTML, CSS, and JavaScript work alongside AWS services like S3, Route 53, and CloudFront was pivotal in creating a seamless user experience for my resume website.
  2. Importance of Scalability and Performance: Setting up CloudFront as a content delivery network demonstrated the significance of scalability and performance optimization in web hosting. Leveraging CloudFront’s edge locations helped enhance website loading times and responsiveness, crucial factors for a positive user experience.
  3. Domain and DNS Management: Understanding how to configure DNS records and manage domain settings is essential for ensuring seamless access to web resources and services.
  4. Security Considerations:
  • Implementing SSL/TLS encryption through CloudFront highlighted the importance of security in web hosting. Securing web traffic with HTTPS encryption helps protect sensitive data and builds trust with website visitors.
  • Setting up your S3 bucket securely by using Origin Access Identity (OAI) is best practice. This lets you control access to your bucket through CloudFront, ensuring that your files are accessed securely using HTTPS and SSL/TLS encryption. By doing this, you protect your data from unauthorized access and make your website more secure.”

In wrapping up, the Cloud Resume Challenge has been an invaluable journey so far, offering insights into cloud computing from start to finish, each step has been a learning experience. Despite a few hair pulling moments, I’ve emerged with newfound skills and enthusiasm for tackling future projects. I learned the invaluable lessons of continuous learning, problem-solving and embracing new challenges with curiosity and zeal. As I look ahead, I’m even more eager to dive into the next steps of this challenge. I hope this post has provided you with insights for your own cloud journey. Stay tuned for my next article in this multi-part series where I go head to head with the backend side of things.

--

--