<?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: Nivetha Gopalakrishnan</title>
    <description>The latest articles on DEV Community by Nivetha Gopalakrishnan (@nivetha_gopalakrishnan_d2).</description>
    <link>https://dev.to/nivetha_gopalakrishnan_d2</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%2F4125487%2F3bb91e3f-a0ee-4e54-a051-aafe9bdfe021.png</url>
      <title>DEV Community: Nivetha Gopalakrishnan</title>
      <link>https://dev.to/nivetha_gopalakrishnan_d2</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nivetha_gopalakrishnan_d2"/>
    <language>en</language>
    <item>
      <title>Nivi Meets Neptune: Exploring Amazon Neptune☁️</title>
      <dc:creator>Nivetha Gopalakrishnan</dc:creator>
      <pubDate>Tue, 15 Sep 2026 16:50:40 +0000</pubDate>
      <link>https://dev.to/nivetha_gopalakrishnan_d2/nivi-meets-neptune-exploring-amazon-neptune-1060</link>
      <guid>https://dev.to/nivetha_gopalakrishnan_d2/nivi-meets-neptune-exploring-amazon-neptune-1060</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;When I started exploring AWS database services, I learned that not every application stores data in simple tables and rows. Some applications need to understand the &lt;strong&gt;relationships between data&lt;/strong&gt;. This is where graph databases become useful.&lt;/p&gt;

&lt;p&gt;For my AWS learning journey, I explored &lt;strong&gt;Amazon Neptune&lt;/strong&gt;, a fully managed graph database service provided by AWS.&lt;/p&gt;

&lt;p&gt;In this blog, I will explain what Amazon Neptune is, why it was created, how it works, its important features, and how it can be used in a college or student project.&lt;/p&gt;




&lt;h2&gt;
  
  
  What Is Amazon Neptune?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Amazon Neptune&lt;/strong&gt; is a fully managed graph database service from Amazon Web Services (AWS).&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%2F1k60jmyw2fsjkczoozcf.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%2F1k60jmyw2fsjkczoozcf.png" alt=" " width="800" height="414"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike traditional relational databases that organize information mainly into tables, Neptune is designed to store and analyze &lt;strong&gt;relationships between data&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A graph database represents information using concepts such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Nodes&lt;/strong&gt; – represent entities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Edges&lt;/strong&gt; – represent relationships between entities&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Properties&lt;/strong&gt; – describe nodes and relationships&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, in a college application:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student ──ENROLLED_IN──&amp;gt; Course
Student ──FRIENDS_WITH──&amp;gt; Student
Course ──TAUGHT_BY──&amp;gt; Professor
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This type of relationship-based data can become complicated in traditional databases. A graph database makes these connections easier to represent and query.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why Was Amazon Neptune Created?
&lt;/h2&gt;

&lt;p&gt;Many modern applications depend heavily on relationships.&lt;/p&gt;

&lt;p&gt;Examples include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Social networking applications&lt;/li&gt;
&lt;li&gt;Recommendation systems&lt;/li&gt;
&lt;li&gt;Knowledge graphs&lt;/li&gt;
&lt;li&gt;Fraud detection&lt;/li&gt;
&lt;li&gt;Identity and access management&lt;/li&gt;
&lt;li&gt;Network and IT operations&lt;/li&gt;
&lt;li&gt;Recommendation engines&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In a relational database, finding connections across many tables may require multiple joins. Graph databases are designed specifically for these connected-data scenarios.&lt;/p&gt;

&lt;p&gt;Amazon Neptune was created to provide a &lt;strong&gt;managed AWS service for graph workloads&lt;/strong&gt;, so developers can focus on building applications instead of managing database infrastructure.&lt;/p&gt;




&lt;h2&gt;
  
  
  How Does Amazon Neptune Work?
&lt;/h2&gt;

&lt;p&gt;The basic idea of Neptune is simple.&lt;/p&gt;

