Lộ trình
Amazon Web ServicesCơ bảnTuần 2: Dịch vụ cốt lõi (Compute, Storage, Database, Networking)Bài 10 / 30

Ngày 10: Storage — Amazon S3

Thời lượng: 45 phút
Mục tiêu: 2 nhiệm vụ chính
Tiến độ lộ trình
aws-clf-c02ngày 10
hoàn thành10 / 30 bài
Bối cảnh bài học

Nắm object storage, bucket policy, versioning và chọn storage class theo access pattern.

đọc hiểuthực hànhcheckpoint
Bài giảng hôm nay

Học hiểu, rồi mới thực hành

Nắm object storage, bucket policy, versioning và chọn storage class theo access pattern.

Bắt đầu đọc bài giảng

Nhiệm vụ bài học hôm nay

  • Học khái niệm bucket, object, storage class
  • Thực hành upload/download file trên S3
Instructor walkthrough

Bài giảng chi tiết: từ bài toán đến bằng chứng

Scenario xuyên suốt

Một team cần lưu ảnh upload, giữ lại phiên bản khi người dùng ghi đè nhầm và tự chuyển object cũ sang archive. Họ đang định dùng EBS vì “có disk”; bài học buộc chọn object storage dựa trên access pattern và lifecycle.

01Đọc bài toán

Xác định actor, workload, constraint và trạng thái cuối cần đạt.

02Vẽ luồng / boundary

Chỉ ra request, dependency, identity và failure domain trước khi chọn công cụ.

03Chọn và thực hành

Thay đổi nhỏ nhất trong lab cô lập; command nào cũng phải nói rõ nó kiểm tra điều gì.

04Kiểm chứng / recovery

Đối chiếu trạng thái thực tế, tạo một failure variant và ghi cách hoàn tác.

Cách nối lý thuyết với thực tế
  • S3 lưu object bằng key/metadata trong bucket; không phải block disk hay file system POSIX.
  • Durability nói về khả năng không mất dữ liệu; availability nói về khả năng truy cập.
  • Versioning hỗ trợ phục hồi overwrite/delete nhầm nhưng không thay backup/retention strategy.
  • Block Public Access, bucket policy, IAM và lifecycle phải được xem cùng nhau; mặc định nên private.

Mục tiêu bài học

Nắm object storage, bucket policy, versioning và chọn storage class theo access pattern.

Bài giảng chi tiết

Bài toán thực tế

Một team cần lưu ảnh upload, giữ lại phiên bản khi người dùng ghi đè nhầm và tự chuyển object cũ sang archive. Họ đang định dùng EBS vì “có disk”; bài học buộc chọn object storage dựa trên access pattern và lifecycle.

Đừng học nội dung này như một danh sách tên dịch vụ. Hãy đi theo chuỗi: requirement → khái niệm → quyết định → bằng chứng. Một câu trả lời tốt phải nói được vì sao lựa chọn phù hợp, phương án gần nhất bị loại ở đâu, và kiểm tra nào chứng minh lựa chọn đó hoạt động.

Khái niệm được giải thích theo scenario

  1. S3 lưu object bằng key/metadata trong bucket; không phải block disk hay file system POSIX.
  2. Durability nói về khả năng không mất dữ liệu; availability nói về khả năng truy cập.
  3. Versioning hỗ trợ phục hồi overwrite/delete nhầm nhưng không thay backup/retention strategy.
  4. Block Public Access, bucket policy, IAM và lifecycle phải được xem cùng nhau; mặc định nên private.

Ví dụ khi gặp một scenario mới, hãy thay các từ khóa trong đề bằng một hệ thống cụ thể: ai là người dùng, dữ liệu đi qua đâu, thành phần nào có thể lỗi, quyền nào cần có và điều gì phải được quan sát. Cách làm này giúp phân biệt các đáp án gần đúng thay vì chọn theo trí nhớ tên service.

flowchart LR
  A[Scenario / requirement] --> B[Concept and boundary]
  B --> C[Service or control choice]
  C --> D[Evidence and trade-off]
  D --> E[Failure variant]

Khái niệm cốt lõi

S3 lưu object gồm dữ liệu, key và metadata trong bucket. Bucket name có tính toàn cầu và bucket có Region. Standard phù hợp truy cập thường xuyên; Standard-IA cho dữ liệu ít truy cập nhưng cần truy xuất nhanh; Glacier classes cho archive. Versioning hỗ trợ phục hồi object bị ghi đè/xóa nhưng không thay thế backup.

