<?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: Toqeer Afzal</title>
    <description>The latest articles on DEV Community by Toqeer Afzal (@toqeer_afzal_d1e337ddf67f).</description>
    <link>https://dev.to/toqeer_afzal_d1e337ddf67f</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%2F4124760%2F1aea28cb-efb8-4d13-b6b8-cf32974482de.png</url>
      <title>DEV Community: Toqeer Afzal</title>
      <link>https://dev.to/toqeer_afzal_d1e337ddf67f</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/toqeer_afzal_d1e337ddf67f"/>
    <language>en</language>
    <item>
      <title>Hands-On with Amazon S3: Buckets, Permissions, Lifecycle Rules and Static Hosting published: true tags: aws, devops, s3 cover</title>
      <dc:creator>Toqeer Afzal</dc:creator>
      <pubDate>Mon, 14 Sep 2026 15:17:36 +0000</pubDate>
      <link>https://dev.to/toqeer_afzal_d1e337ddf67f/hands-on-with-amazon-s3-buckets-permissions-lifecycle-rules-and-static-hosting-published-true-2g51</link>
      <guid>https://dev.to/toqeer_afzal_d1e337ddf67f/hands-on-with-amazon-s3-buckets-permissions-lifecycle-rules-and-static-hosting-published-true-2g51</guid>
      <description>&lt;p&gt;Hands-On with Amazon S3: Buckets, Permissions, Lifecycle Rules, and Static Hosting Explained&lt;br&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%2F65r6eq3vsfn8v2b0ov6m.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%2F65r6eq3vsfn8v2b0ov6m.png" alt=" " width="800" height="500"&gt;&lt;/a&gt;&lt;br&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%2Fbjylui693p6ewaiqt3qx.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%2Fbjylui693p6ewaiqt3qx.png" alt=" " width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Introduction&lt;br&gt;
Cloud storage sounds abstract until you actually create a bucket, upload a file into it, and watch access rules decide who can — and can't — see that file. That's exactly the exercise this article is built on: a hands-on AWS lab covering S3 buckets, object uploads, storage classes, bucket policies, ACLs/permissions, intelligent tiering through a lifecycle rule, and static website hosting.&lt;/p&gt;

&lt;p&gt;If you're learning cloud computing or preparing for DevOps/cloud work, S3 is one of the first services worth understanding deeply — not just because it's common but because it forces you to think about storage, access control, cost, and availability all at once.&lt;/p&gt;

&lt;p&gt;In this post, you'll learn what each of these S3 concepts means, how they connect to each other, and how a bucket goes from "empty storage" to a fully configured, cost-optimized, publicly hosted resource.&lt;/p&gt;

&lt;p&gt;Quick Overview&lt;/p&gt;

&lt;p&gt;The lab covered the following core building blocks:&lt;/p&gt;

&lt;p&gt;Buckets — the top-level container for storing data in S3.&lt;br&gt;
Objects — the actual files uploaded into a bucket.&lt;br&gt;
Upload — the process of putting objects into a bucket.&lt;br&gt;
Storage Classes — different tiers for storing objects based on access needs.&lt;br&gt;
Bucket Policy — a resource-level, JSON-based permission set attached to a bucket.&lt;br&gt;
ACL (Access Control List) &amp;amp; Permissions — access control at the bucket/object level.&lt;br&gt;
Intelligent Tiering — an S3 storage class that automatically optimizes cost based on access patterns.&lt;br&gt;
Lifecycle Configuration Rule — automated rules that transition or expire objects over time.&lt;br&gt;
Static Website Hosting — configuring a bucket to serve content directly as a website.&lt;br&gt;
Core Concepts&lt;br&gt;
Buckets&lt;/p&gt;

&lt;p&gt;A bucket is the container that holds your data in S3. Every object you store must live inside a bucket, and every bucket name must be globally unique across all of AWS. Think of a bucket as the top-level folder for a project or application's storage needs.&lt;/p&gt;

&lt;p&gt;Objects &amp;amp; Upload&lt;/p&gt;

&lt;p&gt;An object is simply a file — an image, a document, a video, a JSON file, anything — stored inside a bucket. Upload is the action of transferring that file from your local machine (or another system) into the bucket. Once uploaded, each object is identified by a unique key (essentially its path/name inside the bucket).&lt;/p&gt;

&lt;p&gt;Storage Classes&lt;/p&gt;

&lt;p&gt;S3 offers multiple storage classes, each designed for a different access pattern — frequently accessed data, infrequently accessed data, and long-term archival data. Choosing the right class is a balance between accessibility and cost efficiency.&lt;/p&gt;