&lt;p&gt;Instead of thinking only in terms of tables and rows, we think in terms of &lt;strong&gt;entities and relationships&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        ENROLLED_IN
Student ─────────────&amp;gt; Course
   |
   |
FRIENDS_WITH
   |
   v
Student
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A simple Neptune architecture can be represented as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                 User / Application
                         |
                         v
                  Application Layer
                         |
                         v
                  Amazon Neptune
                         |
              +----------+----------+
              |                     |
              v                     v
           Nodes                 Relationships
        Student, Course       ENROLLED_IN, FRIENDS_WITH
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An application sends graph queries to Neptune. Neptune processes the query and returns the related information.&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%2Fpg4zn6io0z5gpdeo93fg.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%2Fpg4zn6io0z5gpdeo93fg.png" alt=" " width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Key Features of Amazon Neptune
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Graph Database
&lt;/h3&gt;

&lt;p&gt;The primary feature of Neptune is its ability to work with graph data.&lt;/p&gt;

&lt;p&gt;It is useful when relationships are as important as the data itself.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student → Enrolled In → Course
Course → Taught By → Professor
Student → Member Of → Club
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This makes Neptune suitable for applications where connected information needs to be queried efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Support for Graph Models
&lt;/h3&gt;

&lt;p&gt;Neptune supports popular graph models and query approaches, including &lt;strong&gt;property graphs&lt;/strong&gt; and &lt;strong&gt;RDF graphs&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Applications can use technologies such as &lt;strong&gt;openCypher&lt;/strong&gt; and &lt;strong&gt;SPARQL&lt;/strong&gt;, depending on the graph model and workload.&lt;/p&gt;

&lt;p&gt;This gives developers flexibility when designing graph-based applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Fully Managed AWS Service
&lt;/h3&gt;

&lt;p&gt;Neptune is a managed AWS database service.&lt;/p&gt;

&lt;p&gt;AWS handles many infrastructure responsibilities such as database infrastructure management, maintenance, backups, and availability-related capabilities.&lt;/p&gt;

&lt;p&gt;This allows developers to spend more time working on the application rather than managing database servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. High Availability and Scalability
&lt;/h3&gt;

&lt;p&gt;Neptune is designed for applications that require reliable database infrastructure.&lt;/p&gt;

&lt;p&gt;It provides capabilities for high availability and supports scaling approaches appropriate for graph workloads.&lt;/p&gt;

&lt;p&gt;This can be useful when a student project grows from a small prototype into a larger application.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. AWS Integration
&lt;/h3&gt;

&lt;p&gt;Because Neptune is an AWS service, it can work with other AWS services and applications.&lt;/p&gt;

&lt;p&gt;For example, a project could combine:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Amazon EC2
    |
    v
Application
    |
    v
Amazon Neptune
    |
    v
Graph Data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Other AWS services can also be used alongside Neptune depending on the application's requirements.&lt;/p&gt;




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

&lt;p&gt;One interesting college use case is a &lt;strong&gt;Student Course Recommendation System&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Imagine a system that stores information about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students&lt;/li&gt;
&lt;li&gt;Courses&lt;/li&gt;
&lt;li&gt;Professors&lt;/li&gt;
&lt;li&gt;Departments&lt;/li&gt;
&lt;li&gt;Skills&lt;/li&gt;
&lt;li&gt;Projects&lt;/li&gt;
&lt;li&gt;Clubs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The relationships could look 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;Student
   |
   | ENROLLED_IN
   v
Course
   |
   | RELATED_TO
   v
Skill
   |
   | USED_IN
   v
Project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Suppose a student has completed Python and Machine Learning courses.&lt;/p&gt;

&lt;p&gt;The system could analyze the student's existing course and skill relationships and recommend related courses or projects.&lt;/p&gt;

&lt;p&gt;A graph database is useful here because the recommendation depends on the &lt;strong&gt;connections between different entities&lt;/strong&gt;.&lt;/p&gt;




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

&lt;p&gt;Let's consider a basic graph containing a student and a course.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(Nivi) ──[:ENROLLED_IN]──&amp;gt; (AWS Cloud Computing)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In a property graph, we could represent:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Student:
Name = Nivi

