Nhiều tính năng nhỏ · Đề thi hỏi bằng cách bắt bạn phân biệt chúng

Advanced Amazon S3

Chương này gom một loạt tính năng tên na ná nhau: Lifecycle, Analytics, Inventory, Batch Operations, Storage Lens, S3 Select, Byte-Range Fetch. Cái khó không phải là hiểu từng cái, mà là chọn đúng cái nào cho tình huống nào.

{ "Section": "13 — Advanced Amazon S3", "CapDeNham": { "Lifecycle": "tự động chuyển tầng và xóa", "Analytics": "gợi ý NÊN chuyển sau bao nhiêu ngày", "BatchOperations": "thao tác hàng loạt trên object ĐÃ có", "StorageLens": "nhìn toàn cảnh cả tổ chức" }, "SoPhaiThuoc": [ "3.500 PUT · 5.500 GET mỗi giây mỗi prefix", "Multi-part: khuyến nghị trên 100 MB, bắt buộc trên 5 GB" ] }
13.1Ra thi nặng nhất

Lifecycle Rules & S3 Analytics

Lifecycle Rule là cách tự động hóa toàn bộ vòng đời dữ liệu — chuyển tầng và xóa — mà không cần ai can thiệp.

Hai loại hành động

LoạiLàm gìVí dụ
Transition ActionsChuyển object sang storage class khácStandard → Standard-IA sau 60 ngày; → Glacier sau 6 tháng
Expiration ActionsXóa object sau một khoảng thời gianXóa log sau 365 ngày · xóa phiên bản cũ · xóa phần multi-part upload dang dở
Ba câu ra thi từ đúng bảng này

1. "Xóa các phiên bản cũ để giảm chi phí" → Expiration Actions, không phải Transition.
2. "Tự động chuyển tầng object" → Lifecycle Rules, không phải Lambda hay CloudWatch Events.
3. "Dọn các phần multi-part upload dang dở do mạng lỗi" → cũng là Lifecycle Rule, không cần viết Lambda hay nhờ AWS Support.

