<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: MIDHUN KRISHNA B</title>
    <description>The latest articles on DEV Community by MIDHUN KRISHNA B (@midhun_krishnab_d5791755).</description>
    <link>https://dev.to/midhun_krishnab_d5791755</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4125521%2F32150cee-984c-4942-95f7-a0486a08499f.png</url>
      <title>DEV Community: MIDHUN KRISHNA B</title>
      <link>https://dev.to/midhun_krishnab_d5791755</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/midhun_krishnab_d5791755"/>
    <language>en</language>
    <item>
      <title>Cloud Workshop Day 1: Building and Deploying My First HTML Portfolio on AWS</title>
      <dc:creator>MIDHUN KRISHNA B</dc:creator>
      <pubDate>Tue, 15 Sep 2026 06:54:57 +0000</pubDate>
      <link>https://dev.to/midhun_krishnab_d5791755/cloud-workshop-day-1-building-and-deploying-my-first-html-portfolio-on-aws-1mm0</link>
      <guid>https://dev.to/midhun_krishnab_d5791755/cloud-workshop-day-1-building-and-deploying-my-first-html-portfolio-on-aws-1mm0</guid>
      <description>&lt;h1&gt;
  
  
  From &lt;code&gt;index.html&lt;/code&gt; to the Cloud: Deploying My Portfolio with AWS S3 and CloudFront
&lt;/h1&gt;

&lt;p&gt;As part of my cloud workshop, I got the opportunity to build and deploy my own personal portfolio website using &lt;strong&gt;HTML, CSS, JavaScript, and AWS&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The website itself was straightforward — a single HTML-based portfolio — but deploying it to the cloud taught me much more than simply creating a webpage.&lt;/p&gt;

&lt;p&gt;I worked with &lt;strong&gt;Amazon S3&lt;/strong&gt; to host my website files and &lt;strong&gt;Amazon CloudFront&lt;/strong&gt; to distribute the website through a global content delivery network.&lt;/p&gt;

&lt;p&gt;Along the way, I also faced a few errors that helped me understand how cloud deployment actually works.&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Technologies Used
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Amazon S3&lt;/li&gt;
&lt;li&gt;Amazon CloudFront&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  1. Building My Portfolio Website
&lt;/h2&gt;

&lt;p&gt;I started by creating my portfolio as an HTML file.&lt;/p&gt;

&lt;p&gt;The main file was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I used HTML to structure the website and CSS to design the interface. JavaScript was used wherever interactive functionality was required.&lt;/p&gt;

&lt;p&gt;The portfolio included sections such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;About Me&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Education&lt;/li&gt;
&lt;li&gt;Experience / Journey&lt;/li&gt;
&lt;li&gt;Contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to create a simple, responsive portfolio that could showcase my skills and projects.&lt;/p&gt;

&lt;p&gt;At first, the website was running locally on my computer.&lt;/p&gt;

&lt;p&gt;The next challenge was:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;How can I make this website accessible online?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That's where AWS came in.&lt;/p&gt;




&lt;h1&gt;
  
  
  ☁️ 2. Creating an Amazon S3 Bucket
&lt;/h1&gt;

&lt;p&gt;The first AWS service I used was &lt;strong&gt;Amazon S3 (Simple Storage Service)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;S3 can store static website files such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;JavaScript&lt;/li&gt;
&lt;li&gt;Images&lt;/li&gt;
&lt;li&gt;Other frontend assets&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I created an S3 bucket specifically for my portfolio website.&lt;/p&gt;

&lt;p&gt;After creating the bucket, I uploaded my &lt;code&gt;index.html&lt;/code&gt; file along with the required website files.&lt;/p&gt;

&lt;p&gt;The basic structure looked like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Portfolio Website
│
├── index.html
├── style.css
├── script.js
└── images/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important file was &lt;code&gt;index.html&lt;/code&gt;, because it served as the main entry point of the website.&lt;/p&gt;




&lt;h1&gt;
  
  
  🌐 3. Configuring the Website in S3