Course:
Name = AWS Cloud Computing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The relationship is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Nivi - ENROLLED_IN -&amp;gt; AWS Cloud Computing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A conceptual openCypher query could look like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cypher"&gt;&lt;code&gt;&lt;span class="k"&gt;MATCH&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;s:&lt;/span&gt;&lt;span class="n"&gt;Student&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="ss"&gt;[&lt;/span&gt;&lt;span class="nc"&gt;:ENROLLED_IN&lt;/span&gt;&lt;span class="ss"&gt;]&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="ss"&gt;(&lt;/span&gt;&lt;span class="py"&gt;c:&lt;/span&gt;&lt;span class="n"&gt;Course&lt;/span&gt;&lt;span class="ss"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="n"&gt;s.name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s1"&gt;'Nivi'&lt;/span&gt;
&lt;span class="k"&gt;RETURN&lt;/span&gt; &lt;span class="n"&gt;c.name&lt;/span&gt;&lt;span class="ss"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The query searches for courses connected to the student through the &lt;code&gt;ENROLLED_IN&lt;/code&gt; relationship.&lt;/p&gt;

&lt;p&gt;The result could be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AWS Cloud Computing
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This simple example demonstrates why graph databases are useful: the query focuses on the &lt;strong&gt;relationship between entities&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Advantages of Amazon Neptune
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Relationship-Based Data
&lt;/h3&gt;

&lt;p&gt;Neptune is designed specifically for highly connected data, making it useful for graph-oriented applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  Managed Infrastructure
&lt;/h3&gt;

&lt;p&gt;AWS manages much of the underlying database infrastructure, reducing administrative work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flexible Graph Queries
&lt;/h3&gt;

&lt;p&gt;Support for graph query technologies allows developers to work with different graph data models.&lt;/p&gt;

&lt;h3&gt;
  
  
  AWS Ecosystem
&lt;/h3&gt;

&lt;p&gt;Neptune can be incorporated into larger AWS-based applications and architectures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Suitable for Complex Relationships
&lt;/h3&gt;

&lt;p&gt;Applications involving recommendations, networks, fraud analysis, and knowledge graphs can benefit from graph database technology.&lt;/p&gt;




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

&lt;h3&gt;
  
  
  Cost
&lt;/h3&gt;

&lt;p&gt;Amazon Neptune is a managed cloud database service, so it can cost more than simply running a small local database.&lt;/p&gt;

&lt;p&gt;Before using Neptune in a real project, it is important to understand the current AWS pricing model and estimate the expected usage.&lt;/p&gt;

&lt;p&gt;For student experiments, always check the AWS pricing information and monitor resources to avoid unexpected charges.&lt;/p&gt;

&lt;h3&gt;
  
  
  Complexity
&lt;/h3&gt;

&lt;p&gt;Graph databases use concepts that are different from traditional relational databases.&lt;/p&gt;

&lt;p&gt;Students familiar only with SQL databases may need some time to understand nodes, edges, graph models, and graph query languages.&lt;/p&gt;

&lt;h3&gt;
  
  
  Scalability Planning
&lt;/h3&gt;

&lt;p&gt;Neptune provides scalability capabilities, but applications still need appropriate architecture and capacity planning.&lt;/p&gt;

&lt;p&gt;A production system should be designed based on expected traffic, query patterns, and data size.&lt;/p&gt;

&lt;h3&gt;
  
  
  Security
&lt;/h3&gt;

&lt;p&gt;Security should always be considered when working with cloud databases.&lt;/p&gt;

&lt;p&gt;Applications should use appropriate AWS identity and access controls, network security, encryption, and database security practices.&lt;/p&gt;

&lt;p&gt;Sensitive student information should never be exposed publicly.&lt;/p&gt;




&lt;h2&gt;
  
  
  When Would I Choose Amazon Neptune?
&lt;/h2&gt;

