<?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: Onakoya Temitayo</title>
    <description>The latest articles on DEV Community by Onakoya Temitayo (@supremeoverlord).</description>
    <link>https://dev.to/supremeoverlord</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%2F4063199%2Fe82b3405-d464-48a4-aeaf-e61bdae11073.png</url>
      <title>DEV Community: Onakoya Temitayo</title>
      <link>https://dev.to/supremeoverlord</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/supremeoverlord"/>
    <language>en</language>
    <item>
      <title>Build a Virtual PrivateCloud (VPC)</title>
      <dc:creator>Onakoya Temitayo</dc:creator>
      <pubDate>Mon, 10 Aug 2026 17:04:31 +0000</pubDate>
      <link>https://dev.to/supremeoverlord/build-a-virtual-privatecloud-vpc-2n2h</link>
      <guid>https://dev.to/supremeoverlord/build-a-virtual-privatecloud-vpc-2n2h</guid>
      <description>&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%2Fr4yqi72ffysxs6yrc0k9.jpg" 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%2Fr4yqi72ffysxs6yrc0k9.jpg" alt="AWS VPC" width="584" height="345"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introducing Today's Project!&lt;/strong&gt;&lt;br&gt;
Today, we are going to build an AWS VPC from scratch and understand how the different components work together. We will create a VPC, configure public and private subnets, set up routing and an Internet Gateway,get practical knowledge of cloudshell, and launch resources to test connectivity. The goal is to gain practical experience designing and managing a basic cloud network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Virtual Private Clouds (VPCs)&lt;br&gt;
What I did in this step&lt;/strong&gt;&lt;br&gt;
In this step, we are creating the VPC, which will serve as our private network inAWS. We will define its IP address range and establish the foundation for theother resources we will add later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How VPCs work&lt;/strong&gt;&lt;br&gt;
A VPC (Virtual Private Cloud) is a private, isolated network within AWS where we can create and manage cloud resources such as EC2 instances, databases, andother services. It is a private network inside AWS, where you control the IP addresses, subnets, routing, and security.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why there is a default VPC in AWS accounts&lt;/strong&gt;&lt;br&gt;
The default VPC is automatically created by AWS so we can start launching resources immediately without having to build a network from scratch. It provides basic networking components like subnets, route tables, and an internet gateway.&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%2Fodb2v76neygdwhbzwc6d.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%2Fodb2v76neygdwhbzwc6d.png" alt="VPC setup page" width="800" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Defining IPv4 CIDR blocks&lt;/strong&gt;&lt;br&gt;
To set up my VPC, I had to define an IPv4 CIDR block. An IPv4 CIDR block is away of defining a range of IPv4 addresses that can be used within a network. For example, 10.0.0.0/24 defines a network containing a range of IP addresses. In AWS, CIDR blocks are used to determine the IP address range for a VPC or subnet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Subnets&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What I did in this step&lt;/strong&gt;&lt;br&gt;
In this step, I am creating a subnet inside the VPC and assigning it a specific IP address range. This gives us a smaller network where we can place and manage resources such as EC2 instances.&lt;br&gt;
&lt;strong&gt;Creating and configuring subnets&lt;/strong&gt;&lt;br&gt;
Subnets are smaller networks created inside a VPC. They divide the VPC's IP address range into separate sections, allowing you to organize resources andcontrol how they communicate. For example, a VPC could have a public subnet for web servers and a private subnet for databases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public vs private subnets&lt;/strong&gt;&lt;br&gt;
For a subnet to be considered public, it has to have an internet gateway attached to it. Until we attach an internet gateway to the public subnet, it is only public by name but does not yet perform the public 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%2Fpon6q1guzequfiffondh.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%2Fpon6q1guzequfiffondh.png" alt="Subnet page" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Auto-assigning public IPv4 addresses&lt;br&gt;
You enable auto-assign public IPv4 addresses so resources launched in thatsubnet can automatically receive a public IP address and communicate with theinternet. This is commonly used for public subnets where resources like webservers need to be accessible from the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Internet gateways&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;What I did in this step&lt;/strong&gt;&lt;br&gt;
In this step, we shall attach an internet gateway to our VPC&lt;br&gt;
An Internet Gateway (IGW) is a component that connects your VPC to the public internet. It allows resources in a public subnet, such as an EC2 instance with a public IP, to send and receive internet traffic.&lt;br&gt;
Attaching an Internet Gateway (IGW) to the VPC creates a path between the VPC and the public internet. However, resources still need a public IP address and a route through the Internet Gateway to actually access the internet.&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%2Fgceal4mcn9fjjkbt0b36.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%2Fgceal4mcn9fjjkbt0b36.png" alt="Internet Gateway Success" width="800" height="363"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Using the AWS CLI&lt;/strong&gt;&lt;br&gt;
What I'm doing in this extension&lt;br&gt;
In this mission, I am using AWS CloudShell and the AWS CLI to build the network infrastructure without relying entirely on the AWS Console. I will create a VPC,subnet, and Internet Gateway using commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploring CloudShell and CLI&lt;/strong&gt;&lt;br&gt;
AWS CloudShell is a browser-based terminal provided by AWS where you can run commands directly within your AWS environment without installing anything on your computer. CLI (Command Line Interface) is a way of interacting with AWSservices by typing commands instead of clicking through the AWS Console.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging my setup&lt;/strong&gt;&lt;br&gt;
I ran into the error because my VPC was 10.0.0.0/24, but tried to create a subnetusing 10.0.1.0/24. 10.0.1.0/24 is outside the VPC's IP range, so AWS rejected it.The subnet's CIDR block must always fall within the VPC's CIDR range.&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%2Ftxx4wziw3w8frc6bwn28.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%2Ftxx4wziw3w8frc6bwn28.png" alt="Command used to create and attach IGW" width="797" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Comparing CloudShell vs AWS Console&lt;/strong&gt;&lt;br&gt;
Setting up VPC resources in CloudShell using the AWS CLI is faster and more efficient for repetitive tasks because you can create resources with commands and easily automate the process. The AWS Console is more visual and beginner-friendly, making it easier to understand the relationships between VPC components. For learning, the Console helps with visualization, while CloudShell is better for practicing real-world automation and command-line skills.&lt;/p&gt;

