Welcome to Episode 5 of the Learn AWS series. The purpose behind this series is to build skills and confidence in using the AWS platform, by finding, testing and sharing the best learning resources that teach specific AWS services AS WELL AS the various foundational technologies they depend on. In short: Instead of writing a tutorial that just scratches the surface, we assemble together a learning path of resources to help you towards real mastery.
You can learn more about the series here: https://dev.to/gregfullard/learn-aws-with-me-episode-1-introduction-mph
Episode 5 focusses on AWS S3. Let's get into it..
Amazon S3 is a highly scalable, secure and performance object storage service that forms the backbone of many AWS solutions. But why is it called "Object Storage" when we actually store files on S3? Well, that's because there are key differences between the "Object Storage" and "File Storage" approached. In particular, object storage does not utilize a hierarchical structure to manage the location of files. Instead, each piece of data is bundled with all it's relevant data and then given a unique id for retrieval. This approach makes it much easier to scale storage beyond the capabilities of traditional file Storage.
Due to the wide variety of use cases for storage, S3 includes many different storage tiers that offer different performance and reliability characteristics.
Getting started with S3 is super simple, and the best place is probably to simply follow the getting started tutorials offered in the Amazon docs: https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html
Your starting point is being able to create buckets, upload and download objects, and configure object permissions. Once those bases are covered, it's time to dig a little deeper.
Simplilearn has a solid introductory video as part of their AWS Tutorial for beginners: https://www.youtube.com/watch?v=XGcoeEyt2UM
There are many core concepts in S3, and becoming a master requires familiarity with:
- Block Storage vs File Storage vs Object Storage
- Storage Classes
- Intelligent Tiering
- Standard IA (Infrequent Access)
- One Zone IA
- Deep Archive
- LifeCycle Policies
- Cross-region Replication
- Object Locking
- Access Points
- Access Policies
- Resource Based Policies
- User Based Policies
- ACLs (Access Control Lists)
- Block Public Access
- Server-side encryption
- Client-side encryption
- Event Notifications
The S3 Deep Dive course provides a thorough explanation of most of the concepts listed above. You can sign-up and complete the course for free here: https://www.aws.training/Details/Curriculum?id=26930
AWS provides a number of handy tools that allow you to analyse your S3 usage for cost and performance optimization. These include:
- Access Analyser
- S3 Inventory Report
- S3 Storage Lens
No technology lives in isolation, and S3 is no different. Although you can begin your learning journey by jumping straight into S3, becoming a true master will require skills and experience in the prerequisite, complementary and alternative technologies. The following Skills Tetris diagram gives a simple overview of the skills neighborhood that S3 lives in.
Once you've worked through the resources above, you should be quite comfortable working with S3 via the AWS console. But in real life, you may also need to interact with ACM via the AWS CLI or one of the available SDKs. I like the Boto3 (Python) SDK quite a lot, so the two resources I used often were:
This blog article covered the most important aspects that I came across during the weekly Twitter thread, but if you're interested, you can check out the original thread here: https://twitter.com/devskilldojo/status/1338381598174146562
Next up (Episode 6) is a Kata, where we will get the opportunity to practice some of the skills we've learnt so far.