&lt;p&gt;I would consider Amazon Neptune when the main requirement of an application is understanding &lt;strong&gt;relationships between data&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Social Network
       |
Recommendation System
       |
Fraud Detection
       |
Knowledge Graph
       |
Network Management
       |
       v
 Amazon Neptune
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If an application mainly requires simple tabular data and traditional SQL queries, another AWS database service may be more appropriate.&lt;/p&gt;

&lt;p&gt;The important lesson is to select a database based on the application's data model and requirements.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Learned
&lt;/h2&gt;

&lt;p&gt;While learning about Amazon Neptune, I understood that databases are not limited to tables and rows.&lt;/p&gt;

&lt;p&gt;Some applications are built around relationships.&lt;/p&gt;

&lt;p&gt;Amazon Neptune provides a way to represent these relationships as a graph and query them using graph technologies.&lt;/p&gt;

&lt;p&gt;The student course recommendation example helped me understand how graph databases can be applied to a real-world college scenario.&lt;/p&gt;




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

&lt;p&gt;Amazon Neptune is an AWS managed graph database service designed for applications that work with highly connected data.&lt;/p&gt;

&lt;p&gt;Its graph-based approach makes it useful for use cases such as recommendation systems, social networks, fraud detection, knowledge graphs, and network analysis.&lt;/p&gt;

&lt;p&gt;For a college project, Neptune could be used to connect students, courses, skills, professors, departments, and projects and then discover useful relationships between them.&lt;/p&gt;

&lt;p&gt;My main takeaway is simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;When relationships between data are important, a graph database can provide a powerful way to model and explore those connections.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Amazon Neptune is therefore an interesting AWS service to explore for modern applications where &lt;strong&gt;connections matter as much as the data itself&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  AWS Documentation References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Amazon Neptune Documentation:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/neptune/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/neptune/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amazon Neptune User Guide:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/neptune/latest/userguide/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/neptune/latest/userguide/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amazon Neptune Features:&lt;br&gt;
&lt;a href="https://aws.amazon.com/neptune/features/" rel="noopener noreferrer"&gt;https://aws.amazon.com/neptune/features/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Amazon Neptune Pricing:&lt;br&gt;
&lt;a href="https://aws.amazon.com/neptune/pricing/" rel="noopener noreferrer"&gt;https://aws.amazon.com/neptune/pricing/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;AWS Documentation:&lt;br&gt;
&lt;a href="https://docs.aws.amazon.com/" rel="noopener noreferrer"&gt;https://docs.aws.amazon.com/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Tags
&lt;/h2&gt;

&lt;h1&gt;
  
  
  AWS #AmazonNeptune #GraphDatabase #CloudComputing #AWSCloud #Database #StudentProject #AWSLearning
&lt;/h1&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>cloud</category>
      <category>database</category>
    </item>
    <item>
      <title># Day 1 – Session 2: EC2, Nginx, S3 CLI and Lambda Event Trigger</title>
      <dc:creator>Nivetha Gopalakrishnan</dc:creator>
      <pubDate>Tue, 15 Sep 2026 16:34:54 +0000</pubDate>
      <link>https://dev.to/nivetha_gopalakrishnan_d2/-day-1-session-2-ec2-nginx-s3-cli-and-lambda-event-trigger-5cop</link>
      <guid>https://dev.to/nivetha_gopalakrishnan_d2/-day-1-session-2-ec2-nginx-s3-cli-and-lambda-event-trigger-5cop</guid>
      <description>&lt;p&gt;In Day 1 – Session 2, I continued my AWS learning by working with Amazon EC2, Nginx, Amazon S3, AWS CLI, and AWS Lambda.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create an EC2 Instance
&lt;/h2&gt;

&lt;p&gt;The first task was to create an Amazon EC2 instance.&lt;/p&gt;