</description>
      <category>aws</category>
      <category>vpc</category>
      <category>portfolio</category>
    </item>
    <item>
      <title>Hosting a Static Website on AWS S3: A Step-by-Step Walkthrough</title>
      <dc:creator>Onakoya Temitayo</dc:creator>
      <pubDate>Thu, 06 Aug 2026 07:26:14 +0000</pubDate>
      <link>https://dev.to/supremeoverlord/hosting-a-static-website-on-aws-s3-a-step-by-step-walkthrough-30le</link>
      <guid>https://dev.to/supremeoverlord/hosting-a-static-website-on-aws-s3-a-step-by-step-walkthrough-30le</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introducing Today's Project!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project overview&lt;/strong&gt;&lt;br&gt;
I'm doing this project to learn how S3 storage services work. At the end of theproject I will demonstrate proficiency in uploading objects into S3 buckets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tools and concepts&lt;/strong&gt;&lt;br&gt;
Services and Key concepts used in this project include Amazon S3, S3 StaticWebsite Hosting, Access Control List(ACL), Bucket policies, Troubleshooting permission issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time, challenges, and wins&lt;/strong&gt;&lt;br&gt;
This project took me approximately one hour five minutes. The most challenging part was when I did everything I was supposed to do and still got the 403: Access Denied error. This was the part of the project that took a whole chunk of my time. But with enough patience and enough troubleshooting, I was able to figure it out and get back on track without abandoning the project in frustration.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Set Up an S3 Bucket&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, I will create a S3 bucket, this is where I will store objects for mystatic website.&lt;br&gt;
How long it took to create the bucket&lt;br&gt;
Creating an S3 bucket took me 8 minutes&lt;br&gt;
Region selection&lt;br&gt;
The Region I picked for my S3 bucket was eu-central-1 because this is the regionwith lowest latency to my location.&lt;br&gt;
Understanding bucket name uniqueness&lt;br&gt;
S3 bucket names are globally unique! This means that no buckets worldwide have the same name because the bucket name is a part of the url&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%2F41dy1fwsjoojz02wmh5v.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%2F41dy1fwsjoojz02wmh5v.png" alt=" " width="800" height="313"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Upload Website Files to S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, I will download the index.html file, download the zip file of images for my website and upload all into my S3 bucket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Files I uploaded&lt;/strong&gt;&lt;br&gt;
I uploaded two files to my S3 bucket - they were the unzipped folder containing all the files needed for the static page and the second file is the index.html file.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How the files work together&lt;/strong&gt;&lt;br&gt;
Both files are necessary for this project as index.html is the main entry point into the website and the folder contains all the supporting data and files for the frontend such as css, fonts.&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%2Fznp3ngbx0lob0icy5n9m.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%2Fznp3ngbx0lob0icy5n9m.png" alt=" " width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static Website Hosting on S3&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, I configure my S3 bucket so it can be publicly accessed over the internet, and when I'm done with that will visit the link to see the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding website hosting&lt;/strong&gt;&lt;br&gt;
Website hosting is the storing of a website's files on a server so they can be accessed publicly by users over the internet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I enabled website hosting&lt;/strong&gt;&lt;br&gt;
To enable website hosting with my S3 bucket, I went down to the static website hosting panel and enabled it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Access Control Lists (ACLs)&lt;/strong&gt;&lt;br&gt;
An ACL is a policy put in place to filter who gets access to a particular resource and what they are allowed to do with it.&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%2Fgpo23knsrzryp2b8xw3c.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%2Fgpo23knsrzryp2b8xw3c.png" alt=" " width="799" height="303"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bucket Endpoints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Understanding bucket endpoint URLs&lt;br&gt;
Once static website is enabled, S3 produces a bucket endpoint URL, which is a website where you can see all the content of the particular S3 bucket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I saw when I tested the endpoint&lt;/strong&gt;&lt;br&gt;
When I first visited the bucket endpoint URL, I came across an error page. The reason for this error is because the files in my S3 bucket are set to private by default so until I make it public, it cannot be viewed over the internet.&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%2F2j6aqqmxymowdilt870s.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%2F2j6aqqmxymowdilt870s.png" alt=" " width="800" height="223"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Finally Success!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this step, I will make my S3 files accessible over the internet using ACL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I resolved the 403 error&lt;/strong&gt;&lt;br&gt;
To resolve this 403 Forbidden error, I went to the Actions tab and I made the objects in the website folder public using ACL&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%2Fgtmwklfnke58c8wso1g4.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%2Fgtmwklfnke58c8wso1g4.png" alt=" " width="799" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bucket Policies&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this project extension I'm about to set up bucket policy for the bucket I'mworking with. I'm doing this so that no outsider can perform any function on the objects in the bucket or the bucket itself except read functions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding bucket policies&lt;/strong&gt;&lt;br&gt;
An alternative to ACLs are bucket policies. The benefit of using bucket policies is that they control who can access the bucket and what actions they can performon its objects. While ACLs are useful for granting basic permissions to individual objects or buckets by specifying which users or groups can read or write them.&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%2F33sbka3fxogoy1u4tzxn.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%2F33sbka3fxogoy1u4tzxn.png" alt=" " width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What my bucket policy does&lt;/strong&gt;&lt;br&gt;
A bucket policy is a JSON-based access control rule that defines who can access an S3 bucket and what actions they can perform on the objects inside it&lt;/p&gt;

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