Let's think about this for a second
An S3 Bucket is a container that holds files (called 'objects') — bucket names must be globally unique across all of AWS. An Object is a single file (with a key/name, data, and metadata). S3 offers several Storage Classes — Standard (frequently-accessed data), Infrequent Access (IA, for data you read occasionally, cheaper), and Glacier (archive/backup, slowest to read but cheapest) — choosing the right one for your access pattern can significantly cut costs.
Let's connect this to a real scenario
If you keep user-uploaded images (profile pictures, product photos) in S3 Standard, and move backup files (read maybe once a month) into Glacier, you can cut storage costs by up to 80% — you can even use an S3 Lifecycle Policy (an advanced concept) to move objects automatically.
Let's look at it together
# Create a bucket (name must be globally unique)
aws s3 mb s3://my-tutorial-bucket-2026
# Upload a file
aws s3 cp ./photo.jpg s3://my-tutorial-bucket-2026/photo.jpg
# List objects in the bucket
aws s3 ls s3://my-tutorial-bucket-2026
# Upload with a cheaper storage class
aws s3 cp ./backup.zip s3://my-tutorial-bucket-2026/ --storage-class GLACIER$ aws s3 ls s3://my-tutorial-bucket-2026
2026-08-25 10:00:00 245678 photo.jpg5-minute try-it
Create an S3 bucket and upload a few files — try uploading with both Standard and Glacier storage classes, and compare the price estimates in the Console.
A quick word of caution
Be extremely careful before making an S3 bucket publicly accessible — most public data breach incidents trace back to misconfigured S3 buckets. By default, every bucket is private.