&lt;p&gt;EC2 (Elastic Compute Cloud) provides virtual servers that can be used to run applications and services in AWS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Log in to the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;EC2&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Launch instance&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a name for the instance.&lt;/li&gt;
&lt;li&gt;Select the required AMI.&lt;/li&gt;
&lt;li&gt;Select the required instance type.&lt;/li&gt;
&lt;li&gt;Create or select a key pair.&lt;/li&gt;
&lt;li&gt;Configure the network and security group settings.&lt;/li&gt;
&lt;li&gt;Launch the instance.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After completing these steps, the EC2 instance was successfully created and started.&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%2Fwd0puy6o2kp7o2itao00.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%2Fwd0puy6o2kp7o2itao00.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Connect to the EC2 Instance
&lt;/h2&gt;

&lt;p&gt;After launching the instance, I connected to it using SSH.&lt;/p&gt;

&lt;p&gt;For an Ubuntu-based EC2 instance, the command is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"your-key.pem"&lt;/span&gt; ubuntu@&amp;lt;EC2-PUBLIC-IP&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After successfully connecting, I was able to access the EC2 server through the terminal.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Install Nginx
&lt;/h2&gt;

&lt;p&gt;Next, I installed Nginx on the EC2 instance.&lt;/p&gt;

&lt;p&gt;Nginx is a web server that can be used to serve websites and web applications.&lt;/p&gt;

&lt;p&gt;For an Ubuntu-based instance, I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I installed Nginx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;nginx &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation, I started the Nginx service:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl start nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I also enabled Nginx to start automatically when the server starts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl &lt;span class="nb"&gt;enable &lt;/span&gt;nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To check the status of Nginx:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status nginx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Nginx was successfully installed and running on the EC2 instance.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Test Nginx
&lt;/h2&gt;

&lt;p&gt;After installing Nginx, I opened the public IP address of the EC2 instance in a browser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://&amp;lt;13-233-163-95&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The default Nginx welcome page was displayed successfully.&lt;/p&gt;

&lt;p&gt;This confirmed that the EC2 instance was working as a web server.&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%2Fui0ok6agcaq3v57qc7le.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%2Fui0ok6agcaq3v57qc7le.png" alt=" " width="800" height="729"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  5. EC2 and S3 Using AWS CLI
&lt;/h2&gt;

&lt;p&gt;Next, I worked on transferring files between EC2 and S3 using the AWS CLI.&lt;/p&gt;

&lt;p&gt;I practiced both directions:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EC2 → S3
S3 → EC2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helped me understand how EC2 can interact with S3 through command-line commands.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Transfer a File from EC2 to S3
&lt;/h2&gt;

&lt;p&gt;First, I created a test file on the EC2 instance.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;strangerthings.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then I uploaded the file to the S3 bucket using the AWS CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;cp &lt;/span&gt;strangerthings.csv s3://nivi-22034-15/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file was successfully transferred from EC2 to S3.&lt;/p&gt;

&lt;p&gt;To verify the file in the S3 bucket:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;ls &lt;/span&gt;s3://nivi-22034-15/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file was listed successfully.&lt;/p&gt;

&lt;p&gt;The 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;EC2
 |
 | AWS CLI
 v
S3 Bucket
 |
 └── strangerthings.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  7. Transfer a File from S3 to EC2
&lt;/h2&gt;

&lt;p&gt;Next, I tested the reverse process by downloading a file from S3 to EC2.&lt;/p&gt;

&lt;p&gt;I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;cp &lt;/span&gt;s3://nivi-22034-15/strangerthings.csv &lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file was downloaded to the current directory of the EC2 instance.&lt;/p&gt;

&lt;p&gt;To verify the file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;ls&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To view the contents:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cat &lt;/span&gt;strangerthings.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file was successfully transferred from S3 to EC2.&lt;/p&gt;

&lt;p&gt;The 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;S3 Bucket
 |
 | AWS CLI
 v
EC2
 |
 └── strangerthings.csv
&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%2F7yhaicxhvmi824ff4m3d.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%2F7yhaicxhvmi824ff4m3d.png" alt=" " width="800" height="131"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Create an AWS Lambda Function
&lt;/h2&gt;