Ví dụ giảng viên: phân loại một quyết định cloud

Một thiết kế S3 phải bắt đầu từ object lifecycle và access pattern, không phải từ câu “S3 durable”. Hãy hỏi: object private hay public qua CDN, ai đọc/ghi, có cần version, giữ bao lâu, có dữ liệu nhạy cảm không, truy cập thường xuyên hay archive, và xóa nhầm khôi phục thế nào?

Ví dụ ảnh upload: client không nên nhận quyền bucket rộng; app cấp presigned URL giới hạn thời gian, bucket bật Block Public Access, object mã hóa và lifecycle chuyển ảnh cũ sang class phù hợp. Nếu người dùng xóa nhầm, versioning có thể giúp khôi phục object version; nó không tự bảo vệ khỏi credential bị đánh cắp, không thay thế policy review và cũng không làm mọi storage class miễn phí.

Failure drill: bucket public ngoài ý muốn, versioning chưa bật, lifecycle chuyển object quá sớm, hoặc app có quyền s3:*. Với mỗi lỗi, kiểm tra đúng control bằng get-public-access-block, get-bucket-versioning, get-bucket-lifecycle-configuration và policy review; không “fix” bằng cách xóa bucket khi chưa hiểu dữ liệu.

Thực hành có kiểm soát

Với bucket lab, kiểm tra Region, Block Public Access, versioning và lifecycle. Dùng aws s3api list-buckets hoặc get-bucket-versioning ở chế độ read-only. Chỉ tạo bucket khi đã biết cách xóa object và kiểm tra chi phí.

Expected state và recovery

Trước khi thực hành, ghi rõ target/account/region, trạng thái hiện tại và output mong đợi. Sau thao tác, kiểm chứng bằng trạng thái thực tế hoặc command phù hợp; nếu kết quả sai, giữ lại evidence, quay về thay đổi nhỏ nhất và cleanup đúng owner. Không coi exit code 0 hoặc thông báo “success” là bằng chứng duy nhất.

  1. Đọc được Region và trạng thái versioning của bucket.
  2. Giải thích vì sao object bị xóa vẫn có thể khôi phục khi versioning phù hợp.
  3. Phân biệt durability với availability bằng scenario riêng.
  4. Kiểm tra bucket không public và nêu bước cleanup object/version trước khi xóa.

Bẫy đề thi và cách tự kiểm tra

Durability là khả năng không mất dữ liệu; availability là khả năng truy cập. S3 không phải file system gắn vào EC2. Thiết kế mặc định nên private; bucket policy và Block Public Access phải được xem cùng nhau.

Terminal reference

Command list và cách dùng

Chạy từng lệnh theo đúng thứ tự. Trước các lệnh có thể tạo hoặc thay đổi tài nguyên, hãy kiểm tra profile, account và region.

Commands · read-only checkpoints
aws s3api list-buckets --profile study --query "Buckets[].Name" --output table
aws s3api get-public-access-block --bucket <lab-bucket> --profile study
aws s3api get-bucket-versioning --bucket <lab-bucket> --profile study
Hands-on lab

Thực hành theo scenario

Chọn một bucket lab hoặc chỉ dùng read-only. Kiểm tra Region, Block Public Access, versioning và lifecycle. Viết lifecycle cho object upload: frequent access → infrequent → archive, đồng thời ghi retention và cleanup. Không upload dữ liệu cá nhân hoặc bật public access để test.

Evidence checkpoint

Kiểm chứng kết quả

Không coi lệnh chạy thành công là đủ. Hãy đối chiếu output với trạng thái mong đợi:

  • Đọc được Region và trạng thái versioning của bucket.
  • Giải thích vì sao object bị xóa vẫn có thể khôi phục khi versioning phù hợp.
  • Phân biệt durability với availability bằng scenario riêng.
  • Kiểm tra bucket không public và nêu bước cleanup object/version trước khi xóa.
Transfer to exam / production

Bẫy thường gặp và trade-off

Durability là khả năng không mất dữ liệu; availability là khả năng truy cập. S3 không phải file system gắn vào EC2. Thiết kế mặc định nên private; bucket policy và Block Public Access phải được xem cùng nhau.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: S3 Versioning giúp ích chính cho tình huống nào?

Kết thúc bài

Checklist trước khi sang Ngày 2