<?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: Ananthika C</title>
    <description>The latest articles on DEV Community by Ananthika C (@ananthikaa4).</description>
    <link>https://dev.to/ananthikaa4</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%2F4125460%2F0b9259dc-54d5-4080-9373-4b620dc92883.png</url>
      <title>DEV Community: Ananthika C</title>
      <link>https://dev.to/ananthikaa4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ananthikaa4"/>
    <language>en</language>
    <item>
      <title>Ananthika Unlocks Athena: SQL Wisdom Without a Single Server ⚡</title>
      <dc:creator>Ananthika C</dc:creator>
      <pubDate>Tue, 15 Sep 2026 23:27:36 +0000</pubDate>
      <link>https://dev.to/ananthikaa4/ananthika-unlocks-athena-sql-wisdom-without-a-single-server-47gd</link>
      <guid>https://dev.to/ananthikaa4/ananthika-unlocks-athena-sql-wisdom-without-a-single-server-47gd</guid>
      <description>&lt;p&gt;&lt;em&gt;By Ananthika — M.Sc. AI &amp;amp; ML, Coimbatore Institute of Technology&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When I sat down to pick an AWS service for this assignment, I wanted something that actually matched my name — and the moment I saw &lt;strong&gt;Amazon Athena&lt;/strong&gt;, it felt too perfect to skip. AWS named the service after Athena, the Greek goddess of wisdom and strategy, and that felt fitting: this is a service that lets you extract &lt;em&gt;wisdom&lt;/em&gt; — real answers — out of raw data, without spinning up a single server. Most of my classmates were heading straight for S3 or EC2, so I decided to explore something a little less crowded but just as powerful.&lt;/p&gt;




&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What is Amazon Athena?
&lt;/h3&gt;

&lt;p&gt;Amazon Athena is an &lt;strong&gt;interactive, serverless query service&lt;/strong&gt; that lets you analyze data directly in Amazon S3 using standard SQL. There's no need to load data into a database, set up a cluster, or manage any infrastructure — you simply point Athena at your data, define its structure, and start writing &lt;code&gt;SELECT&lt;/code&gt; statements. Under the hood, Athena is built on &lt;strong&gt;Presto&lt;/strong&gt; (now Trino) and &lt;strong&gt;Apache Hive&lt;/strong&gt; for query execution and table management.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why was it created?
&lt;/h3&gt;

&lt;p&gt;Before Athena, if you wanted to run SQL-style analytics on files sitting in S3, you typically had two painful options: build and manage your own Hadoop/Presto cluster, or first load everything into a data warehouse. Both approaches cost time, money, and DevOps effort — especially for one-off or exploratory queries. AWS launched Athena in &lt;strong&gt;2016&lt;/strong&gt; to remove that friction entirely. The idea was simple: let people query data &lt;em&gt;where it already lives&lt;/em&gt; and pay only for the queries they actually run, instead of paying for idle infrastructure 24/7.&lt;/p&gt;




&lt;h2&gt;
  
  
  How It Works
&lt;/h2&gt;