&lt;p&gt;After working with EC2 and S3, I moved on to AWS Lambda.&lt;/p&gt;

&lt;p&gt;AWS Lambda allows us to run code without directly managing servers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the AWS Management Console.&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;Lambda&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create function&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Author from scratch&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the function name.&lt;/li&gt;
&lt;li&gt;Select the required runtime.&lt;/li&gt;
&lt;li&gt;Create the Lambda function.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Lambda function was successfully created.&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%2Frokyvz7g6d9jrejgwhzt.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%2Frokyvz7g6d9jrejgwhzt.png" alt=" " width="799" height="389"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Configure an S3 Event Trigger
&lt;/h2&gt;

&lt;p&gt;Next, I configured an S3 event trigger for the Lambda function.&lt;/p&gt;

&lt;p&gt;The objective was to trigger the Lambda function whenever an object was deleted from the S3 bucket.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the Lambda function.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Function overview&lt;/strong&gt; section.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add trigger&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;S3&lt;/strong&gt; as the trigger source.&lt;/li&gt;
&lt;li&gt;Select the required S3 bucket.&lt;/li&gt;
&lt;li&gt;Configure the event type.&lt;/li&gt;
&lt;li&gt;Select the &lt;strong&gt;Object Deleted&lt;/strong&gt; event.&lt;/li&gt;
&lt;li&gt;Confirm the configuration.&lt;/li&gt;
&lt;li&gt;Add the trigger.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The event 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;S3 Bucket
    |
    | Object Deleted
    v
AWS Lambda
    |
    v
Lambda Function Executes
&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%2Fkm06h1tvd5ioez9h0tea.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%2Fkm06h1tvd5ioez9h0tea.png" alt=" " width="800" height="228"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  10. Test the S3 Delete Trigger
&lt;/h2&gt;

&lt;p&gt;After configuring the trigger, I tested it by deleting an object from the S3 bucket.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;aws s3 &lt;span class="nb"&gt;rm &lt;/span&gt;s3://nivi-22034-15/test.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When the object was deleted, the S3 event triggered the Lambda function.&lt;/p&gt;

&lt;p&gt;I then checked the Lambda logs to verify that the function was executed successfully.&lt;/p&gt;

&lt;p&gt;This confirmed that the S3 Object Deleted event was successfully connected to the Lambda function.&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%2F1a4fbeuchvvv4mlzixyy.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%2F1a4fbeuchvvv4mlzixyy.png" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  11. Overall Workflow
&lt;/h2&gt;

&lt;p&gt;The main workflow I implemented during this session was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;                    AWS
                     |
          +----------+----------+
          |                     |
         EC2                   S3
          |                     |
          | AWS CLI             |
          +--------------------&amp;gt;|
          |                     |
          |&amp;lt;--------------------+
          |                     |
          |              Object Deleted
          |                     |
          |                     v
          |                  Lambda
          |                     |
          |                     v
          |              Function Executes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  12. What I Learned
&lt;/h2&gt;

&lt;p&gt;In Day 1 – Session 2, I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to create an EC2 instance&lt;/li&gt;
&lt;li&gt;How to connect to an EC2 instance using SSH&lt;/li&gt;
&lt;li&gt;How to install Nginx&lt;/li&gt;
&lt;li&gt;How to start and enable the Nginx service&lt;/li&gt;
&lt;li&gt;How to access the Nginx server using the EC2 public IP&lt;/li&gt;
&lt;li&gt;How to use AWS CLI from EC2&lt;/li&gt;
&lt;li&gt;How to transfer files from EC2 to S3&lt;/li&gt;
&lt;li&gt;How to transfer files from S3 to EC2&lt;/li&gt;
&lt;li&gt;How to create an AWS Lambda function&lt;/li&gt;
&lt;li&gt;How to configure an S3 event trigger&lt;/li&gt;
&lt;li&gt;How to trigger Lambda when an S3 object is deleted&lt;/li&gt;
&lt;li&gt;How to verify Lambda execution using logs&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Day 1 – Session 2 gave me hands-on experience with EC2, Nginx, S3, AWS CLI, and Lambda.&lt;/p&gt;