Rule áp dụng được cho một prefix cụ thể (ví dụ s3://mybucket/mp3/*) hoặc cho object mang tag nhất định (ví dụ Department: Finance).

Hai kịch bản trong bài giảng

Kịch bản 1 — ảnh gốc và thumbnail

Yêu cầu: EC2 tạo thumbnail từ ảnh người dùng upload. Thumbnail tạo lại được dễ dàng và chỉ cần giữ 60 ngày. Ảnh gốc phải lấy được ngay trong 60 ngày đầu, sau đó chờ tới 6 giờ cũng chấp nhận.

Thiết kế: ảnh gốc để Standard, lifecycle chuyển sang Glacier sau 60 ngày. Thumbnail để One Zone-IA (vì tạo lại được), lifecycle expire sau 60 ngày.

Kịch bản 2 — khôi phục object đã xóa

Yêu cầu: object đã xóa phải khôi phục ngay lập tức trong 30 ngày, và trong vòng 48 giờ cho tới 365 ngày.

Thiết kế: bật Versioning (xóa chỉ tạo delete marker) → chuyển noncurrent version sang Standard-IA → sau đó chuyển tiếp sang Glacier Deep Archive (chế độ Bulk đúng 48 giờ).

S3 Analytics — Storage Class Analysis

Công cụ gợi ý nên chuyển object sang tầng khác sau bao nhiêu ngày. Đây là bước đầu tiên nên làm trước khi viết lifecycle rule.

Đặc điểmChi tiết
Phạm vi phân tíchChỉ cho Standard và Standard-IAkhông áp dụng cho One Zone-IA hay Glacier
Tần suấtBáo cáo cập nhật hàng ngày
Thời gian có dữ liệu24–48 giờ mới bắt đầu thấy kết quả
Phân biệt rõ

S3 Analytics gợi ý nên chuyển khi nào — nó không tự làm gì cả. Lifecycle Rule mới là thứ thực thi. Đề hỏi "làm sao biết số ngày tối ưu để chuyển tầng" → Analytics; "làm sao tự động chuyển" → Lifecycle.

13.2Ra thi nặng

S3 Event Notifications

Cho phép S3 báo cho hệ thống khác biết khi có chuyện xảy ra với object.

  • Các sự kiện: S3:ObjectCreated, S3:ObjectRemoved, S3:ObjectRestore, S3:Replication
  • Lọc được theo tên object (ví dụ chỉ *.jpg).
  • Tạo bao nhiêu sự kiện cũng được.
  • Thường giao trong vài giây, đôi khi mất một phút hoặc lâu hơn.

Ba đích đến cổ điển

ĐíchDùng khi
SNSPhát tán thông báo cho nhiều bên nhận
SQSXếp hàng để xử lý dần, chịu tải cao
LambdaChạy code xử lý ngay lập tức
Điểm hay bị hỏi về quyền

Phải cấp quyền bằng resource-based policy ở phía đích — SNS Access Policy, SQS Access Policy, Lambda Resource Policy — để cho phép S3 gửi sự kiện tới. Không phải gắn IAM role cho S3.

Kết hợp với Amazon EventBridge

Mọi sự kiện S3 đều đẩy được sang EventBridge, và từ đó mở ra nhiều khả năng hơn hẳn:

  • Gửi tới hơn 18 dịch vụ AWS làm đích (Step Functions, Kinesis Data Streams, Firehose…)
  • Lọc nâng cao bằng quy tắc JSON — theo metadata, kích thước object, tên file…
  • Gửi tới nhiều đích cùng lúc
  • Archive, Replay Events và cơ chế giao tin tin cậy
Ví dụ thực tế

Người dùng upload ảnh đại diện lên bucket. Event Notification lọc *.jpg và gọi Lambda tạo thumbnail ba kích cỡ rồi ghi lại vào bucket khác. Toàn bộ chuỗi này không có máy chủ nào chạy thường trực — chỉ tốn tiền khi thật sự có ảnh mới. Đây là ứng dụng kinh điển nhất của S3 Event Notifications và sẽ gặp lại ở phần serverless.

Biến thể chịu tải cao hơn: S3 → SQS → nhóm worker xử lý dần. Nếu có 10.000 ảnh upload cùng lúc, hàng đợi giữ lại và worker xử lý theo tốc độ của mình thay vì bị quá tải.

13.3Ra thi nặng

S3 Performance

Hiệu năng nền

S3 tự động co giãn theo lượng request, độ trễ khoảng 100–200 ms. Giới hạn quan trọng nhất tính theo prefix:

Loại requestSố lượng mỗi giây, mỗi prefix
PUT / COPY / POST / DELETE3.500
GET / HEAD5.500

Không giới hạn số prefix trong một bucket. Đây là mấu chốt: chia dữ liệu ra nhiều prefix là nhân được hiệu năng lên.

bucket/folder1/sub1/file  →  prefix = /folder1/sub1/

Trải đều request qua 4 prefix  →  4 × 5.500 = 22.000 GET mỗi giây

Ba kỹ thuật tăng tốc

Kỹ thuậtCơ chếDùng khi
Multi-Part UploadChia file thành nhiều phần, tải song song, ghép lại ở S3Khuyến nghị trên 100 MB, bắt buộc trên 5 GB
Transfer AccelerationTải lên edge location gần nhất, AWS chuyển tiếp qua mạng nội bộ tới bucketUpload/download xuyên châu lục
Byte-Range FetchYêu cầu một khoảng byte cụ thể của objectTải song song nhiều phần, hoặc chỉ lấy phần đầu file
Multi-Part và Transfer Acceleration kết hợp được

Đề mô tả "file 10 GB, băng thông tốt nhưng kết nối không ổn định" → dùng cả hai: multi-part để phần nào lỗi thì chỉ tải lại phần đó (không phải cả file), transfer acceleration để đi qua mạng xương sống của AWS cho nhanh.

Byte-Range Fetch vs S3 Select — cặp dễ nhầm

Cần đọc 250 byte đầu của 100.000 file để dựng index → Byte-Range Fetch, vì bạn muốn một khoảng byte theo vị trí.

S3 Select lọc theo hàng và cột của dữ liệu có cấu trúc (CSV, JSON) bằng câu SQL — không lấy được "250 byte đầu" của file bất kỳ. Đọc cả file rồi cắt 250 byte thì lãng phí 50 TB băng thông.

Ví dụ thực tế

Một công ty truyền thông ở Việt Nam upload video 4K lên bucket đặt tại Mỹ. Upload trực tiếp mất hàng giờ và hay đứt giữa chừng. Bật Transfer Acceleration: dữ liệu đi vào edge location tại Hà Nội rồi chạy trên mạng riêng của AWS sang Mỹ — nhanh hơn đáng kể. Kết hợp multi-part upload: mạng rớt thì chỉ tải lại phần dở, không mất công cả file.

13.4Ra thi

S3 Select & Glacier Select

Cho phép lọc dữ liệu ngay tại phía server bằng câu SQL đơn giản, thay vì tải cả file về rồi mới lọc.

  • Lọc được theo hàng và cột của dữ liệu có cấu trúc (CSV, JSON, Parquet)
  • Giảm lượng dữ liệu truyền qua mạng và giảm tải CPU phía client
  • Nhanh hơn tới 400% và rẻ hơn tới 80%
Ví dụ thực tế

File CSV 5 GB chứa log giao dịch, bạn chỉ cần các dòng có status = 'FAILED' và hai cột. Không có S3 Select thì phải tải cả 5 GB về máy rồi lọc. Với S3 Select, S3 lọc sẵn và chỉ trả về vài MB — nhanh hơn và rẻ hơn hẳn.

13.5Ra thi

S3 Batch Operations

Thực hiện thao tác hàng loạt trên các object ĐÃ tồn tại chỉ bằng một yêu cầu duy nhất.

Làm được những gì

  • Sửa metadata và thuộc tính của object
  • Copy object giữa các bucket
  • Mã hóa các object chưa được mã hóa
  • Sửa ACL và tag
  • Khôi phục object từ Glacier
  • Gọi Lambda để chạy hành động tùy ý trên từng object

Một job gồm: danh sách object + hành động cần làm + tham số tùy chọn. S3 Batch Operations tự thử lại khi lỗi, theo dõi tiến độ, gửi thông báo khi xong và xuất báo cáo.

Câu ra thi

"Cần mã hóa lại toàn bộ file đang có trong bucket bằng KMS để đáp ứng yêu cầu tuân thủ, cách hiệu quả và tiết kiệm nhất" → S3 Batch Operations. Lifecycle Rules chỉ chuyển tầng và xóa chứ không mã hóa; Replication tạo bản sao chứ không sửa dữ liệu tại chỗ.

Bộ ba đi cùng nhau

S3 Inventory tạo danh sách object → S3 Select lọc ra đúng những object cần xử lý → S3 Batch Operations thực thi hành động trên danh sách đó. Đề có thể mô tả cả chuỗi này.

13.6Ra thi

S3 Storage Lens

Công cụ nhìn toàn cảnh: phân tích và tối ưu lưu trữ S3 trên toàn bộ AWS Organization — phát hiện bất thường, tìm chỗ lãng phí, kiểm tra việc tuân thủ thực hành bảo vệ dữ liệu.

  • Gom dữ liệu theo tổ chức, tài khoản, region, bucket hoặc prefix.
  • dashboard mặc định do AWS dựng sẵn — không xóa được nhưng tắt được; bạn cũng tự tạo dashboard riêng.
  • Xuất metrics hàng ngày ra một bucket S3 dưới dạng CSV hoặc Parquet.

Các nhóm metrics

NhómTrả lời câu hỏi
SummaryBucket nào đang phình nhanh nhất?
Cost-OptimizationCòn bao nhiêu phiên bản cũ và multi-part upload dang dở quá 7 ngày?
Data-ProtectionBucket nào chưa bật versioning, MFA Delete, mã hóa KMS, replication?
Access-ManagementCấu hình Object Ownership ra sao?
EventBucket nào đã bật Event Notifications?
PerformanceBucket nào đã bật Transfer Acceleration?
ActivityLượng request, byte tải xuống ra sao?
Detailed Status CodeBao nhiêu lỗi 403 Forbidden, bao nhiêu 200 OK?
Free MetricsAdvanced Metrics (trả phí)
Phạm viKhoảng 28 usage metrics, có sẵn cho mọi khách hàngThêm Activity, Advanced Cost Optimization, Advanced Data Protection, Status Code
Lưu dữ liệu truy vấn14 ngày15 tháng
KhácĐẩy metrics sang CloudWatch không tính thêm phí, gom metrics theo prefix
Ví dụ thực tế

Một tập đoàn có 40 tài khoản AWS và hàng nghìn bucket. Đội bảo mật cần trả lời câu hỏi "bucket nào chưa bật versioning và chưa mã hóa?" — kiểm tra tay là bất khả thi. Storage Lens với nhóm Data-Protection Metrics liệt kê ngay danh sách đó cho toàn bộ tổ chức trong một dashboard.

13.7Ít ra thi

S3 Requester Pays

Bình thường chủ bucket trả toàn bộ chi phí lưu trữ và truyền dữ liệu. Với Requester Pays, người gửi yêu cầu là người trả tiền cho request và cho lượng dữ liệu tải xuống.

  • Hữu ích khi bạn chia sẻ tập dữ liệu lớn cho các tài khoản khác.
  • Chủ bucket vẫn trả tiền lưu trữ; bên yêu cầu trả tiền truyền dữ liệu.
  • Người yêu cầu bắt buộc phải đăng nhập AWS — không dùng được với truy cập ẩn danh.
Ví dụ thực tế

Một viện nghiên cứu công bố tập dữ liệu vệ tinh 200 TB cho cộng đồng. Nếu để chế độ thường, mỗi lần ai đó tải về là viện trả tiền băng thông — có thể lên tới hàng chục nghìn đô. Bật Requester Pays: ai muốn dùng thì tự trả phí tải, viện chỉ chịu chi phí lưu trữ.

13.8Chốt bài

Map từ khóa & cheat sheet

Đề nhắc đến…Nghĩ ngay tới
"được thông báo khi có object upload"S3 Event Notifications
"tự động chuyển object giữa các tầng"Lifecycle Rules — Transition
"xóa phiên bản cũ để giảm chi phí"Lifecycle Rules — Expiration
"dọn phần multi-part upload dang dở"Lifecycle Rules
"biết nên chuyển tầng sau bao nhiêu ngày"S3 Analytics (chỉ Standard và Standard-IA)
"đọc 250 byte đầu của mỗi file"Byte-Range Fetch
"lọc hàng và cột của CSV bằng SQL"S3 Select
"file lớn, mạng không ổn định"Multi-Part Upload + Transfer Acceleration
"lỗi khi upload file 25 GB"Multi-Part Upload
"mã hóa lại toàn bộ file đang có"S3 Batch Operations
"chạy Lambda trên từng object trong danh sách"S3 Batch Operations
"nhìn toàn cảnh lưu trữ cả tổ chức"S3 Storage Lens
"bucket nào chưa bật versioning/mã hóa"Storage Lens — Data-Protection Metrics
"chia sẻ dataset lớn, người tải tự trả phí"Requester Pays
"cần lọc và định tuyến sự kiện nâng cao"EventBridge

Cheat sheet 90 giây

  • Lifecycle có hai loại hành động: Transition (chuyển tầng) và Expiration (xóa — kể cả phiên bản cũ và multi-part dang dở).
  • S3 Analytics chỉ gợi ý, không tự làm; chỉ hỗ trợ Standard và Standard-IA; cần 24–48 giờ mới có dữ liệu.
  • Event Notifications gửi tới SNS · SQS · Lambda, cần resource-based policy ở phía đích.
  • EventBridge cho lọc JSON nâng cao, hơn 18 đích, có archive và replay.
  • Hiệu năng: 3.500 PUT · 5.500 GET mỗi giây mỗi prefix, không giới hạn số prefix.
  • Multi-part: khuyến nghị trên 100 MB, bắt buộc trên 5 GB.
  • Transfer Acceleration đi qua edge location; kết hợp được với multi-part.
  • Byte-Range Fetch = lấy khoảng byte theo vị trí. S3 Select = lọc hàng/cột bằng SQL.
  • Batch Operations tác động lên object đã tồn tại: mã hóa lại, copy, sửa tag, gọi Lambda.
  • Storage Lens: toàn tổ chức, free giữ 14 ngày, advanced giữ 15 tháng.
  • Requester Pays: bên tải trả phí truyền dữ liệu, bắt buộc đăng nhập AWS.
Sáu câu tự kiểm tra trước khi qua file quiz

1. Muốn xóa tự động các phiên bản cũ trong bucket đã bật versioning. Dùng gì?

2. Muốn biết nên chuyển object sang Standard-IA sau bao nhiêu ngày. Dùng gì?

3. Cần đọc 250 byte đầu của 100.000 file. Dùng gì?

4. Cần mã hóa lại toàn bộ file đang có bằng KMS. Dùng gì?

5. Bucket có một prefix, cần 12.000 GET mỗi giây. Làm sao?

6. Upload file 10 GB qua kết nối chập chờn. Làm sao?


Đáp án: (1) Lifecycle Rules — Expiration Actions. (2) S3 Analytics (Storage Class Analysis). (3) Byte-Range Fetch — S3 Select chỉ lọc hàng/cột của dữ liệu có cấu trúc. (4) S3 Batch Operations. (5) Chia dữ liệu ra nhiều prefix — mỗi prefix cho 5.500 GET/giây nên cần ít nhất 3 prefix. (6) Multi-Part Upload kết hợp Transfer Acceleration.