&lt;p&gt;Athena's workflow is refreshingly simple once you see it laid out:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Your raw data (CSV, JSON, Parquet, ORC, Avro, log files, etc.) sits in an &lt;strong&gt;S3 bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;You define a &lt;strong&gt;table schema&lt;/strong&gt; describing that data — either manually or automatically using an &lt;strong&gt;AWS Glue Crawler&lt;/strong&gt;, which scans the files and builds the schema for you in the &lt;strong&gt;AWS Glue Data Catalog&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;When you run a SQL query, Athena reads the schema from the Glue Data Catalog, scans only the relevant data in S3, and executes the query using its distributed engine — all without you provisioning any servers.&lt;/li&gt;
&lt;li&gt;The results are written back to a location in S3 that you specify, and you can view them instantly in the console or pull them into a visualization tool like &lt;strong&gt;Amazon QuickSight&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixtlkkve2munu3sx0jf7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fixtlkkve2munu3sx0jf7.png" alt=" " width="799" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure: How a query travels from raw S3 files, through the Glue Data Catalog, into Athena, and out to results/visualization.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Features
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Truly Serverless&lt;/strong&gt;&lt;br&gt;
There is nothing to provision, patch, or scale. AWS manages all the underlying compute; you just submit queries. This is a huge advantage for a student or small team that doesn't want to babysit infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Pay-Per-Query Pricing&lt;/strong&gt;&lt;br&gt;
Athena charges based on the &lt;strong&gt;amount of data scanned per query&lt;/strong&gt; (as of writing, around \$5 per terabyte scanned), not on server uptime. Run a query, pay for that query — nothing more. Storing data in compressed, columnar formats like Parquet can cut costs dramatically because Athena scans far less data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Standard ANSI SQL Support&lt;/strong&gt;&lt;br&gt;
You don't need to learn a new query language. If you already know SQL — which most of us do from our database courses — you can start querying massive datasets on day one. Athena also supports complex queries: joins, window functions, CTEs, and nested/semi-structured data (JSON, arrays, structs).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Seamless Integration with the AWS Ecosystem&lt;/strong&gt;&lt;br&gt;
Athena works naturally with &lt;strong&gt;AWS Glue&lt;/strong&gt; (schema/catalog management), &lt;strong&gt;Amazon QuickSight&lt;/strong&gt; (dashboards), &lt;strong&gt;AWS Lambda&lt;/strong&gt; (triggering queries programmatically), and &lt;strong&gt;Amazon S3&lt;/strong&gt; (as both source and destination), making it easy to build a complete analytics pipeline using only managed services.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Federated Query Support&lt;/strong&gt;&lt;br&gt;
Beyond S3, Athena can query other sources too — relational databases, DynamoDB, on-prem systems — through &lt;strong&gt;data source connectors&lt;/strong&gt;, so you're not limited to a single storage layer.&lt;/p&gt;


&lt;h2&gt;
  
  
  College / Student Use Case 🎓
&lt;/h2&gt;

&lt;p&gt;Here's where Athena becomes genuinely useful for a department like ours at CIT. Imagine our college's &lt;strong&gt;student attendance and academic performance logs&lt;/strong&gt; are exported weekly as CSV files from the ERP system into an S3 bucket — attendance sheets, assignment marks, lab records, and placement drive data, sitting as flat files across different folders.&lt;/p&gt;

&lt;p&gt;Instead of writing a custom backend to answer questions like &lt;em&gt;"Which department had the lowest average attendance last semester?"&lt;/em&gt;, a faculty coordinator (or a student project team) could simply:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Drop the exported CSVs into S3.&lt;/li&gt;
&lt;li&gt;Run an AWS Glue Crawler once to detect the schema.&lt;/li&gt;
&lt;li&gt;Query the data instantly with SQL through Athena — no database server, no ETL pipeline, no waiting.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is exactly the "analyze data that's just sitting there" problem Athena is designed for — a realistic way a college IT cell or a final-year project could extract insights from scattered institutional data without heavy infrastructure.&lt;/p&gt;


&lt;h2&gt;
  
  
  Simple Example
&lt;/h2&gt;

