Step-by-step practical guide. 6 hands-on labs โ by the end you will have created a fully working S3 bucket with uploads, versioning, pre-signed URLs, and a hosted website.
Free tier account. Console: console.aws.amazon.com
Log in as an IAM user, NOT the root account.
Have 2โ3 files on your laptop: 1 image, 1 PDF, 1 text file.
Set region to ap-south-1 (Asia Pacific Mumbai) in top-right corner.
Bucket name : iimt-lab-yourname-2026 # make it unique โ add your name AWS Region : Asia Pacific (Mumbai) ap-south-1 Block Public Access: ON (all checkboxes ticked) # keep default Versioning : Disabled # we will enable in Lab 4 Default encryption: SSE-S3 # default, automatic
Time interval : Minutes Duration : 5 # 5 minutes โ short for demo purposes
Rule name : archive-old-files Rule scope : Apply to all objects in the bucket # tick the acknowledgement checkbox
Transition 1: Standard-IA after 30 days Transition 2: Glacier Flexible after 90 days Expiration : Delete object after 365 days
<html> <head> <title>IIMT Cloud Lab</title> </head> <body style="font-family:Arial; text-align:center; padding:60px; background:#fff8f0"> <h1 style="color:#FF9900">๐ My First S3 Website!</h1> <p>Hosted on Amazon S3. No server required.</p> <p>Built by: YOUR NAME HERE</p> </body> </html>
iimt-website-yourname ยท Block Public Access: TURN OFF โ tick the acknowledgement boxindex.html โ Error document: error.html โ Save{
"Version": "2012-10-17",
"Statement": [{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::iimt-website-yourname/*"
// replace with your actual bucket name
}]
}
http://iimt-website-yourname.s3-website.ap-south-1.amazonaws.com| Lab | What We Did | Key Learning |
|---|---|---|
| Lab 1 | Created an S3 Bucket | Bucket name must be globally unique |
| Lab 2 | Uploaded file, saw AccessDenied | S3 is private by default |
| Lab 3 | Generated Pre-signed URL | Temporary, expiring access โ no public access needed |
| Lab 4 | Enabled Versioning | Every upload is saved; delete = Delete Marker, not permanent |
| Lab 5 | Created Lifecycle Policy | AWS auto-moves objects to cheaper storage โ saves money |
| Lab 6 | Hosted a Static Website | S3 can serve a real website with zero server setup |
resume.pdf to an S3 bucket and share its URL with your friend. They get AccessDenied. Why? How do you fix it properly without making the bucket public?report.docx three times. How many objects does AWS store? What happens when you "delete" it?Step-by-step AWS docs for every lab above. Use these when you're stuck or want to go deeper.
| Lab Topic | AWS Docs URL |
|---|---|
| Create a Bucket (Lab 1 & 2) | S3/creating-bucket-key.html |
| Upload Objects (Lab 2) | S3/upload-objects.html |
| Pre-signed URLs (Lab 3) | S3/ShareObjectPreSignedURL.html |
| Enable Versioning (Lab 4) | S3/manage-versioning-examples.html |
| Lifecycle Policy Setup (Lab 5) | S3/lifecycle-configuration-intro.html |
| Static Website Hosting (Lab 6) | S3/HostingWebsiteOnS3Setup.html |