AWS Series — Simple Storage Service : The most used storage in cloud
S3 is one of the oldest service by Amazon Web Services.
What is S3?
- Object Storage — S3 provides secure, durable, highly scalable object storage.
- Scalable — S3 allows you to store and retrieve any amount of data from anywhere on the web at a very low cost.
- Simple — Amazon S3 is easy to use, with a simple web service interface.
S3 is object based storage. It manages data as objects rather than in file systems or data blocks.
- Upload any file type you can think of to S3.
- Examples includes photos, videos, code, documents and text files.
- Cannot be used to run an operating system or database.
Features of S3 —
- Unlimited Storage — The total volume of data and the number of objects you can store is unlimited.
- Objects up to 5 TB in size — S3 objects can range in size from a minimum of 0 bytes to a maximum of 5 terabytes.
- S3 buckets — Store files in buckets ( similar to folders)
- Universal Namespace — All AWS accounts share the S3 namespace. Each S3 bucket name is globally unique.
- Example S3 URLs — https://bucket-name.s3.region.amazonaws.com/key-name
- Uploading Files — When you upload a file to an S3 bucket, you will receive an HTTP 200 code if the upload was successful.
It is key-value store. Each S3 object has the following attributes associated to it.
- Key — The name of the object
- Version ID — for storing multiple versions of same object
- Value — The data itself, which is made up of sequence of bytes
- Metadata — Data about the data you are storing
S3 is a safe place to store your files. The data is spread across multiple devices and facilities to ensure availability and durability.
S3 is Highly Available and Highly Durable —
Availability — Built for 99.95% — 99.99% service availability, depending on the S3 tier
Durability — Designed for 99.999999999% ( 9 decimal places) durability of data stored in S3.
S3 Standard —
High Availability and Durability —
- Data is stored in multiple devices in multiple facilities (≥ 3AZs)
- 99.99% availability
- 99.99999999999% durability(11 9's)
Designed for Frequent Access — Perfect for Frequent Access
Suitable for Most Workloads —
- The default storage class.
- Use cases include websites, content distribution, mobile and gaming applications, and big data analytics
Characteristics of S3
Tiered Storage — S3 offers a range of storage classed designed for different use cases.
Lifecycle Management — Define rules to automatically transition objects to a cheaper storage tier or delete objects that are no longer required after a set period of time.
Versioning — with versioning, all versions of an object are stored and can be retrieved, including deleted objects.
Securing your Data —
Server-side encryption — You can set default encryption on a bucket to encrypt all new objects when they are stored in the bucket.
Access Control Lists (ACLs) — Define which AWS accounts or groups are granted access and the type of access, You can attach S3 ACLs to individual objects within a bucket.
Bucket Policies — S3 bucket policies specify what actions are allowed or denied ( e.g., allow user A to PUT but not DELETE objects in the bucket)
Strong Read-After-Write Consistency —
- After a successful write of a new object (PUT) or an overwrite of an existing object, any subsequent read request immediately receives the latest version of the object.
- Strong consistency for list operations, so after a write, you can immediately perform a listing of the objects in a bucket with all changes reflected.
Points to Remember —
- Object Based — Object-based storage allows you to upload files
- Files up to 5TB — Files can be from 0 bytes to 5 TB
- Not OS or DB Storage — Not suitable to install an operating system or run a database on
- Unlimited Storage — the total volume of data and the number of objects you can store is unlimited.
- Files are Stored in Buckets.
- S3 is a universal namespace.
- Successful CLI or API uploads will generate an HTTP 200 Status Code
- URL format is https://bucket-name.s3.Region.amazonaws.com/key-name
- Each S3 object has Key, Value, Version ID and Metadata