&lt;p&gt;Suppose our S3 bucket &lt;code&gt;s3://cit-student-data/attendance/&lt;/code&gt; contains CSV files with columns: &lt;code&gt;student_id&lt;/code&gt;, &lt;code&gt;department&lt;/code&gt;, &lt;code&gt;month&lt;/code&gt;, &lt;code&gt;attendance_percent&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1 — Create a table pointing to the S3 data (via Athena's Query Editor):&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;CREATE&lt;/span&gt; &lt;span class="k"&gt;EXTERNAL&lt;/span&gt; &lt;span class="k"&gt;TABLE&lt;/span&gt; &lt;span class="n"&gt;attendance&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="n"&gt;student_id&lt;/span&gt;            &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;department&lt;/span&gt;             &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="k"&gt;month&lt;/span&gt;                   &lt;span class="n"&gt;STRING&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="n"&gt;attendance_percent&lt;/span&gt;     &lt;span class="nb"&gt;DOUBLE&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;ROW&lt;/span&gt; &lt;span class="n"&gt;FORMAT&lt;/span&gt; &lt;span class="n"&gt;DELIMITED&lt;/span&gt;
&lt;span class="n"&gt;FIELDS&lt;/span&gt; &lt;span class="n"&gt;TERMINATED&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="s1"&gt;','&lt;/span&gt;
&lt;span class="k"&gt;LOCATION&lt;/span&gt; &lt;span class="s1"&gt;'s3://cit-student-data/attendance/'&lt;/span&gt;
&lt;span class="n"&gt;TBLPROPERTIES&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'skip.header.line.count'&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'1'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Step 2 — Query it like any relational table:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="n"&gt;ROUND&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;AVG&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;attendance_percent&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;avg_attendance&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;attendance&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="k"&gt;month&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'August'&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;department&lt;/span&gt;
&lt;span class="k"&gt;ORDER&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="n"&gt;avg_attendance&lt;/span&gt; &lt;span class="k"&gt;ASC&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Within seconds, Athena scans only the relevant files and returns a ranked list of departments by average attendance — no server started, and I'm billed only for the data that query scanned.&lt;/p&gt;




&lt;h2&gt;
  
  
  Advantages
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No infrastructure management&lt;/strong&gt; — ideal for students, startups, and teams without dedicated DevOps support.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cost-efficient for occasional or exploratory analytics&lt;/strong&gt;, especially compared to running an always-on database.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast to get started&lt;/strong&gt; — from raw files in S3 to your first query result in minutes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scales automatically&lt;/strong&gt; to handle small experimental datasets or genuinely large-scale data, without any configuration change on your part.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works with data as-is&lt;/strong&gt;, in open formats, so you're never locked into a proprietary storage system.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Limitations / Things to Consider
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Cost:&lt;/strong&gt; Billing is based on data scanned, so poorly structured queries (like &lt;code&gt;SELECT *&lt;/code&gt; on huge, uncompressed CSV files) can get expensive quickly. Partitioning data and using columnar formats like Parquet is essential for cost control.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complexity:&lt;/strong&gt; Simple queries are easy, but managing schemas, partitions, and the Glue Data Catalog for large or messy datasets can become non-trivial as file structures evolve.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability:&lt;/strong&gt; Athena scales well for read-heavy analytical queries but isn't meant for transactional workloads (frequent small updates/deletes) — it's an analytics engine, not an OLTP database.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Security:&lt;/strong&gt; Access is controlled via &lt;strong&gt;IAM policies&lt;/strong&gt; and &lt;strong&gt;S3 bucket policies&lt;/strong&gt;, and query results are also stored in S3, so those locations need securing too. For sensitive data like student records, encryption at rest and fine-grained access control (e.g., via &lt;strong&gt;Lake Formation&lt;/strong&gt;) matter.&lt;/p&gt;




&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Amazon Athena turns a plain S3 bucket into something you can query like a database — instantly, without servers, and without upfront cost. For a student like me, it's a great entry point into cloud-scale analytics because it builds directly on SQL skills I already have, while teaching real concepts like schema-on-read, columnar storage, and pay-per-use cloud economics. Whether it's analyzing institutional data, a personal project dataset, or logs from an IoT experiment, Athena makes "just query the data where it lives" a genuinely practical reality — and honestly, having "Athena" as my AWS service felt like a happy coincidence I couldn't pass up.&lt;/p&gt;