&lt;p&gt;I started by creating an EC2 instance and installing Nginx. I then used AWS CLI to transfer files between EC2 and S3.&lt;/p&gt;

&lt;p&gt;Finally, I created a Lambda function and configured an S3 Object Deleted event trigger. After deleting an object from S3, I verified that the Lambda function was triggered successfully.&lt;/p&gt;

&lt;p&gt;This session helped me understand how different AWS services can work together to build cloud-based applications.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #EC2 #S3 #Lambda #Nginx #AWSCLI #CloudComputing #DevOps
&lt;/h1&gt;

</description>
      <category>aws</category>
      <category>cloud</category>
      <category>tools</category>
    </item>
    <item>
      <title>Day 1 – Session 1: S3 Setup, Portfolio Hosting and CloudFront</title>
      <dc:creator>Nivetha Gopalakrishnan</dc:creator>
      <pubDate>Tue, 15 Sep 2026 16:20:34 +0000</pubDate>
      <link>https://dev.to/nivetha_gopalakrishnan_d2/day-1-session-1-s3-setup-portfolio-hosting-and-cloudfront-1mo2</link>
      <guid>https://dev.to/nivetha_gopalakrishnan_d2/day-1-session-1-s3-setup-portfolio-hosting-and-cloudfront-1mo2</guid>
      <description>&lt;p&gt;Today I learned how to create an &lt;strong&gt;Amazon S3 bucket&lt;/strong&gt;, upload files, host a portfolio website, and configure &lt;strong&gt;Amazon CloudFront&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Create an S3 Bucket
&lt;/h2&gt;

&lt;p&gt;First, I logged in to the &lt;strong&gt;AWS Management Console&lt;/strong&gt; and opened the &lt;strong&gt;Amazon S3&lt;/strong&gt; service.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Go to the AWS Console.&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;S3&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter a unique bucket name.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nivi-22034-15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Select the required AWS Region.&lt;/li&gt;
&lt;li&gt;Keep the remaining settings as required.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create bucket&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The S3 bucket was created successfully.&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%2Fxnamdlk626u3uku2i3ww.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%2Fxnamdlk626u3uku2i3ww.png" alt="S3 Bucket Creation" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  2. Upload the First Image
&lt;/h2&gt;

&lt;p&gt;After creating the bucket, I uploaded an image to test S3 storage.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the S3 bucket.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Add files&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select an image from the local computer.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Upload&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Verify that the image is available inside the bucket.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nivi-22034-15/
└── image.jpg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This helped me understand how files are stored as objects inside an S3 bucket.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Create and Upload the Portfolio &lt;code&gt;index.html&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;After successfully uploading the image, I created a basic portfolio website using &lt;code&gt;index.html&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The portfolio contains basic 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;Contact&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I then uploaded the &lt;code&gt;index.html&lt;/code&gt; file to the S3 bucket.&lt;/p&gt;

&lt;p&gt;The bucket structure became:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nivi-22034-15/
├── index.html
└── profile.jpg
&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%2F90rhcn3jt9bwafbf6vuo.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%2F90rhcn3jt9bwafbf6vuo.png" alt="Portfolio uploaded to S3" width="800" height="360"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Configure S3 for Static Website Hosting
&lt;/h2&gt;

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

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the S3 bucket.&lt;/li&gt;
&lt;li&gt;Go to the &lt;strong&gt;Properties&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Find &lt;strong&gt;Static website hosting&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Edit&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Enable&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select &lt;strong&gt;Host a static website&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Enter the following:
&lt;/li&gt;
&lt;/ol&gt;

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Save changes&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;After saving the configuration, AWS provided an &lt;strong&gt;S3 website endpoint&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I opened the endpoint in the browser and verified that my portfolio was loading correctly.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Configure S3 Bucket Permissions
&lt;/h2&gt;

