S3 πŸͺ£ - All the File Storage You’ll Ever Need!


Hi Reader πŸ‘‹πŸ½

we are at the end of our database & storage section. Let's finish with one of the most well-known service in AWS ... πŸ₯ S3.

Even developers who don’t work with AWS know and use S3.

We’ll cover some of the main concepts

  1. Bucket & Objects πŸͺ£
  2. Storage Classes πŸ›οΈ
  3. Event Notifications ⚑
  4. Versioning βͺ
  5. Pricing πŸ’΅

Let’s go πŸš€


Infographic S3

Here you’ll find the infographic for S3 to get a head start.

Buckets & Objects πŸͺ£

One of the main concepts of S3 is buckets & objects.

One bucket contains multiple objects. S3 is a global service (you don't need to choose a region in the management console). However, your bucket still lives in a region. Weird, I know.

Storage Classes

A fantastic feature of S3 is the ability to set storage classes to your bucket. Amazon offers 8 different storage classes depending on your needs.

The goal of changing a storage class is to save money. It is always a trade-off for other factors such as:

  • How long does S3 need to return objects
  • How safe is your data
  • How much effort do you have to retrieve your data

Here is an overview of all storage classes:

Event Notifications ⚑

Building event-driven systems are a huge part of AWS. There are whole applications that are built on the basis of S3.

One good example is the creation of thumbnails. Imagine having a YouTube channel. A YouTube channel needs thumbnail pictures.

You can configure S3 to receive images and let it call lambda to create thumbnails out of them.

S3 can trigger SQS, SNS, or Lambda. We would use Lambda for this use case.

S3 triggers the Lambda function with an event for each image upload. You can also execute notifications on change or deletion events. Lambda can go ahead, take the file, and create the correct sizes. This is a very common pattern.

Versioning βͺ

Often, you don’t want to override your data but you want to generate a new version of your S3 object. S3 allows you to version your objects. With that, you can keep older versions and you can roll back to a previous state.

This reduces your risk of accidentally overriding objects.

The main benefit here is that it is fully managed. That means you don’t need to do anything other than activate the actual versioning.

Once you've enabled versioning you can show your versions in the S3 console by switching the button Show versions.

I uploaded a file with the same name bucket-objects.png twice. You see that two different versions of that file exist now.

If you want to restore one you can either remove the old one. Or you can download and upload the file again.

Versioning doesn’t cost anything. You only pay for the additional storage you need.

Pricing πŸ’Έ

This brings us to costs. S3 is a serverless service. That means its pricing is 100% usage-based. You don’t pay for any computing.

The pricing in S3 is mainly based on storage and on the number of API calls.

The main pillars of pricing are:

  1. Storage: Depending on the storage class. About $ 0.023 per GB
  2. Requests against your buckets: Depends also on the storage class. Infrequent ones are more expensive. About $ 0.005 / per 1,000 requests.
  3. Data Transfer: Transfer coming in and out of S3. From the internet to S3 is free. From S3 to the internet cost about $ 0.09 / GB. That is a huge cost driver.
  4. Advanced Features: Some advanced features like Intelligent Tiering are charged on top.

Final Words

That's it for today! We hope you enjoyed this issue about S3. Check out some of the related blog posts about S3.

Thank you and see you in 2 weeks πŸ‘‹πŸ½
Sandro & Tobi ✌🏽

Related Posts

​

AWS for the Real World

Join our community of over 9,300 readers delving into AWS. We highlight real-world best practices through easy-to-understand visualizations and one-pagers. Expect a fresh newsletter edition every two weeks.

Read more from AWS for the Real World

Newsletter Header AWS FOR THE REAL WORLD ⏱️ Reading time: 8 minutes πŸŽ“ Main Learning: Migrating from Edgio to CloudFront ✍️ Blog Post πŸ’» GitHub Repository Hey Reader πŸ‘‹πŸ½ this newsletter is about πŸ₯ AI πŸ€– We haven't talked too much about AI, Bedrock, MCPs, and agents yet - so we want to change that. Please let us know if this it interests you to build AI on AWS, or if you are much more interested on hands-on fundamentals services. Should we focus on AI Services? Yes, I want to learn to build...

Newsletter Header AWS FOR THE REAL WORLD ⏱️ Reading time: 8 minutes πŸŽ“ Main Learning: Migrating from Edgio to CloudFront ✍️ Blog Post πŸ’» GitHub Repository Hey Reader πŸ‘‹πŸ½ This newsletter edition is all about saving Lambda costs. I (Sandro is writing this one) was recently involved in saving Lambda costs for a client. So, I thought writing down my thought process was a good idea. Have fun with it! If you need help saving AWS costs or improving your infrastructure, just reply to this email! Now...

βŒ› Reading time: 8 minutes πŸŽ“ Main Learning: Federated Authentication with Cognito πŸ‘Ύ GitHub Repository ✍️ Read the Full Post Online πŸ”— Hey Reader πŸ‘‹πŸ½ Federated Authentication lets users sign in to your app using their existing accounts - most prominently Google! This approach eliminates the need to create and remember new credentials (which most users are very happy for! ✨), improving user experience and likely increasing conversion rates. πŸ“ˆ With OAuth 2.0 and Google as an identity provider, we...