DEV Community

Priyanka Vuddemari
Priyanka Vuddemari

Posted on

Cloud Resume Challenge Week 1 — What I Built and How I Did It

Week 1 is done and my resume is live on the internet! 🎉

In my last post I introduced the Cloud Resume Challenge. This time I'm documenting exactly what I did, step by step i.e. the decisions I made, the gotchas I hit, and what I learned along the way.

If you're following along or planning to do the challenge yourself, hopefully this saves you some time.


What was the goal for Week 1?

Build a resume as a static website and get it properly live on AWS. Not just thrown on a free hosting platform properly, with a CDN, HTTPS, and cloud infrastructure. Specifically:

  • ✅ HTML & CSS resume page
  • ✅ Code stored in GitHub
  • ✅ Hosted on AWS S3
  • ✅ CloudFront distribution in front of it
  • ✅ HTTPS via SSL certificate
  • ✅ Resume live and accessible on the internet

Step 1 — Building the Resume in HTML & CSS

I built my resume as a plain HTML page with a separate CSS file. The challenge is about cloud skills, not front-end wizardry, so I kept it clean and professional without overcomplicating it.

The files ended up being:

  • index.html — the resume content
  • styles.css — the styling

Once done I pushed both files to a GitHub repository which will be home base for the entire project going forward.

💡 *Tip: * Name your main file index.html from the start S3 static website hosting looks for this file by default when someone hits your URL.


Step 2 — Creating the S3 Bucket

I went to AWS S3 and created a General Purpose bucket in the ap-south-2 (Hyderabad) region and named it priyanka-cloud-resume-challenge.

A few things to note when creating the bucket:

  • Leave all default settings for now
  • Block all public access will be ON by default — that's fine, we'll change it shortly
  • Don't worry about any other settings at this stage

Step 3 — Enabling Static Website Hosting

This is what tells S3 to serve your files as a website rather than just storing them.

  1. Click into your bucket → Properties tab
  2. Scroll down to Static website hosting → click Edit
  3. Select Enable
  4. Set Index document to index.html
  5. Save changes

At this point S3 gives you a bucket website endpoint URL — something like:

http://priyanka-cloud-resume-challenge.s3-website.ap-south-2.amazonaws.com
Enter fullscreen mode Exit fullscreen mode

Hold onto this — you'll use it to test in a moment.


Step 4 — Uploading the Files

Still inside the bucket:

  1. Go to the Objects tab
  2. Click UploadAdd files
  3. Select both index.html and styles.css together
  4. Click Upload

Both files go into the same bucket — simple and clean.


Step 5 — Making the Bucket Public

By default S3 blocks all public access. Since this is a public resume website, we need to open it up.

First — turn off Block Public Access:

  1. Go to Permissions tab
  2. Click Edit on Block public access
  3. Uncheck "Block all public access"
  4. Save → type confirm when prompted

Then — add a Bucket Policy:

  1. Still on Permissions tab → scroll to Bucket policy → Edit
  2. Paste this policy (replace the bucket name with yours):
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "PublicReadGetObject",
      "Effect": "Allow",
      "Principal": "*",
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::priyanka-cloud-resume-challenge/*"
    }
  ]
}
Enter fullscreen mode Exit fullscreen mode
  1. Save changes

Now visit your bucket website endpoint URL — your resume should load! 🎉


Step 6 — Setting Up CloudFront

S3 hosting works but it has limitations — no HTTPS, slower for global visitors, and the URL is ugly. CloudFront fixes all of this — it's AWS's CDN (Content Delivery Network) that sits in front of S3 and serves your content from edge locations worldwide.

Here's how I set it up:

  1. Go to CloudFront in AWS Console → Create Distribution
  2. For Origin, select your S3 bucket
  3. When prompted — choose "Use website endpoint" (important!)
  4. Skip WAF or leave default basic protection
  5. Leave all other settings as default
  6. Click Create Distribution

CloudFront takes about 5-10 minutes to deploy globally. Once the status changes from Deploying to Enabled, you'll see your CloudFront domain name:

https://d1234abcd.cloudfront.net
Enter fullscreen mode Exit fullscreen mode

💡 Why "Use website endpoint"? Because we enabled Static Website Hosting on S3, the website endpoint already knows to serve index.html by default. Using the S3 bucket directly instead can cause routing issues.


Step 7 — Testing HTTPS

This is the satisfying part. Open your CloudFront URL with https://:

https://d1234abcd.cloudfront.net
Enter fullscreen mode Exit fullscreen mode

You should see:

  • ✅ Your resume loading perfectly
  • ✅ A 🔒 padlock in the browser address bar
  • ✅ SSL certificate provided automatically by CloudFront

No extra SSL setup needed — CloudFront handles it automatically!

What about the custom domain?

The challenge officially requires a custom domain name registered
in Route 53. I'm skipping this for now and will add it at the end
once everything else is built.

A few reasons:

  • All the real learning — Lambda, DynamoDB, CI/CD — happens without needing a domain
  • I want to complete the full challenge end to end first
  • I'll add the domain as the final step to officially wrap it up

I'd rather get the full architecture working first and add the
domain at the end. I'll document it when I get there! 😊


What I actually learned this week

  • S3 is not just file storage — it can host entire websites without a server
  • Bucket policies control access — understanding the JSON structure matters
  • CloudFront vs direct S3 — always use CloudFront for production; direct S3 has no HTTPS and is slower
  • "Use website endpoint" matters — small setting, big difference in behaviour
  • The cloud resume is a real project — not a tutorial you follow blindly, you actually make decisions

Architecture so far

Browser → (HTTPS) → CloudFront (CDN + SSL + Cache) → S3 Bucket (index.html + styles.css)
             ↑ d1234abc.cloudfront.net        ↑ ap-south-2 (Hyderabad)

Enter fullscreen mode Exit fullscreen mode

Simple but real cloud architecture. Week 2 adds Lambda, DynamoDB and API Gateway on top of this.


What's next?

Before moving to Week 2 I'm spending the rest of this week on some of the optional Mods from the challenge book:

  • DevOps Mod — setting up GitHub Actions CI/CD to auto-deploy on every push
  • AI Engineer Mod — adding an LLM resume summarizer using Amazon Bedrock

Each mod will get its own post — stay tuned! 🚀


Resources that helped


Part of my Cloud Resume Challenge series. Read Post 1 here

Top comments (0)