Amazon S3 (Simple Storage Service)
Simple Storage Service, Storage Classes, Lifecycle, Security
Amazon S3 (Simple Storage Service)
Mục lục
- Tổng quan
- Các khái niệm cơ bản
- Storage Classes
- Storage Management
- Access Management & Security
- S3 Performance
- Data Processing
- Monitoring & Analytics
- Data Consistency
- Pricing
- Requester Pays
- Best Practices
- S3 Transfer Acceleration
- So sánh với EBS và EFS
- Liên kết
- Tài liệu tham khảo
Tổng quan
Amazon S3 là dịch vụ object storage với khả năng mở rộng không giới hạn, độ bền dữ liệu cao (99.999999999% - 11 nines), và hiệu suất tốt. S3 là một trong những dịch vụ cốt lõi và phổ biến nhất của AWS.
Durability 11 nines là gì?
99.999999999% durability có nghĩa: nếu lưu 10 triệu objects, thống kê bạn sẽ mất 1 object mỗi 10,000 năm.
AWS đạt được điều này bằng cách tự động replicate mỗi object sang ≥3 Availability Zones trong cùng Region - bạn không cần cấu hình gì.
Erasure Coding - Kỹ thuật đằng sau 11 nines
AWS sử dụng Erasure Coding thay vì replicate 3 bản copy đầy đủ, giúp tiết kiệm storage và vẫn đạt durability cao.
Cách hoạt động (ví dụ cấu hình 5+4):
Fault Tolerance:
| Mất chunks | Chunks còn lại | Kết quả |
|---|---|---|
| 0-4 | 5-9 | ✅ Recover được |
| 5+ | < 5 | ❌ Mất data |
Cần ít nhất 5 chunks bất kỳ để rebuild data gốc.
Tại sao vẫn đạt 11 nines?
- Chunks phân tán cross-AZ → mất cả 1 AZ vẫn OK
- Auto-healing: AWS liên tục check và rebuild chunks bị corrupt
- Xác suất mất 5+ chunks đồng thời: ~10^-15
⚠️ Lưu ý: AWS không công bố chính xác cấu hình erasure coding. 5+4 là thông tin từ nguồn phân tích bên ngoài.
Các kỹ thuật Internal khác của S3
1. Checksums & Data Integrity
S3 sử dụng checksums để đảm bảo data không bị corrupt:
2. Shuffle Sharding - Giảm "Blast Radius"
Thay vì assign cố định buckets vào drives, AWS random assign:
Lợi ích:
- Fault isolation: Lỗi không lan rộng
- Giảm blast radius: Mỗi bucket chỉ bị ảnh hưởng một phần
3. Cell-based Architecture
S3 được chia thành các "cells" độc lập:
4. Two Random Choices (Load Balancing)
Khi cần lưu object vào drive:
Tại sao chỉ cần 2?
- Random 1: Có thể chọn trúng drive đã full
- Check tất cả: Quá chậm (hàng nghìn drives)
- Two Random Choices: Nhanh + load khá đều (toán học chứng minh!)
Tổng kết các kỹ thuật
| Kỹ thuật | Mục đích |
|---|---|
| Erasure Coding | Durability với ít storage overhead |
| Checksums | Phát hiện và sửa data corruption |
| Shuffle Sharding | Fault isolation, giảm blast radius |
| Cell Architecture | Isolate failures giữa các cells |
| Two Random Choices | Load balancing storage |
Ngoại lệ (chỉ lưu trong 1 AZ, durability thấp hơn nếu AZ gặp sự cố):
- S3 One Zone-IA
- S3 Express One Zone
Lưu ý: Durability ≠ Availability. S3 Standard có 99.99% availability (có thể unavailable ~52 phút/năm), nhưng data vẫn không bị mất.
Use cases phổ biến:
- Data lakes và big data analytics
- Backup và disaster recovery
- Static website hosting
- Archive và long-term storage
- Media hosting (images, videos)
- Application data storage
Nguồn: What is Amazon S3?
Các khái niệm cơ bản
Buckets
- Container chứa các objects
- Tên bucket phải globally unique trên toàn bộ AWS
- Bucket được tạo trong một Region cụ thể
- 4 loại bucket:
- General purpose buckets - bucket thông thường
- Directory buckets - cho S3 Express One Zone (high performance)
- Table buckets - cho tabular data
- Vector buckets - cho vector storage (ML workloads)
Objects
- Đơn vị lưu trữ cơ bản trong S3
- Bao gồm: data + key (tên) + metadata
- Kích thước tối đa: 5 TB per object
- Upload > 5GB phải dùng multipart upload
Keys & Flat Structure
S3 không có folder/directory thật — nó là flat key-value store:
Key = unique identifier cho object trong bucket, bao gồm toàn bộ "path":
| Thành phần | Ví dụ |
|---|---|
| Bucket | my-bucket |
| Key | photos/2024/jan/vacation.jpg |
| Full path | s3://my-bucket/photos/2024/jan/vacation.jpg |
| Prefix | photos/2024/jan/ (phần trước object name) |
| Object name | vacation.jpg |
"Folder" trong S3 Console
Khi bạn tạo "folder" trong Console, S3 thực sự tạo một zero-byte object với key kết thúc bằng /:
Prefix & Delimiter
S3 dùng prefix và delimiter để giả lập hierarchy khi list objects:
⚠️ Delimiter không bắt buộc phải là
/. Bạn có thể dùng bất kỳ ký tự nào, nhưng/là convention phổ biến nhất.
Object Key Naming Rules
| Rule | Chi tiết |
|---|---|
| Max length | 1,024 bytes (UTF-8) |
| Case sensitive | Photo.jpg ≠ photo.jpg |
| Safe characters | a-z, 0-9, !, -, _, ., *, ', (, ) |
| Cần URL encode | &, $, @, =, ;, /, :, +, , ,, ? |
| Nên tránh | \, {, }, ^, %, `, ] |
Tại sao flat structure quan trọng?
1. Performance — S3 scale theo PREFIX
S3 tự động phân tán dữ liệu theo prefix. Mỗi prefix được xử lý bởi partition riêng:
| Metric | Per Prefix |
|---|---|
| GET/HEAD | 5,500 requests/second |
| PUT/COPY/POST/DELETE | 3,500 requests/second |
Prefix là gì trong context performance?
Prefix = phần key trước object name, tính đến dấu / cuối cùng:
⚠️ S3 tự quyết định partition ở level nào — bạn không control trực tiếp. Nhưng thiết kế key name hợp lý giúp S3 phân tán hiệu quả hơn.
Ví dụ: Thiết kế key name ảnh hưởng throughput
Scale reads với parallelization:
Khi vượt limit → HTTP 503 Slow Down:
S3 auto-scales gradually — không tức thì. Nếu traffic tăng đột ngột, bạn sẽ nhận 503 errors trong lúc S3 đang scale. Dùng retry with exponential backoff để xử lý.
"Partitioned prefix" — bạn không control được S3 partition ở đâu:
Cái bạn biết chắc: 5,500 GET/s + 3,500 PUT/s là mức tối thiểu được đảm bảo cho mỗi partition — dù S3 partition kiểu gì.
Trong thực tế, bạn chỉ cần:
- Thiết kế key phân tán — spread ra nhiều prefixes → S3 dễ tạo nhiều partition
- Monitor 503 Slow Down — nếu có nhiều 503 → key design quá tập trung vào 1 prefix
Lưu ý quan trọng: Trước 2018, AWS khuyến nghị thêm random prefix (hash) vào key để phân tán partition. Bây giờ không cần nữa — S3 đã tự động xử lý, bạn có thể dùng sequential date-based naming bình thường.
2. Không có "rename folder"
3. List performance
📖 Nguồn: Object Keys · Using Prefixes · Optimizing Performance
Versioning
- Lưu giữ nhiều versions của cùng một object
- Bảo vệ khỏi xóa nhầm và overwrite
- Bật ở bucket level
- Mỗi version có Version ID riêng
Storage Classes
S3 cung cấp nhiều storage classes cho các use cases khác nhau. Tất cả đều có durability 99.999999999% (11 nines).
Storage Class được chọn ở đâu?
Lưu ý: Storage class được chọn ở object level, không phải bucket level!
- Khi upload object → chọn storage class cho object đó (Properties → Storage class)
- Hoặc dùng Lifecycle rules để tự động chuyển objects giữa các classes
- Ngoại lệ: S3 Express One Zone dùng Directory buckets - loại bucket riêng, phải chọn khi tạo bucket
Bảng so sánh tổng quan
| Storage Class | AZs | Availability | Min Duration | Min Billable Size | Standard Retrieval | Bulk Retrieval | Retrieval Fee |
|---|---|---|---|---|---|---|---|
| S3 Standard | ≥3 | 99.99% | None | None | Milliseconds | N/A | None |
| S3 Express One Zone | 1 | 99.95% | None | None | Single-digit milliseconds | N/A | None |
| S3 Intelligent-Tiering | ≥3 | 99.9% | None | None | Milliseconds*** | N/A*** | None |
| S3 Standard-IA | ≥3 | 99.9% | 30 days | 128 KB* | Milliseconds | N/A | Có |
| S3 One Zone-IA | 1 | 99.5% | 30 days | 128 KB* | Milliseconds | N/A | Có |
| S3 Glacier Instant Retrieval | ≥3 | 99.9% | 90 days | 128 KB* | Milliseconds | N/A | Có |
| S3 Glacier Flexible Retrieval | ≥3 | 99.99%** | 90 days | +40 KB metadata | 3-5 hours | 5-12 hours | Có |
| S3 Glacier Deep Archive | ≥3 | 99.99%** | 180 days | +40 KB metadata | Within 12 hours | Within 48 hours | Có |
*Min billable size: Bạn vẫn upload được file nhỏ hơn, nhưng bị charge như 128 KB **Sau khi restore ***Với S3 Intelligent-Tiering, Frequent/Infrequent/Archive Instant Access = millisecond access. Nếu bật optional Archive Access/Deep Archive Access thì object phải restore trước: Standard = 3-5 giờ / within 12 giờ, Bulk = 5-12 giờ / within 48 giờ.
Standard retrieval vs Bulk retrieval:
- Standard retrieval: lựa chọn mặc định khi restore archived objects, cân bằng giữa tốc độ và chi phí.
- Bulk retrieval: rẻ hơn cho khối lượng restore lớn, nhưng chậm hơn; phù hợp khi không cần lấy dữ liệu gấp.
- Lưu ý: Retrieval tier chỉ áp dụng cho S3 Glacier Flexible Retrieval, S3 Glacier Deep Archive, và optional archive tiers của S3 Intelligent-Tiering; các storage class còn lại đọc trực tiếp bằng
GETnên ghiN/A.
1. S3 Standard
Use case: Frequently accessed data (truy cập > 1 lần/tháng)
- Storage class mặc định
- Millisecond access
- Không có retrieval fee, min duration, min size
- Replicate across ≥3 AZs
Phù hợp cho: Websites, mobile apps, gaming, big data analytics
2. S3 Express One Zone
Use case: Ultra-low latency applications (single-digit milliseconds)
- Nhanh nhất - latency thấp hơn S3 Standard tới 10x
- Rẻ hơn 50% request costs so với S3 Standard
- Chỉ lưu trong 1 AZ (bạn chọn AZ nào)
- Dùng với Directory buckets (không phải general purpose buckets)
Tại sao nhanh hơn?
- Co-location - chọn cùng AZ với EC2/EKS/Lambda → không có network latency cross-AZ
- Custom hardware & software - AWS thiết kế riêng cho low-latency
- Directory buckets - kiến trúc mới, hỗ trợ 2 triệu reads + 200K writes/giây
- Session-based authorization - giảm overhead authentication mỗi request
Tại sao chỉ 1 AZ?
Đây là trade-off có chủ đích:
Cross-AZ replication thêm network latency (vài ms). Để đạt single-digit ms, phải bỏ cross-AZ replication.
Phù hợp cho: ML training, real-time analytics, high-performance computing, cache/temporary data
Trade-off: Không resilient nếu AZ gặp sự cố - chỉ dùng cho data có thể tái tạo hoặc đã có backup ở nơi khác
3. S3 Intelligent-Tiering
Use case: Data có access patterns không biết trước hoặc thay đổi
"Access patterns không biết trước" là gì?
Đặc điểm:
- Tự động di chuyển objects giữa các tiers - không cần quản lý
- Không có retrieval fees (3 tiers đầu)
- Có monitoring fee nhỏ per object (~$0.0025/1000 objects/month)
- Objects < 128 KB không được monitor, luôn ở Frequent Access tier
5 Access Tiers (bên trong Intelligent-Tiering, không phải storage classes khác):
| Tier | Khi nào chuyển | Retrieval |
|---|---|---|
| Frequent Access | Default khi upload | Milliseconds |
| Infrequent Access | Sau 30 ngày không access | Milliseconds |
| Archive Instant Access | Sau 90 ngày không access | Milliseconds |
| Archive Access (optional) | Sau 90+ ngày, cần activate | 3-5 hours |
| Deep Archive Access (optional) | Sau 180+ ngày, cần activate | 12 hours |
Lưu ý: Archive Access và Deep Archive Access tiers cần restore trước khi access.
So sánh Intelligent-Tiering vs Lifecycle Rules:
| Intelligent-Tiering | Lifecycle Rules | |
|---|---|---|
| Monitoring fee | ~$0.0025/1000 objects/tháng | Không |
| Retrieval fee | Không (3 tiers đầu) | Có (từ IA, Glacier) |
| Cấu hình | Không cần | Phải tự định nghĩa rules |
| Di chuyển | Tự động theo access thực tế | Theo thời gian cố định |
Tóm lại:
- Biết chắc access pattern → Lifecycle rules (tiết kiệm monitoring fee)
- Không biết / thay đổi → Intelligent-Tiering (tiết kiệm retrieval fee)
4. S3 Standard-IA (Infrequent Access)
Use case: Long-lived data, truy cập không thường xuyên (~1 lần/tháng), cần millisecond access
- Giá storage rẻ hơn S3 Standard
- Có retrieval fee per GB
- Min storage duration: 30 ngày (xóa sớm vẫn bị charge 30 ngày)
- Min billable size: 128 KB (object nhỏ hơn vẫn bị charge 128 KB)
- Replicate across ≥3 AZs
Phù hợp cho: Backups, disaster recovery, older data cần truy cập nhanh
Khi nào dùng: Dữ liệu không thể tái tạo được
5. S3 One Zone-IA
Use case: Giống Standard-IA nhưng chấp nhận risk mất data nếu AZ fail
- Rẻ hơn ~20% so với Standard-IA
- Chỉ lưu trong 1 AZ
- Min storage duration: 30 ngày
- Min billable size: 128 KB
Phù hợp cho:
- Secondary backup copies
- Data có thể tái tạo được
- Cross-Region Replication destination
Trade-off: Mất data nếu AZ bị destroy (động đất, lũ lụt)
6. S3 Glacier Instant Retrieval
Use case: Archive data, hiếm khi access (~1 lần/quý), nhưng cần millisecond retrieval
- Storage cost thấp hơn Standard-IA 68%
- Millisecond access - không cần restore
- Min storage duration: 90 ngày
- Min billable size: 128 KB
- Retrieval fee cao hơn Standard-IA
Phù hợp cho: Medical images, news media assets, user-generated content archives
"Restore" là gì?
Một số storage classes (Glacier Flexible, Deep Archive) lưu data trên cold storage (có thể là tape) để giảm giá. Khi cần access, phải "restore" trước:
Tại sao thiết kế vậy? Đổi lại thời gian chờ → giá storage rẻ hơn rất nhiều.
7. S3 Glacier Flexible Retrieval
Use case: Archive data, access ~1 lần/năm, không cần immediate access
- Storage cost rất thấp
- Min storage duration: 90 ngày
- Phải restore trước khi access (không real-time)
Retrieval options:
| Option | Thời gian | Cost |
|---|---|---|
| Expedited | 1-5 minutes | Cao nhất |
| Standard | 3-5 hours | Trung bình |
| Bulk | 5-12 hours | Thấp nhất |
⚠️ Expedited không phải lúc nào cũng guaranteed! AWS chỉ nói "typically 1–5 minutes" — khi hệ thống bận, capacity có thể không có sẵn.
Provisioned Retrieval Capacity
Nếu cần Expedited Retrieval luôn sẵn sàng trong mọi tình huống (ví dụ: audit bất ngờ, compliance yêu cầu), phải mua thêm Provisioned Retrieval Capacity.
| Thông số | Giá trị |
|---|---|
| Throughput mỗi unit | Tối đa 150 MB/s |
| Số lượng retrieval | ≥3 Expedited retrievals mỗi 5 phút |
| Mua | Theo unit, tính phí hàng giờ |
AWS phát biểu trực tiếp:
"If you require access to Expedited retrievals under all circumstances, you must purchase provisioned retrieval capacity."
→ Nếu cần Expedited retrieval trong mọi tình huống, bắt buộc phải mua provisioned retrieval capacity.
Khi nào cần Provisioned Capacity?
- Dữ liệu phục vụ compliance audit bất ngờ (financial, healthcare)
- SLA yêu cầu thời gian retrieval được đảm bảo (không phải "thường")
- Throughput yêu cầu cụ thể 150 MB/s
Phù hợp cho: Backup, disaster recovery, compliance archives
8. S3 Glacier Deep Archive
Use case: Long-term archive, access < 1 lần/năm, lưu trữ 7-10+ năm
- Rẻ nhất trong tất cả storage classes
- Min storage duration: 180 ngày
- Phải restore trước khi access
Retrieval options:
| Option | Thời gian |
|---|---|
| Standard | 12 hours |
| Bulk | 48 hours |
Phù hợp cho: Compliance archives (financial, healthcare), magnetic tape replacement
Lưu ý quan trọng về Min Duration và Min Size
Storage Management
S3 Lifecycle
Tự động chuyển objects giữa storage classes hoặc xóa sau một thời gian:
Rule 30 ngày khi transition sang IA
Có 2 khái niệm 30 ngày rất dễ nhầm:
| Khái niệm | Áp dụng cho | Ý nghĩa |
|---|---|---|
| Lifecycle transition constraint | Chuyển sang S3 Standard-IA hoặc S3 One Zone-IA bằng Lifecycle | Object phải tồn tại trong S3 ít nhất 30 ngày trước khi được transition sang IA |
| Minimum storage duration | Khi object đã nằm trong S3 Standard-IA hoặc S3 One Zone-IA | Nếu xóa/chuyển tiếp trước 30 ngày, vẫn bị tính phí như lưu đủ 30 ngày |
Ví dụ trong đề thi:
Dù dữ liệu bắt đầu ít truy cập sau 7 ngày, AWS vẫn không hỗ trợ Lifecycle transition sang Standard-IA hoặc One Zone-IA trong 30 ngày đầu.
Nguồn AWS: “Before you transition objects to S3 Standard-IA or S3 One Zone-IA, you must store them for at least 30 days in Amazon S3.”
Các rule Lifecycle quan trọng theo storage class
Ngoài rule 30 ngày của IA, S3 Lifecycle còn có các rule hay gặp sau:
| Storage class / case | Rule Lifecycle cần nhớ | Ví dụ / ghi chú |
|---|---|---|
S3 Standard | Có thể transition xuống nhiều lớp rẻ/lạnh hơn | Standard → Standard-IA / Intelligent-Tiering / One Zone-IA / Glacier Instant / Glacier Flexible / Deep Archive |
S3 Standard-IA | Có thể đi tiếp xuống lớp lạnh hơn, nhưng không quay về Standard bằng Lifecycle | Standard-IA → One Zone-IA / Glacier Instant / Glacier Flexible / Deep Archive |
S3 One Zone-IA | Chỉ đi tiếp xuống archive class | One Zone-IA → Glacier Flexible / Deep Archive; không transition ngược lên Standard-IA |
S3 Glacier Instant Retrieval | Access milliseconds, nhưng nếu transition tiếp thì chỉ đi xuống archive lạnh hơn | Glacier Instant → Glacier Flexible / Deep Archive; minimum storage duration 90 ngày |
S3 Glacier Flexible Retrieval | Cần restore trước khi đọc; Lifecycle chỉ có thể đi tiếp xuống Deep Archive | Glacier Flexible → Deep Archive; minimum storage duration 90 ngày |
S3 Glacier Deep Archive | Gần như điểm cuối của Lifecycle waterfall | Không transition ngược lên lớp nóng hơn bằng Lifecycle; minimum storage duration 180 ngày |
S3 Intelligent-Tiering | Có tier nội bộ tự động theo access pattern; không giống Standard-IA | Frequent → Infrequent sau 30 ngày không access; Archive Instant sau 90 ngày; optional Archive/Deep Archive tiers |
Object < 128 KB | Mặc định không được Lifecycle transition sang bất kỳ storage class nào | Có thể override bằng object size filter hoặc header/API phù hợp, nhưng mặc định AWS chặn để tránh transition cost lớn hơn storage saving |
Cách nhớ: Lifecycle chủ yếu đi theo kiểu waterfall — từ lớp nóng/đắt hơn xuống lớp lạnh/rẻ hơn. Nếu muốn “đưa object nóng lại” từ Glacier/Deep Archive, thường phải restore/copy object, không phải Lifecycle transition ngược.
Minimum storage duration khác với transition direction:
| Storage class | Minimum storage duration |
|---|---|
S3 Standard | Không có |
S3 Intelligent-Tiering | Không có |
S3 Standard-IA | 30 ngày |
S3 One Zone-IA | 30 ngày |
S3 Glacier Instant Retrieval | 90 ngày |
S3 Glacier Flexible Retrieval | 90 ngày |
S3 Glacier Deep Archive | 180 ngày |
Nếu object đã vào một storage class có minimum duration rồi bị xóa hoặc transition tiếp quá sớm, bạn vẫn có thể bị tính phí phần thời gian còn lại. Ví dụ: object vào Glacier Instant Retrieval rồi chuyển tiếp sang Deep Archive sau 20 ngày → vẫn chịu minimum duration 90 ngày của Glacier Instant Retrieval.
Matrix transition storage class (Lifecycle)
S3 Lifecycle hỗ trợ transition theo mô hình "waterfall" (đi xuống lớp rẻ hơn), không phải mọi cặp source/destination đều hợp lệ.
| Từ storage class | Có thể transition sang (qua Lifecycle) |
|---|---|
S3 Standard | Standard-IA, Intelligent-Tiering, One Zone-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval, Glacier Deep Archive |
S3 Standard-IA | Intelligent-Tiering, One Zone-IA, Glacier Instant Retrieval, Glacier Flexible Retrieval, Glacier Deep Archive |
S3 Intelligent-Tiering | Phụ thuộc access tier; có thể sang One Zone-IA hoặc các lớp Glacier tương ứng |
S3 One Zone-IA | Glacier Flexible Retrieval, Glacier Deep Archive |
S3 Glacier Instant Retrieval | Glacier Flexible Retrieval, Glacier Deep Archive |
S3 Glacier Flexible Retrieval | Glacier Deep Archive |
Các transition hay nhầm trong đề thi:
- ❌
S3 Intelligent-Tiering => S3 Standard(không được hỗ trợ bởi Lifecycle) - ❌
S3 One Zone-IA => S3 Standard-IA(không được hỗ trợ bởi Lifecycle) - ✅
S3 Standard-IA => S3 One Zone-IA(được hỗ trợ)
Nguồn: Transitioning objects using Amazon S3 Lifecycle, Using S3 Intelligent-Tiering
S3 Replication
Lưu ý: Đây là tính năng bạn tự cấu hình, khác với việc AWS tự động replicate sang 3 AZs!
2 loại replication khác nhau:
| Automatic (3 AZs) | S3 Replication (CRR/SRR) | |
|---|---|---|
| Cấu hình | AWS tự động làm | Bạn phải tự setup |
| Scope | Trong cùng 1 bucket, cùng Region | Sang bucket khác |
| Mục đích | Durability 11 nines | DR, compliance, latency |
| Control | Không control được | Bạn chọn destination |
Các loại S3 Replication:
- Cross-Region Replication (CRR) - replicate sang Region khác
- Same-Region Replication (SRR) - replicate trong cùng Region
Yêu cầu: Versioning phải enabled ở cả source và destination bucket
Use cases:
- CRR: Disaster recovery, compliance (data phải ở EU), giảm latency cho users ở region khác
- SRR: Aggregate logs từ nhiều buckets, copy giữa dev/prod accounts
Xem thêm: AWS Overview - Regions và AZs để hiểu về Region, AZ
S3 Object Lock
Chống xóa/overwrite objects theo mô hình WORM (Write Once Read Many) - thường dùng cho compliance.
2 cách bảo vệ:
| Retention Period | Legal Hold | |
|---|---|---|
| Thời hạn | Cố định (vd: 365 ngày) | Không có, cho đến khi tắt |
| Use case | Compliance, regulatory | Litigation, điều tra, audit |
| Kết thúc | Tự động hết hạn | Phải manually remove |
2 Retention Modes:
Ví dụ thực tế:
Yêu cầu & lưu ý:
- Versioning phải enabled
- Có thể enable Object Lock khi tạo bucket hoặc trên existing general purpose bucket
- Sau khi enable Object Lock trên bucket, không thể disable Object Lock hoặc suspend versioning cho bucket đó
Amazon Glacier Vault Lock
Dễ nhầm: Đây là feature của Amazon Glacier vault-based service (dịch vụ Glacier standalone dùng vault/API cũ), không phải một storage class như
S3 Glacier Flexible RetrievalhayS3 Glacier Deep Archive.
Amazon Glacier Vault Lock dùng để enforce compliance controls trên Glacier vault bằng một Vault Lock policy. Policy này có thể đặt rule kiểu WORM (Write Once Read Many), ví dụ deny delete archive cho đến khi archive đủ 10 năm tuổi.
Điểm quan trọng: sau khi Vault Lock policy đã locked, policy không thể thay đổi hoặc xóa. Vì vậy nó phù hợp với archived compliance data cần giữ lâu dài theo yêu cầu pháp lý.
| Nhu cầu | Dùng gì? | Vì sao |
|---|---|---|
| Records cần audit ngay, không xóa/overwrite 7 năm | S3 Object Lock - Compliance mode | Object vẫn ở S3 để đọc ngay; Compliance mode không cho xóa/overwrite kể cả root |
| Archived compliance data, lưu rẻ lâu dài, khóa ≥10 năm | Amazon Glacier Vault Lock | Vault policy enforce WORM và bị lock khỏi sửa đổi |
| Chỉ giảm chi phí archive trong S3 | S3 Glacier Flexible / Deep Archive | Là storage class; không tự nó tạo compliance lock |
So sánh nhanh với S3 Object Lock:
| Tiêu chí | S3 Object Lock | Amazon Glacier Vault Lock |
|---|---|---|
| Áp dụng lên | S3 object version trong bucket | Amazon Glacier vault policy |
| Mục tiêu | Chống delete/overwrite object trong S3 | Enforce compliance rule trên archive vault |
| Đọc ngay? | Có, nếu object ở storage class đọc tức thì như S3 Standard | Không phải mục tiêu chính; dùng cho archive |
| Mode | Governance / Compliance | IAM-style Vault Lock policy |
| Use case exam | Transaction records, audit ngay, WORM 7 năm | Archived compliance data, low-cost long-term retention |
Lưu ý hiện tại: AWS khuyến nghị khách hàng mới dùng Amazon S3 Glacier storage classes cho long-term archive. Tuy nhiên trong các câu hỏi exam/legacy architecture, Glacier Vault Lock vẫn xuất hiện như cơ chế compliance lock cho Glacier vaults.
S3 Batch Operations
- Thực hiện operations trên hàng triệu/tỷ objects
- Operations: Copy, Invoke Lambda, Restore, Tagging, etc.
Access Management & Security
Default Security
- Buckets và objects mặc định là private
- Chỉ owner/account administrator có access
Access Control Methods
| Method | Scope | Use Case |
|---|---|---|
| IAM Policies | User/Role level | Control user access to S3 |
| Bucket Policies | Bucket level | Cross-account, public access |
| Access Points | Named endpoints | Simplified access for shared datasets |
| ACLs | Object/Bucket level | Legacy, không khuyến khích |
| S3 Block Public Access | Account/Bucket level | Prevent public access |
Bucket Policy Example
Encryption
Server-Side Encryption (SSE):
- SSE-S3 - AWS managed keys (default từ Jan 2023)
- SSE-KMS - Customer managed keys via KMS
- SSE-C - Customer-provided keys
- DSSE-KMS - Dual-layer encryption
Client-Side Encryption:
- Encrypt trước khi upload
S3 Object Ownership
- Bucket owner enforced (recommended) - disable ACLs, bucket owner owns all objects
- Bucket owner preferred - bucket owner owns objects nếu upload với
bucket-owner-full-control - Object writer - uploader owns the object
Xem chi tiết: S3 Security - Access Control, Encryption, Block Public Access, Pre-signed URLs, VPC Endpoints
Nguồn: Amazon S3 Security Features
S3 Performance
Baseline Performance
S3 có khả năng xử lý rất cao out-of-the-box:
| Metric | Per Prefix |
|---|---|
| GET/HEAD requests | 5,500 requests/second |
| PUT/COPY/POST/DELETE | 3,500 requests/second |
Prefix = phần path trước object name. Ví dụ:
bucket/folder1/subfolder/là 1 prefix.
Tối ưu Performance
1. Multi-Part Upload
Bắt buộc cho files > 5GB, khuyến nghị cho files > 100MB.
2. S3 Transfer Acceleration
Upload/download qua AWS Edge Locations thay vì public internet.
- Endpoint:
bucket-name.s3-accelerate.amazonaws.com - Chỉ charge khi thực sự nhanh hơn
- Tốt cho: long-distance transfers, large files
3. Byte-Range Fetches (Parallel Downloads)
Download một phần file hoặc download song song nhiều phần.
Use cases:
- Parallel download để tăng tốc
- Download chỉ metadata/header của file
- Resume download bị gián đoạn
4. S3 Select / Glacier Select
Query data trực tiếp trong S3 mà không cần download toàn bộ file.
Hỗ trợ formats: CSV, JSON, Parquet
Tóm tắt Performance Optimizations
| Technique | Use Case | Benefit |
|---|---|---|
| Multi-Part Upload | Files > 100MB | Parallel upload, retry parts |
| Transfer Acceleration | Long distance | Faster via Edge Locations |
| Byte-Range Fetches | Large downloads | Parallel download, partial fetch |
| S3 Select | Query large files | Reduce data transfer |
| Multiple Prefixes | High throughput | Scale requests linearly |
Nguồn: S3 Performance Guidelines
Data Processing
S3 Object Lambda
S3 Object Lambda cho phép thêm code để transform data on-the-fly khi GET object, mà không cần sửa object gốc.
Cách hoạt động
- App gọi Object Lambda Access Point (không gọi trực tiếp S3)
- Object Lambda Access Point invoke Lambda function
- Lambda lấy object gốc từ S3, transform, trả về cho app
Use Cases phổ biến
| Use Case | Mô tả |
|---|---|
| Resize images | Trả về thumbnail thay vì image gốc |
| Redact PII | Che thông tin nhạy cảm (SSN, email...) |
| Convert formats | XML → JSON, PNG → WebP |
| Decompress | Gunzip on-the-fly |
| Add watermark | Thêm watermark vào images |
| Filter data | Trả về subset của data dựa trên user role |
| Enrich data | Thêm metadata từ external source |
Ví dụ: Redact PII
Lambda Function Example (Node.js)
So sánh với các giải pháp khác
| Approach | Storage | Performance | Flexibility |
|---|---|---|---|
| Store multiple versions | ❌ Nhiều | ✅ Nhanh | ❌ Phải sync |
| Transform on client | ✅ 1 bản | ❌ Chậm | ✅ Linh hoạt |
| S3 Object Lambda | ✅ 1 bản | ⚡ Tốt | ✅ Linh hoạt |
Pricing
- Lambda invocation: Tính như Lambda bình thường
- Data transfer: Từ S3 → Lambda → Client
- No additional Object Lambda fee
💡 Khi nào dùng: Khi cần transform data nhưng không muốn lưu nhiều versions, hoặc transformation phụ thuộc vào context (user role, request params...).
Event Notifications
Trigger workflows khi có changes trong S3.
Cách hoạt động
Các loại Events
| Event Type | Trigger khi |
|---|---|
s3:ObjectCreated:* | PUT, POST, COPY, MultipartUpload complete |
s3:ObjectRemoved:* | DELETE hoặc DeleteMarkerCreated |
s3:ObjectRestore:* | Glacier restore bắt đầu/hoàn thành |
s3:Replication:* | Replication failed/completed |
s3:LifecycleExpiration:* | Object bị xóa bởi lifecycle |
s3:LifecycleTransition | Object chuyển storage class |
s3:IntelligentTiering | Object chuyển tier trong IT |
Destinations
| Destination | Use Case | Đặc điểm |
|---|---|---|
| Amazon SNS | Fan-out (gửi đến nhiều subscribers) | Push notifications, email, SMS |
| Amazon SQS | Queue xử lý tuần tự | Decoupling, retry, batch processing |
| AWS Lambda | Serverless processing | Real-time, custom code |
| EventBridge | Complex routing, filtering | Rules, cross-account, archive |
So sánh Destinations
Use Cases phổ biến
| Use Case | Event | Destination | Action |
|---|---|---|---|
| Image thumbnail | ObjectCreated | Lambda | Resize, save thumbnail |
| Video transcoding | ObjectCreated | SQS → MediaConvert | Convert video formats |
| Log processing | ObjectCreated | Lambda → ES | Index logs cho search |
| Backup notification | ObjectCreated | SNS → Email | Notify admin |
| Data pipeline | ObjectCreated | EventBridge → Step Functions | ETL workflow |
| Audit trail | All events | EventBridge → CloudWatch Logs | Logging |
Ví dụ: Image Processing Pipeline
Lưu ý quan trọng
[!IMPORTANT] Permissions: Destination (SNS/SQS/Lambda) phải có policy cho phép S3 gửi events.
[!TIP] EventBridge vs Legacy (SNS/SQS/Lambda):
- Legacy: Faster, simpler, direct integration
- EventBridge: More powerful filtering, routing rules, cross-account, archive events
Monitoring & Analytics
Monitoring Tools
| Tool | Purpose |
|---|---|
| CloudWatch Metrics | Monitor operational health |
| CloudTrail | API logging và auditing |
| Server Access Logging | Detailed request logs |
| S3 Storage Lens | 60+ metrics, dashboards |
Analytics
- Storage Class Analysis - phân tích access patterns để tối ưu storage class
- S3 Inventory - báo cáo objects và metadata
Data Consistency
S3 cung cấp strong read-after-write consistency:
- PUT new object → immediately readable
- PUT overwrite → immediately see new version
- DELETE → immediately not found
Applies to tất cả AWS Regions.
Pricing
S3 tính phí theo:
- Storage - GB per month
- Requests - PUT, COPY, POST, LIST, GET, SELECT
- Data Transfer - OUT to internet, cross-region
- Management features - Inventory, Analytics, Object Tagging
Free Tier (12 months):
- 5 GB S3 Standard storage
- 20,000 GET requests
- 2,000 PUT requests
Nguồn: Amazon S3 Pricing
Requester Pays
Requester Pays cho phép bucket owner chuyển chi phí data transfer và request sang cho người request (requester) thay vì trả tiền tất cả.
Vấn đề cần giải quyết
Chi phí được chuyển cho Requester
| Chi phí | Bucket Owner | Requester |
|---|---|---|
| Storage | ✅ Trả | - |
| Data Transfer OUT | - | ✅ Trả |
| GET/PUT Requests | - | ✅ Trả |
| Same-region transfer | - | Miễn phí |
Cách hoạt động
Lưu ý quan trọng:
- ❌ Anonymous access không hoạt động - Requester PHẢI có AWS account
- ❌ Không thể dùng pre-signed URLs (vì cần authenticated request)
- ✅ Bucket owner vẫn control access qua bucket policy
Use Cases
| Use Case | Mô tả |
|---|---|
| Public datasets | NASA, genome data, weather data - ai dùng, người đó trả |
| Data marketplace | Bán/share data mà không lo chi phí bandwidth |
| Research data | Universities share research data |
| Media archives | Stock photos/videos, download theo nhu cầu |
Ví dụ CLI
Enable Requester Pays
Nguồn: Using Requester Pays buckets
Best Practices
- Enable versioning để bảo vệ khỏi accidental deletes
- Use Lifecycle policies để tối ưu costs
- Enable S3 Block Public Access trừ khi cần public
- Use SSE-KMS cho sensitive data
- Enable CloudTrail để audit access
- Use S3 Intelligent-Tiering nếu không biết access patterns
- Use multipart upload cho files > 100MB
- Use S3 Transfer Acceleration cho long-distance transfers
S3 Transfer Acceleration
Tăng tốc upload/download files qua long distances bằng AWS Edge Locations.
Key points:
- Dùng endpoint:
bucket-name.s3-accelerate.amazonaws.com - Chỉ charge khi nhanh hơn (AWS tự động bypass nếu không cải thiện)
- Pricing: ~$0.04-0.08/GB
- Hiệu quả nhất khi: client xa bucket, file lớn
📖 Xem chi tiết: S3 Transfer Acceleration Deep Dive
S3 Transfer Acceleration vs Global Accelerator
⚠️ Câu hỏi thường gặp: Hai dịch vụ này KHÁC NHAU nhưng cùng dùng AWS Edge Locations!
| Feature | S3 Transfer Acceleration | Global Accelerator |
|---|---|---|
| Mục đích | Tăng tốc S3 upload/download | Tăng tốc any TCP/UDP app |
| Hỗ trợ S3? | ✅ Có (chính) | ❌ Không |
| Hỗ trợ ALB/EC2? | ❌ Không | ✅ Có |
| Static IP | ❌ Không | ✅ 2 Anycast IPs |
| Failover | ❌ Không | ✅ Instant failover |
| Cách bật | Per-bucket setting | Tạo Accelerator riêng |
💡 Tóm lại: S3 Transfer Acceleration = "Global Accelerator cho riêng S3"
So sánh với EBS và EFS
| Feature | S3 | EBS | EFS |
|---|---|---|---|
| Type | Object storage | Block storage | File storage |
| Access | HTTP/HTTPS API | Attached to EC2 | NFS mount |
| Scope | Regional | Single AZ | Regional |
| Max size | Unlimited | 64 TiB/volume | Unlimited |
| Use case | Static files, backups | OS, databases | Shared files |
Liên kết
- EBS - Block storage cho EC2
- EFS - Shared file storage
- IAM - Access management
- VPC - Network configuration