&lt;p&gt;To access the website files, I configured the required S3 permissions.&lt;/p&gt;

&lt;p&gt;I went to:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;S3 → Bucket → Permissions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For the static website, I configured the bucket according to the required public-access settings.&lt;/p&gt;

&lt;p&gt;I added the following bucket policy:&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;"Sid"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"PublicReadGetObject"&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:::nivi-22034-15/*"&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;This policy allows users to read the objects stored inside the S3 bucket.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Test the Portfolio Website
&lt;/h2&gt;

&lt;p&gt;After configuring S3, I opened the S3 website endpoint in a browser.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;index.html&lt;/code&gt; page loaded successfully, and I verified that the uploaded image was also displayed correctly.&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%2F7t4r3imsdihnmo6pje1x.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%2F7t4r3imsdihnmo6pje1x.png" alt="Portfolio hosted on S3" width="800" height="454"&gt;&lt;/a&gt;&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;Browser
   ↓
S3 Website Endpoint
   ↓
index.html
   ↓
Portfolio
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  7. Amazon CloudFront Configuration
&lt;/h1&gt;

&lt;p&gt;After successfully hosting the portfolio on S3, I configured &lt;strong&gt;Amazon CloudFront&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;CloudFront is a &lt;strong&gt;Content Delivery Network (CDN)&lt;/strong&gt; provided by AWS. It helps deliver website content to users with lower latency and also supports HTTPS.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps:
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;strong&gt;AWS Management Console&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;CloudFront&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Open the CloudFront service.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create distribution&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Select the S3 bucket as the origin.&lt;/li&gt;
&lt;li&gt;Select my S3 bucket:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nivi-22034-15
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Configure the required origin settings.&lt;/li&gt;
&lt;li&gt;Set the &lt;strong&gt;Default root object&lt;/strong&gt; as:
&lt;/li&gt;
&lt;/ol&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;ol&gt;
&lt;li&gt;Configure the required CloudFront settings.&lt;/li&gt;
&lt;li&gt;Create the distribution.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;CloudFront then generated a distribution domain name 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;https://xxxxxxxxxxxx.cloudfront.net
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I opened the CloudFront URL in the browser and verified that my portfolio was loading successfully.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Final Setup
&lt;/h2&gt;

&lt;p&gt;After completing the configuration, my portfolio was hosted using &lt;strong&gt;Amazon S3&lt;/strong&gt; and delivered through &lt;strong&gt;Amazon CloudFront&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The 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;User
 ↓
CloudFront
 ↓
S3 Bucket
 ↓
index.html
 ↓
Portfolio Website
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  9. What I Learned
&lt;/h2&gt;

&lt;p&gt;In &lt;strong&gt;Day 1 – Session 1&lt;/strong&gt;, I learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;How to create an S3 bucket.&lt;/li&gt;
&lt;li&gt;How to upload an image to S3.&lt;/li&gt;
&lt;li&gt;How to upload &lt;code&gt;index.html&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;How to configure static website hosting.&lt;/li&gt;
&lt;li&gt;How to configure an S3 bucket policy.&lt;/li&gt;
&lt;li&gt;How to test a website using the S3 website endpoint.&lt;/li&gt;
&lt;li&gt;What Amazon CloudFront is.&lt;/li&gt;
&lt;li&gt;How to create a CloudFront distribution.&lt;/li&gt;
&lt;li&gt;How to connect an S3 bucket with CloudFront.&lt;/li&gt;
&lt;li&gt;How to set &lt;code&gt;index.html&lt;/code&gt; as the default root object.&lt;/li&gt;
&lt;li&gt;How to access the portfolio through the CloudFront URL.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Overall, this session gave me hands-on experience with &lt;strong&gt;Amazon S3 and CloudFront&lt;/strong&gt; for hosting and delivering a static portfolio website.&lt;/p&gt;

&lt;h1&gt;
  
  
  AWS #S3 #CloudFront #AWSCloud #CloudComputing #DevOps #WebDevelopment #Portfolio
&lt;/h1&gt;

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