&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;AWS, &lt;em&gt;"What is Amazon Athena?"&lt;/em&gt; — &lt;a href="https://docs.aws.amazon.com/athena/latest/ug/what-is.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/athena/latest/ug/what-is.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;em&gt;"Amazon Athena User Guide"&lt;/em&gt; — &lt;a href="https://docs.aws.amazon.com/athena/latest/ug/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/athena/latest/ug/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;em&gt;"Amazon Athena Pricing"&lt;/em&gt; — &lt;a href="https://aws.amazon.com/athena/pricing/" rel="noopener noreferrer"&gt;https://aws.amazon.com/athena/pricing/&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;em&gt;"AWS Glue Data Catalog"&lt;/em&gt; — &lt;a href="https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/glue/latest/dg/catalog-and-crawler.html&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;AWS, &lt;em&gt;"Athena Federated Query"&lt;/em&gt; — &lt;a href="https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/athena/latest/ug/connect-to-a-data-source.html&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>database</category>
      <category>serverless</category>
      <category>sql</category>
    </item>
    <item>
      <title>Workshop on Cloud Native Systems &amp; AI Integra</title>
      <dc:creator>Ananthika C</dc:creator>
      <pubDate>Tue, 15 Sep 2026 07:03:53 +0000</pubDate>
      <link>https://dev.to/ananthikaa4/workshop-on-cloud-native-systems-ai-integra-1572</link>
      <guid>https://dev.to/ananthikaa4/workshop-on-cloud-native-systems-ai-integra-1572</guid>
      <description>&lt;h2&gt;
  
  
  🚀 What I Explored
&lt;/h2&gt;

&lt;p&gt;Let's go through what I did step by step.&lt;/p&gt;




&lt;h2&gt;
  
  
  1. 🪣 Creating an Amazon S3 Bucket
&lt;/h2&gt;

&lt;p&gt;I started by exploring &lt;strong&gt;Amazon S3 (Simple Storage Service)&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Amazon S3 is an object storage service that allows us to store and retrieve different types of data such as images, documents, HTML files, videos, application assets, and backups.&lt;/p&gt;

&lt;p&gt;For the workshop, I created an S3 bucket with the name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ananthika-05-15092026
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After creating the bucket, I explored the different options available for managing objects, permissions, and website hosting.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qy2b17wed8rz2iwhc5p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qy2b17wed8rz2iwhc5p.png" alt=" " width="799" height="441"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 1: Creating my Amazon S3 bucket.&lt;/em&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. 🖼️ Uploading an Image Object
&lt;/h2&gt;

&lt;p&gt;Once the bucket was created, I uploaded an &lt;strong&gt;image&lt;/strong&gt; into it.&lt;/p&gt;

&lt;p&gt;This was my first practical interaction with S3 as an object storage service.&lt;/p&gt;

&lt;p&gt;The image became an object inside my bucket, allowing me to understand how S3 stores individual files and organizes them using object keys.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F35zbfu7wiavr3w49ufyd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F35zbfu7wiavr3w49ufyd.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53vie0mffqecga0zum9d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F53vie0mffqecga0zum9d.png" alt=" " width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 2: Uploading an image object to my S3 bucket.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This simple step helped me understand one of the fundamental concepts of S3: &lt;strong&gt;storing files as objects inside a bucket&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. 🌐 Uploading My Portfolio Website
&lt;/h2&gt;

&lt;p&gt;After uploading the image, I uploaded my &lt;code&gt;index.html&lt;/code&gt; file to the same S3 bucket.&lt;/p&gt;

&lt;p&gt;This &lt;code&gt;index.html&lt;/code&gt; contained my &lt;strong&gt;portfolio website&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;My bucket now contained both the image and the HTML file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ananthika-05-15092026/
│
├── image
│
└── index.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsyhwk5cbv26wje7jt7lf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fsyhwk5cbv26wje7jt7lf.png" alt=" " width="800" height="439"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 3: My image and &lt;code&gt;index.html&lt;/code&gt; stored inside the S3 bucket.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;At this point, the files were stored in S3, but I still needed to configure the bucket to serve the HTML file as a website.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. 🌐 Enabling Static Website Hosting
&lt;/h2&gt;