&lt;/h1&gt;

&lt;p&gt;After uploading the files, I configured the S3 bucket for hosting the static website.&lt;/p&gt;

&lt;p&gt;The idea was simple:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Browser
   ↓
AWS S3
   ↓
index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, simply uploading a file to S3 does not automatically make it publicly accessible.&lt;/p&gt;

&lt;p&gt;I had to configure the required settings and permissions so that the website could be accessed properly.&lt;/p&gt;




&lt;h1&gt;
  
  
  ⚠️ 4. Facing the Access Denied Error
&lt;/h1&gt;

&lt;p&gt;One of the first problems I encountered was an:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AccessDenied
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;error.&lt;/p&gt;

&lt;p&gt;The file existed inside the bucket, but accessing it through the website endpoint did not work as expected.&lt;/p&gt;

&lt;p&gt;This made me realize an important concept:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Uploading a file to cloud storage and making that file accessible through the internet are two different things.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I had to check the bucket configuration and permissions carefully.&lt;/p&gt;

&lt;p&gt;After correcting the required settings, I was able to access the website through S3.&lt;/p&gt;




&lt;h1&gt;
  
  
  🚀 5. Adding Amazon CloudFront
&lt;/h1&gt;

&lt;p&gt;Once the website was working with S3, I wanted to use &lt;strong&gt;Amazon CloudFront&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;CloudFront is AWS's Content Delivery Network (CDN). It can distribute website content through edge locations around the world.&lt;/p&gt;

&lt;p&gt;The architecture became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User
  ↓
CloudFront
  ↓
Amazon S3
  ↓
index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instead of users directly accessing the S3 bucket, CloudFront could act as the front-facing distribution layer.&lt;/p&gt;

&lt;p&gt;This also introduced another set of configuration requirements.&lt;/p&gt;




&lt;h1&gt;
  
  
  ❌ 6. The CloudFront &lt;code&gt;NoSuchKey&lt;/code&gt; Error
&lt;/h1&gt;

&lt;p&gt;After configuring CloudFront, I encountered another error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;NoSuchKey
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The error indicated that CloudFront was looking for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of simply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;At first, this was confusing because the &lt;code&gt;index.html&lt;/code&gt; file definitely existed in the S3 bucket.&lt;/p&gt;

&lt;p&gt;I then checked the CloudFront configuration.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔍 7. Finding the Problem
&lt;/h1&gt;

&lt;p&gt;The problem was related to the &lt;strong&gt;Origin Path&lt;/strong&gt; configuration.&lt;/p&gt;

&lt;p&gt;The CloudFront origin had been configured with an origin path that already pointed toward &lt;code&gt;index.html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;At the same time, the CloudFront distribution was configured with:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Default Root Object:
index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This caused CloudFront to effectively construct a path similar to:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/index.html/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That file obviously did not exist.&lt;/p&gt;

&lt;p&gt;The correct configuration was to remove the unnecessary origin path and allow CloudFront to use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Default Root Object → index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After correcting the configuration, CloudFront could find the actual file in the S3 bucket.&lt;/p&gt;




&lt;h1&gt;
  
  
  🔄 8. Creating a CloudFront Invalidation
&lt;/h1&gt;