&lt;p&gt;Note: Exact pricing figures for each storage class were not provided in the source data, so no cost numbers are stated here. Refer to official AWS pricing pages for current rates.&lt;/p&gt;

&lt;p&gt;Bucket Policy&lt;/p&gt;

&lt;p&gt;A bucket policy is a JSON-based access control document attached directly to a bucket. It defines who (which AWS account, user, or role) can perform what actions (read, write, delete, etc.) on the bucket or its objects. This is the primary mechanism for controlling access at the bucket level.&lt;/p&gt;

&lt;p&gt;ACL &amp;amp; Permissions&lt;/p&gt;

&lt;p&gt;ACLs (Access Control Lists) are an older, more granular way to control access to individual buckets and objects, alongside standard permissions. While bucket policies are generally the modern, recommended approach, understanding ACLs is still useful, especially when working with legacy configurations.&lt;/p&gt;

&lt;p&gt;Intelligent Tiering &amp;amp; Lifecycle Configuration Rule&lt;/p&gt;

&lt;p&gt;Intelligent Tiering is a storage class that automatically moves objects between access tiers based on how frequently they're used — without manual intervention. This is configured through a lifecycle configuration rule, which defines automated actions on objects over time (for example, transitioning objects to a different storage class after a certain period, or expiring them altogether).&lt;/p&gt;

&lt;p&gt;In the lab, intelligent tiering was set up specifically as a lifecycle configuration rule — meaning the automation of "move this data to a cheaper tier when it's not being accessed" is handled through S3's lifecycle rule engine.&lt;/p&gt;

&lt;p&gt;Static Website Hosting&lt;/p&gt;

&lt;p&gt;S3 buckets can be configured to host static websites directly — serving HTML, CSS, JS, and other static assets straight from the bucket via a website endpoint. This turns a plain storage bucket into a publicly accessible website, without needing a traditional web server.&lt;/p&gt;

&lt;p&gt;Cloud Architecture / Structure&lt;/p&gt;

&lt;p&gt;Based on the components covered in the lab, here's how they relate to one another inside a single S3 bucket setup:&lt;/p&gt;

&lt;p&gt;S3 Bucket&lt;br&gt;
Upload&lt;br&gt;
Controls access to&lt;br&gt;
Controls access to&lt;br&gt;
Triggers&lt;br&gt;
Moves&lt;br&gt;
Serves&lt;br&gt;
HTTP Request&lt;br&gt;
Objects (Uploaded Files)&lt;br&gt;
Bucket Policy&lt;br&gt;
ACL &amp;amp; Permissions&lt;br&gt;
Lifecycle Configuration Rule&lt;br&gt;
Intelligent Tiering&lt;br&gt;
Static Website Hosting&lt;br&gt;
User / Client&lt;br&gt;
Website Visitor&lt;/p&gt;

&lt;p&gt;Component labels:&lt;/p&gt;

&lt;p&gt;Objects — the files stored in the bucket.&lt;br&gt;
Bucket Policy / ACL &amp;amp; Permissions — the two access-control layers governing who can interact with objects.&lt;br&gt;
Lifecycle Configuration Rule — the automation engine that triggers storage-class transitions.&lt;br&gt;
Intelligent Tiering — the storage class that lifecycle rules move eligible objects into.&lt;br&gt;
Static Website Hosting — the feature that exposes bucket objects as a browsable website.&lt;br&gt;
Workflow / Process&lt;/p&gt;

&lt;p&gt;Here's the step-by-step process the lab followed, from an empty bucket to a fully configured one:&lt;/p&gt;

&lt;p&gt;Create Bucket&lt;br&gt;
Upload Objects&lt;br&gt;
Set Bucket Policy&lt;br&gt;
Configure ACL / Permissions&lt;br&gt;
Set Lifecycle ConfigurationRule&lt;br&gt;
Enable Intelligent Tiering&lt;br&gt;
Enable Static WebsiteHosting&lt;br&gt;
Bucket Serves ContentPublicly&lt;br&gt;
Create Bucket — a globally unique bucket is created.&lt;br&gt;
Upload Objects — files are added into the bucket.&lt;br&gt;
Set Bucket Policy — access rules are defined at the bucket level.&lt;br&gt;
Configure ACL / Permissions — finer-grained or legacy-style access control is applied.&lt;br&gt;
Set Lifecycle Configuration Rule — automation rules are defined for object transitions.&lt;br&gt;
Enable Intelligent Tiering — objects become eligible for automatic cost-optimized storage movement.&lt;br&gt;
Enable Static Website Hosting — the bucket is exposed as a website endpoint.&lt;br&gt;
Bucket Serves Content — end users/visitors can now access the hosted content.&lt;/p&gt;

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