Buckets, Objects & Versioning
Harry
· 14 Sep 2026
· 1 views
Advertisement
Core concepts
S3 stores objects (key, data, metadata) inside buckets. Bucket names are globally unique across all AWS accounts; objects are stored per-region. Keys like img/books/cover.jpg just look like folders — it is a flat namespace.
Create a bucket
aws s3api create-bucket \
--bucket groovygrails-books \
--region ap-south-1 \
--create-bucket-configuration LocationConstraint=ap-south-1Turn Block all public access ON for your first bucket — private by default is the safe starting point.
Upload an object + enable versioning
aws s3api put-object --bucket groovygrails-books --key books/java.pdf --body java.pdf
aws s3api put-bucket-versioning --bucket groovygrails-books \
--versioning-configuration Status=Enabled
# every overwrite now keeps the old version (great for backups):
aws s3api put-object --bucket groovygrails-books --key books/java.pdf --body java-v2.pdf
aws s3api list-object-versions --bucket groovygrails-booksVersioning means a bad overwrite never destroys data — roll back by deleting the bad version. Combined with lifecycle rules (next lesson) it stays cheap.