&lt;p&gt;After changing the CloudFront configuration, I created an invalidation for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/*
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This tells CloudFront to remove the cached versions of the requested objects so that the updated configuration/content can be served.&lt;/p&gt;

&lt;p&gt;After waiting for the distribution to update, I tested the website again.&lt;/p&gt;

&lt;p&gt;This time, the portfolio loaded successfully.&lt;/p&gt;




&lt;h1&gt;
  
  
  🎉 9. Final Architecture
&lt;/h1&gt;

&lt;p&gt;The final deployment looked like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;             ┌─────────────────┐
             │      User       │
             └────────┬────────┘
                      │
                      ▼
             ┌─────────────────┐
             │  CloudFront CDN │
             └────────┬────────┘
                      │
                      ▼
             ┌─────────────────┐
             │    Amazon S3    │
             │                 │
             │   index.html    │
             │   CSS / JS      │
             └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The portfolio was no longer limited to my local computer.&lt;/p&gt;

&lt;p&gt;It had been deployed to the AWS cloud and could be delivered through CloudFront.&lt;/p&gt;




&lt;h1&gt;
  
  
  🧩 Challenges I Faced
&lt;/h1&gt;

&lt;p&gt;The deployment was not completely straightforward.&lt;/p&gt;

&lt;p&gt;I faced several issues during the process:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. S3 &lt;code&gt;AccessDenied&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;The website files existed, but the required access configuration was not correct.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Bucket Configuration
&lt;/h3&gt;

&lt;p&gt;I had to carefully check the bucket settings and make sure the configuration matched the website deployment requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. CloudFront &lt;code&gt;NoSuchKey&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;CloudFront was looking for:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html/index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;instead of:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. CloudFront Caching
&lt;/h3&gt;

&lt;p&gt;After making configuration changes, I had to create an invalidation so that the updated content could be served.&lt;/p&gt;

&lt;p&gt;These problems were actually one of the most valuable parts of the workshop because they forced me to understand what was happening instead of simply following deployment steps.&lt;/p&gt;




&lt;h1&gt;
  
  
  💡 What I Learned
&lt;/h1&gt;

&lt;p&gt;This workshop gave me practical experience with cloud deployment.&lt;/p&gt;

&lt;p&gt;Some of the key things I learned were:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How static websites can be hosted using Amazon S3.&lt;/li&gt;
&lt;li&gt;How cloud storage permissions affect website accessibility.&lt;/li&gt;
&lt;li&gt;How CloudFront works as a CDN.&lt;/li&gt;
&lt;li&gt;How CloudFront connects to an S3 origin.&lt;/li&gt;
&lt;li&gt;How the Default Root Object works.&lt;/li&gt;
&lt;li&gt;Why correct origin configuration is important.&lt;/li&gt;
&lt;li&gt;How caching can affect website updates.&lt;/li&gt;
&lt;li&gt;How to troubleshoot AWS deployment errors.&lt;/li&gt;
&lt;li&gt;How a locally created HTML website can be moved to the cloud.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest lesson for me was that &lt;strong&gt;deployment is not always about getting everything right on the first attempt&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Errors such as &lt;code&gt;AccessDenied&lt;/code&gt; and &lt;code&gt;NoSuchKey&lt;/code&gt; initially looked confusing, but investigating them helped me understand the underlying AWS configuration.&lt;/p&gt;




&lt;h1&gt;
  
  
  🌍 From a Local File to a Cloud Website
&lt;/h1&gt;

&lt;p&gt;Before this workshop, my portfolio was simply a website running on my computer.&lt;/p&gt;

&lt;p&gt;After the deployment process, the architecture became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;HTML Portfolio
      ↓
    S3
      ↓
 CloudFront
      ↓
   Internet
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That transition gave me a practical understanding of how cloud services can be used to deploy real websites.&lt;/p&gt;

&lt;p&gt;It was a small project, but it was a valuable first step toward understanding &lt;strong&gt;cloud computing and deployment&lt;/strong&gt;.&lt;/p&gt;




&lt;h1&gt;
  
  
  🚀 Conclusion
&lt;/h1&gt;

&lt;p&gt;Building the portfolio was only one part of the experience.&lt;/p&gt;

&lt;p&gt;The more valuable part was taking the &lt;code&gt;index.html&lt;/code&gt; file from my local system and actually deploying it using AWS.&lt;/p&gt;

&lt;p&gt;I learned that cloud deployment involves more than uploading files. Configuration, permissions, origins, caching, and troubleshooting all play an important role.&lt;/p&gt;

&lt;p&gt;This workshop gave me hands-on experience with &lt;strong&gt;Amazon S3 and CloudFront&lt;/strong&gt;, and it motivated me to explore more AWS services and cloud-based deployments in the future.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Build it locally. Deploy it to the cloud. Break it. Debug it. Learn from it.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
