S3 (Simple Storage Service) P1

Giới thiệu
Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ đối tượng (object storage) được cung cấp bởi AWS (Amazon Web Services), cho phép lưu trữ và truy xuất bất kỳ lượng dữ liệu nào từ bất kỳ đâu trên web. Nó được thiết kế để đảm bảo tính sẵn sàng cao, khả năng mở rộng gần như vô hạn, và tích hợp chặt chẽ với các dịch vụ AWS khác. S3 thường được dùng để lưu trữ các tệp dữ liệu, media, bản backup, và thậm chí là cả website tĩnh.
Các trường hợp sử dụng của Amazon S3
- Backup and storage
→ Sao lưu và lưu trữ dữ liệu - Disaster Recovery
→ Khôi phục sau thảm hoạ (phục hồi dữ liệu khi có sự cố như mất dữ liệu, server lỗi…) - Archive
→ Lưu trữ dài hạn (dữ liệu ít truy cập, dùng với các storage class như Glacier) - Hybrid Cloud storage
→ Lưu trữ trên môi trường đám mây lai (kết hợp giữa on-premise và cloud) - Application hosting
→ Lưu trữ và phục vụ ứng dụng (như static assets, media files cho frontend/backend) - Media hosting
→ Lưu trữ và phân phối media (video, hình ảnh, audio…) - Data lakes & big data analytics
→ Kho dữ liệu lớn (Data Lake) và phân tích dữ liệu lớn (S3 là nơi lưu raw data cho các pipeline ETL, ML) - Software delivery
→ Phân phối phần mềm (host file cài đặt, bản cập nhật, artifacts) - Static website
→ Triển khai website tĩnh (host HTML/CSS/JS với public access, dùng kết hợp với CloudFront để tăng hiệu suất)
Amazon S3 - Buckets

- Amazon S3 cho phép người dùng lưu trữ các object (tệp tin) trong "bucket" (tương tự thư mục)
→ Tất cả dữ liệu trong S3 đều được lưu trong bucket, là đơn vị chứa chính trong hệ thống lưu trữ object-based của S3. - Bucket phải có tên duy nhất toàn cầu (global unique name) – áp dụng trên tất cả vùng (regions) và tài khoản (accounts)
→ Tên bucket là toàn cục, giống như DNS. Một khi tên đã được sử dụng bởi bất kỳ ai, bạn sẽ không thể dùng lại. - Bucket được tạo và quản lý theo từng vùng (region level)
→ Khi tạo bucket bạn phải chọn region, và dữ liệu trong bucket đó sẽ được lưu trữ vật lý tại region tương ứng. - S3 trông như một global service, nhưng bucket thực tế được tạo trong một region cụ thể
→ Tức là bạn có thể truy cập S3 từ mọi nơi, nhưng latency và compliance sẽ phụ thuộc vào region của bucket. - Quy tắc đặt tên bucket (Naming convention):
- Không dùng chữ hoa (uppercase), không dùng dấu gạch dưới (underscore)
→ Chỉ chấp nhận chữ thường, số và dấu- - Độ dài từ 3–63 ký tự
- Không được là địa chỉ IP (ví dụ:
192.168.1.1) - Phải bắt đầu bằng chữ cái thường hoặc chữ số
- Không được bắt đầu bằng tiền tố
xn--
→ Tiền tố dành cho tên miền IDN (Internationalized Domain Name), có thể gây lỗi trong DNS mapping. - Không được kết thúc bằng hậu tố
-s3alias
→ Tránh trùng lặp với cấu trúc alias trong hệ thống S3 mới.
- Không dùng chữ hoa (uppercase), không dùng dấu gạch dưới (underscore)
Amazon S3 – Objects

- Mỗi object (file) trong S3 sẽ có một “Key”
→ “Key” là định danh duy nhất của object trong bucket, đóng vai trò như "đường dẫn đầy đủ" đến object đó. - Key chính là đường dẫn đầy đủ (FULL path):
→ Đây không phải thư mục thực sự. Đó chỉ là chuỗi key có chứa dấu/khiến bạn nghĩ là thư mục.
Key được cấu thành từ: prefix + object name
s3://my-bucket/my_folder/another_folder/my_file.txt
^prefix^ ^object name^- Không tồn tại khái niệm “thư mục” trong bucket
→ Giao diện UI của AWS Console có thể khiến bạn nghĩ như vậy, nhưng thực tế backend chỉ lưu key dạng chuỗi. - S3 đơn thuần chỉ là hệ thống key-value với key rất dài chứa dấu “/”
→ Do đó, việc “tạo thư mục” chỉ là việc tạo một object với key kiểu "folder1/folder2" - Value của Object là phần nội dung (body):
- Kích thước tối đa của một object: 5TB (5000GB)
- Nếu upload object có kích thước > 5GB, bắt buộc phải dùng phương pháp "multi-part upload"
- Metadata
→ Danh sách các cặp key-value dạng text
→ Có thể là metadata của hệ thống hoặc do người dùng tùy ý định nghĩa - Tags
→ Là các cặp key/value (dạng Unicode), giới hạn tối đa 10 tag cho mỗi object
→ Hữu ích cho mục đích bảo mật hoặc quản lý vòng đời dữ liệu (lifecycle rules) - Version ID (chỉ có nếu bucket bật chế độ versioning)
→ Dùng để phân biệt các phiên bản của cùng một object, hỗ trợ rollback hoặc khôi phục dữ liệu cũ.
Bạn thấy bài này thế nào?