Project · Cloud Computing (AWS, Azure, Google Cloud)
Project: a kirana shop's price list on the web
The brief
Put Sharma Kirana Store's daily price list on the internet with Amazon S3 static website hosting, for a few rupees a month or less. Build the bucket policy in Python so that only the website files can be read, estimate the monthly bill, publish the site in Mumbai, test it with curl, and delete it all at the end.
Why it matters
Small businesses, schools and event organisers need simple websites that never go down and cost almost nothing. Hosting static files on object storage is how many of these sites run, and writing a tight bucket policy, estimating the bill and cleaning up afterwards are exactly the habits an employer checks in a junior cloud engineer.
Skills you practise
- S3 static website hosting
- bucket policies and ARNs
- Block Public Access for one bucket
- estimating storage, request and data transfer costs
- curl -I to test a website
- cleaning up
You need
- A free AWS account with a budget alert set (lab cc-lab-safe-account)
- AWS CLI v2 configured with an IAM Identity Center or IAM user profile, not root, region ap-south-1 (or AWS CloudShell in Mumbai)
- curl (built into Linux, macOS, CloudShell and Windows 10/11; in Windows PowerShell type curl.exe)
What you will have at the end
A screenshot of the live price-list site, site_tools.py with the tested bucket policy and cost estimate, the pasted curl result, and proof that the bucket was deleted.
How it is marked (rubric, 100 points)
| Site workscurl showed 200 OK with text/html, and the page opened on a phone. | 30 |
|---|---|
| Least privilegeOnly this bucket was public, only s3:GetObject was allowed, and other buckets kept Block Public Access on. | 30 |
| Cost estimatemonthly_estimate passes every check and you can say which part of the bill grows with visitors. | 20 |
| Cleaned upThe bucket was deleted and account-level Block Public Access is on again. | 20 |
0/8 steps done
Step 1 of 8
Safety first: who you are and your budget
Your CLI identity is not root, and at least one budget exists.
Before you build anything that faces the internet, check two things: you are working as your admin identity (not the root user), and a budget will email you if spending starts. The first command prints your ARN; the second counts your budgets.
This site should cost well under a dollar a month, mostly covered by free allowances or credits, but a budget catches mistakes such as a loop that downloads files all day.
$ aws sts get-caller-identity --query Arn --output text; aws budgets describe-budgets --account-id $(aws sts get-caller-identity --query Account --output text) --query "length(Budgets)"Your notes: index.html, error.html, site_tools.py
Write down each command you ran. It goes into your project summary.