&lt;p&gt;Next, I configured my S3 bucket for &lt;strong&gt;static website hosting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I enabled the static website hosting option and specified:&lt;br&gt;
&lt;/p&gt;

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

&lt;/div&gt;



&lt;p&gt;This tells S3 which HTML file should be served as the main page when someone accesses the website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuckgs9q5xnjxmofz6ajj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fuckgs9q5xnjxmofz6ajj.png" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 4: Enabling static website hosting and setting &lt;code&gt;index.html&lt;/code&gt; as the index document.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This was an interesting step because I could see how a simple HTML file stored in cloud storage could be served as an actual website.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔐 5. Configuring the S3 Bucket Policy
&lt;/h2&gt;

&lt;p&gt;The next step was configuring &lt;strong&gt;permissions&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Simply uploading &lt;code&gt;index.html&lt;/code&gt; to S3 doesn't automatically make it publicly accessible.&lt;/p&gt;

&lt;p&gt;To allow users to retrieve the website objects, I configured an &lt;strong&gt;S3 bucket policy&lt;/strong&gt; using JSON.&lt;/p&gt;

&lt;p&gt;The policy I worked with followed this structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Version"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2012-10-17"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"Statement"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Effect"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Allow"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Principal"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"*"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"Resource"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"arn:aws:s3:::ananthika-05-15092026/*"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the important part is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"Action"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"s3:GetObject"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This specifies that the objects in the bucket can be retrieved.&lt;/p&gt;

&lt;p&gt;The resource:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="s2"&gt;"arn:aws:s3:::ananthika-05-15092026/*"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;refers to the objects inside my S3 bucket.&lt;/p&gt;

&lt;p&gt;After configuring the required permissions, my S3-hosted website became accessible through the website endpoint.&lt;/p&gt;




&lt;h2&gt;
  
  
  🖥️ 6. Viewing My Portfolio Website
&lt;/h2&gt;

&lt;p&gt;The next exciting part was actually seeing my portfolio website running.&lt;/p&gt;

&lt;p&gt;My &lt;code&gt;index.html&lt;/code&gt;, which was initially just a file sitting inside an S3 bucket, was now being served as a website.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fognex3wuj1kwr1bxu3nz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fognex3wuj1kwr1bxu3nz.png" alt=" " width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Figure 6: My portfolio website hosted using Amazon S3.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This helped me understand how static websites can be deployed without setting up a traditional web server.&lt;/p&gt;

&lt;p&gt;The basic flow 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
     ↓
Amazon S3
     ↓
Static Website Hosting
     ↓
Website Endpoint
     ↓
My Portfolio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  ⚡ 7. Creating an Amazon CloudFront Distribution
&lt;/h2&gt;

&lt;p&gt;After successfully hosting my portfolio using S3, I explored &lt;strong&gt;Amazon CloudFront&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;CloudFront is AWS's &lt;strong&gt;Content Delivery Network (CDN)&lt;/strong&gt;. It is designed to deliver content to users through a globally distributed network of edge locations, helping reduce latency.&lt;/p&gt;

&lt;p&gt;I created a &lt;strong&gt;CloudFront distribution&lt;/strong&gt; and configured my S3 bucket as the origin.&lt;/p&gt;

&lt;p&gt;The architecture now 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       │
                    └────────┬────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │  Amazon         │
                    │  CloudFront     │
                    │      CDN        │
                    └────────┬────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │    Amazon S3    │
                    │                 │
                    │   index.html    │
                    │     image       │
                    └─────────────────┘
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once the distribution was created, CloudFront provided a distribution domain that could be used to access the content.&lt;/p&gt;

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