Tác giả

Oct 2, 2025 • 1:00 AM

Tác giả: Linh osimi

Amazon S3: Hệ thống lưu trữ đối tượng nền tảng trong AWS

Phân tích kiến trúc, mô hình dữ liệu, tính năng nâng cao và nguyên tắc bảo mật — kèm minh họa trực quan

1. Giới thiệu

Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ đối tượng (object storage) được ra mắt từ năm 2006 — cũng là một trong những dịch vụ đầu tiên của AWS. Ngày nay, S3 không chỉ dùng để lưu file, mà còn là nền tảng cho data lake, backup, phân phối nội dung (CDN), và event-driven architecture.

Khác với lưu trữ khối (block storage như EBS) hay lưu trữ tệp (file storage như EFS), S3 lưu dữ liệu dưới dạng **đối tượng (object)** — mỗi đối tượng bao gồm: dữ liệu, metadata và định danh duy nhất (key).

Mô hình lưu trữ đối tượng trong S3
Hình 1: So sánh block, file và object storage. S3 thuộc loại object storage — tối ưu cho dữ liệu phi cấu trúc.

2. Kiến trúc và mô hình dữ liệu

2.1. Bucket và Object

- **Bucket**: Tương đương “thư mục gốc”, là container chứa các object. Tên bucket **toàn cầu duy nhất** trên AWS (ví dụ: my-company-logs-2025).
- **Object**: Đơn vị lưu trữ cơ bản. Mỗi object có:
  • Key (đường dẫn ảo, ví dụ: photos/2025/summer.jpg)
  • Value (dữ liệu, tối đa 5 TB)
  • Metadata (mô tả: content-type, custom tag…)
  • Version ID (nếu bật versioning)

Cấu trúc bucket và object trong S3
Hình 2: Cấu trúc logic của bucket và object trong S3.

2.2. Không gian tên (Namespace) và vùng (Region)

- Tên bucket **phải toàn cầu duy nhất** vì S3 sử dụng DNS-based endpoint: https://bucket-name.s3.region.amazonaws.com.
- Mỗi bucket được tạo trong **một region cụ thể** — dữ liệu không tự động sao chép sang region khác.
- Sau khi tạo, **không thể đổi region** của bucket.

3. Các tính năng cốt lõi

3.1. Storage Classes (Lớp lưu trữ)

S3 cung cấp nhiều lớp lưu trữ để tối ưu chi phí theo tần suất truy cập:

Lớp lưu trữ Mức độ truy cập Độ trễ Phù hợp cho
S3 StandardThường xuyênThấpỨng dụng web, phân tích dữ liệu
S3 Intelligent-TieringTự động điều chỉnhThấpDữ liệu có mẫu truy cập không rõ ràng
S3 Standard-IAÍt truy cậpThấpBackup, dữ liệu dài hạn
S3 Glacier Instant RetrievalRất ít1–5 msLưu trữ archive cần truy xuất nhanh
S3 Glacier Flexible/Deep ArchiveHiếmPhút đến giờLưu trữ pháp lý, archive 7–10 năm

3.2. Versioning

Khi bật versioning, mọi lần ghi đè hoặc xóa object đều tạo **phiên bản mới** — giúp khôi phục dữ liệu do vô tình ghi đè hoặc xóa.

Lưu ý: Versioning **làm tăng chi phí lưu trữ** nếu không quản lý đúng.

3.3. Lifecycle Policy

Tự động chuyển object giữa các lớp lưu trữ hoặc xóa sau N ngày.

Ví dụ: - Ngày 0–30: S3 Standard - Ngày 31–90: Chuyển sang S3 Standard-IA - Ngày 91+: Chuyển sang Glacier Deep Archive - Ngày 365: Xóa vĩnh viễn

Lifecycle policy trong S3
Hình 3: Minh họa chính sách lifecycle tự động tối ưu chi phí lưu trữ.

4. Bảo mật và quyền truy cập

S3 có **hai lớp bảo mật chính**:

4.1. Identity-Based Policies (IAM)

Gán quyền cho user/role thông qua IAM policy. Ví dụ: cho phép user đọc bucket my-data:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::my-data/*"
  }]
}

4.2. Resource-Based Policies (Bucket Policy)

Gắn trực tiếp vào bucket. Dùng để cho phép:

  • Truy cập công khai (không khuyến khích)
  • Truy cập từ tài khoản AWS khác
  • Truy cập từ dịch vụ như CloudFront

Ví dụ bucket policy cho phép CloudFront truy cập:

{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XYZ" },
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::my-website/*"
  }]
}

4.3. ACL (Access Control List) — nên tránh

ACL là cơ chế cũ, kém linh hoạt. AWS khuyến nghị dùng **bucket policy + IAM** thay thế.

4.4. Block Public Access

Tính năng **bắt buộc bật** trong production. Ngăn bucket bị public do cấu hình sai.

Có 4 mức chặn:

  • Block public ACLs
  • Ignore public ACLs
  • Block public policies
  • Restrict public buckets

Block Public Access trong S3
Hình 4: Tính năng Block Public Access — lá chắn an toàn mặc định cho mọi bucket.

5. Tích hợp và ứng dụng thực tế

  • Static Website Hosting: Lưu HTML/CSS/JS → bật tính năng “Static website hosting”.
  • Data Lake: Lưu dữ liệu thô (JSON, CSV, Parquet) → phân tích bằng Athena, Redshift.
  • Event-Driven Processing: Khi upload file → kích hoạt Lambda để xử lý (resize ảnh, parse log…).
  • Backup & Disaster Recovery: Dùng lifecycle + cross-region replication để sao lưu.

6. Kết luận

Amazon S3 không chỉ là “ổ đĩa đám mây” — mà là **nền tảng dữ liệu hiện đại** với độ bền 99.999999999% (11 số 9), khả năng mở rộng vô hạn và hệ sinh thái tích hợp sâu.

Tuy nhiên, sức mạnh đi kèm trách nhiệm: hàng nghìn bucket bị rò rỉ dữ liệu mỗi năm do **cấu hình public sai**. Vì vậy, hãy luôn:

  1. Bật Block Public Access mặc định.
  2. Dùng IAM + bucket policy thay vì ACL.
  3. Áp dụng least privilegeencryption (SSE-S3, SSE-KMS).
  4. Giám sát bằng AWS CloudTrail + S3 Access Logs.

Khi được sử dụng đúng cách, S3 sẽ là “kho báu” — chứ không phải “lỗ hổng” — trong hệ thống của bạn.