Amazon S3 – Bài 16

Trong bài viết này mình sẽ cùng các bạn tìm hiểu chi tiết về Amazon S3 – một trong những dịch vụ cơ bản của AWS. Mình sẽ cố gắng giải thích một cách dễ hiểu nhất, kể cả bạn chưa biết gì về cloud vẫn có thể nắm được nha.

1. Amazon S3 là gì?

Amazon S3 (Simple Storage Service) là dịch vụ lưu trữ dạng “object” của AWS, nghĩa là bạn có thể upload đủ loại file lên – từ hình ảnh, video, tài liệu, file backup, đến dữ liệu cho data lake, machine learning,… Dịch vụ này được thiết kế để lưu trữ với độ bền rất cao (99.999999999% – nghe hơi nhiều số 9) và khả năng mở rộng thì gần như vô hạn.

2. Tại sao nên dùng Amazon S3

Thay vì phải gắn USB hay mua ổ cứng, bạn có thể “quăng” dữ liệu lên cloud, đảm bảo an toàn, truy cập dễ dàng từ mọi nơi, lại không lo mất mát. Một số ứng dụng thực tế của S3:

  • Sao lưu & khôi phục dữ liệu: Gặp sự cố thì lấy lại cực nhanh.
  • Lưu trữ dài hạn: Dịch vụ S3 Glacier cung cấp lưu trữ chi phí thấp, phù hợp với nhu cầu lưu trữ ít truy cập. Kiểu như archive mấy file cũ ít dùng nhưng vẫn cần giữ lại.
  • Phân phối nội dung: Lưu trữ ảnh, video để truyền nhanh đến người dùng toàn cầu.
  • Phân tích dữ liệu lớn: Làm data lake lưu trữ hàng trăm terabyte.
  • Hosting website tĩnh: HTML, CSS, JS gì cũng chơi được luôn, không cần server.

3. Cấu trúc cơ bản của S3: Buckets và Objects

3.1. Buckets

Bạn cứ hình dung bucket giống như thư mục gốc để chứa dữ liệu. Mỗi file bạn upload đều nằm trong một bucket.

  • Tên bucket phải là duy nhất toàn cầu.
  • Không được có ký tự in hoa, gạch dưới (_), hoặc giống địa chỉ IP.

3.2. Objects

  • Objects là các tệp được lưu trữ trong buckets và được xác định bằng một key.
    • Key là đường dẫn đầy đủ đến tệp, bao gồm cả các thư mục ảo. Ví dụ:
      • Key: my-folder/another-folder/my-file.txt
      • Trong đó, my-folder/another-folder/ là prefix, còn my-file.txt là tên tệp.
  • Metadata và Tags:
    • Metadata là cặp key-value do hệ thống hoặc người dùng tạo để cung cấp thông tin bổ sung về tệp.
    • Tags (tối đa 10 cặp key-value) rất hữu ích cho bảo mật và quản lý vòng đời dữ liệu.
  • Kích thước tối đa:
    • Một tệp có thể lớn tối đa 5 terabytes. Nếu tệp lớn hơn 5 gigabytes, bạn cần sử dụng tính năng multi-part upload để tải lên theo từng phần nhỏ hơn.

4. Các lớp lưu trữ (Storage Classes)

S3 không chỉ là “lưu là xong”. AWS chia thành nhiều loại lưu trữ để bạn tối ưu chi phí:

Lớp Mô tả Khi nào dùng?
S3 Standard Truy cập thường xuyên Dữ liệu chính, thường dùng
S3 IA Ít truy cập Sao lưu, DR
One Zone IA 1 AZ, rẻ hơn IA Dữ liệu không quan trọng
Glacier Truy cập lâu Lưu trữ dài hạn
Glacier Deep Archive Truy xuất sau 12–48h Dữ liệu cũ cần giữ
Intelligent-Tiering Tự động chuyển lớp Dữ liệu không đoán trước được tần suất

4.1. Amazon S3 Standard

  • Tính năng:
    • Truy cập dữ liệu thường xuyên.
    • Độ trễ thấp, thông lượng cao.
    • Tính sẵn sàng: 99.99%.
  • Ứng dụng:
    • Phân tích dữ liệu lớn.
    • Ứng dụng di động và game.
    • Phân phối nội dung.

4.2. Amazon S3 Standard-Infrequent Access (IA)

  • Tính năng:
    • Dữ liệu ít được truy cập nhưng cần truy xuất nhanh khi cần.
    • Chi phí lưu trữ thấp hơn S3 Standard.
    • Có chi phí truy xuất dữ liệu.
    • Tính sẵn sàng: 99.9%.
  • Ứng dụng:
    • Sao lưu dữ liệu.
    • Phục hồi sau thảm họa (Disaster Recovery).

4.3. Amazon S3 One Zone-Infrequent Access (One Zone-IA)

  • Tính năng:
    • Lưu trữ trong một vùng sẵn sàng (AZ) duy nhất.
    • Chi phí thấp hơn Standard-IA.
    • Nguy cơ mất dữ liệu nếu AZ bị lỗi.
    • Tính sẵn sàng: 99.5%.
  • Ứng dụng:
    • Lưu trữ bản sao dữ liệu thứ cấp.
    • Dữ liệu có thể tái tạo dễ dàng.

4.4. Glacier Instant Retrieval

  • Tính năng:
    • Truy xuất trong mili-giây.
    • Dành cho dữ liệu truy cập theo quý.
    • Thời gian lưu trữ tối thiểu: 90 ngày.
  • Ứng dụng: Sao lưu dữ liệu cần truy xuất nhanh.

4.5. Glacier Flexible Retrieval

  • Tính năng:
    • Cung cấp các tùy chọn truy xuất:
      • Expedited: 1–5 phút.
      • Standard: 3–5 giờ.
      • Bulk: 5–12 giờ (miễn phí).
    • Thời gian lưu trữ tối thiểu: 90 ngày.
  • Ứng dụng: Lưu trữ dữ liệu không yêu cầu truy xuất nhanh.

4.6. Glacier Deep Archive

  • Tính năng:
    • Chi phí thấp nhất.
    • Tùy chọn truy xuất:
      • Standard: 12 giờ.
      • Bulk: 48 giờ.
    • Thời gian lưu trữ tối thiểu: 180 ngày.
  • Ứng dụng: Lưu trữ dữ liệu dài hạn không thường xuyên truy cập.

4.7. Amazon S3 Intelligent-Tiering

  • Tính năng:
    • Tự động chuyển đổi giữa các lớp lưu trữ dựa trên tần suất truy cập.
    • Không mất phí truy xuất dữ liệu.
    • Các tầng lưu trữ:
      • Frequent Access Tier: Mặc định cho dữ liệu được truy cập thường xuyên.
      • Infrequent Access Tier: Dữ liệu không truy cập trong 30 ngày.
      • Archive Instant Access Tier: Dữ liệu không truy cập trong 90 ngày.
      • Deep Archive Access Tier: Dữ liệu không truy cập từ 180–700+ ngày.
  • Ứng dụng: Tiết kiệm chi phí và giảm thiểu quản lý dữ liệu thủ công.

5. Amazon S3 Security

5.1. User-Based Security

Bảo mật người dùng trong Amazon S3 được thực hiện thông qua IAM Policies.

5.2. Resource-Based Security

Ngoài bảo mật dựa trên người dùng, Amazon S3 cung cấp cơ chế bảo mật dựa trên tài nguyên, bao gồm:

  • S3 Bucket Policies: Là các quy tắc áp dụng cho toàn bộ bucket, có thể cấu hình trực tiếp từ giao diện quản lý của S3.
    • Cho phép truy cập từ tài khoản khác (Cross-Account Access).
    • Thiết lập các bucket công khai (public).
  • Access Control List (ACL):
    • Object ACL: Điều chỉnh quyền chi tiết cho từng đối tượng.
    • Bucket ACL: Ít phổ biến và thường bị vô hiệu hóa.

Bucket Policy trong S3 được viết dưới dạng JSON, bao gồm:

  • Resource: Xác định bucket hoặc đối tượng mà chính sách áp dụng.
  • Effect: Quy định Allow hoặc Deny hành động cụ thể.
  • Action: Chỉ định các API được phép hoặc từ chối (ví dụ: GetObject).
  • Principal: Xác định ai được phép thực hiện hành động (ví dụ: * cho phép tất cả).

6. Amazon S3 Encryption

6.1. Mã Hóa Phía Máy Chủ (Server-Side Encryption – SSE)

Mã hóa phía máy chủ được quản lý bởi Amazon S3 và có ba loại chính:

SSE-S3

  • Mô tả: Sử dụng khóa mã hóa được quản lý bởi Amazon S3. Loại mã hóa này được bật mặc định cho tất cả các đối tượng và bucket mới.
  • Cách hoạt động:
    • Người dùng tải tệp lên với tiêu đề x-amz-server-side-encryption: "AES256".
    • Amazon S3 sử dụng khóa AES-256 do chính AWS quản lý để mã hóa đối tượng.
  • Ưu điểm: Không cần quản lý khóa, dễ dàng triển khai.

SSE-KMS

  • Mô tả: Sử dụng khóa được quản lý thông qua AWS Key Management Service (KMS).
  • Cách hoạt động:
    • Người dùng tải tệp lên với tiêu đề x-amz-server-side-encryption: "aws:kms".
    • Amazon S3 sử dụng khóa từ KMS để mã hóa đối tượng.
    • Cần có quyền truy cập vào khóa KMS để đọc dữ liệu đã mã hóa.
  • Ưu điểm:
    • Quản lý khóa linh hoạt hơn.
    • Có thể theo dõi việc sử dụng khóa qua AWS CloudTrail.
  • Nhược điểm: Giới hạn API của KMS có thể ảnh hưởng đến hiệu suất trong các trường hợp tải dữ liệu lớn.

SSE-C

  • Mô tả: Sử dụng khóa mã hóa do khách hàng tự quản lý và cung cấp.
  • Cách hoạt động:
    • Người dùng truyền khóa mã hóa thông qua tiêu đề HTTP trong quá trình tải tệp lên.
    • Amazon S3 mã hóa đối tượng nhưng không lưu trữ khóa.
  • Ưu điểm: Khách hàng hoàn toàn kiểm soát khóa.
  • Nhược điểm: Phải sử dụng HTTPS để đảm bảo an toàn khi truyền khóa.

6.2. Mã Hóa Phía Khách Hàng (Client-Side Encryption)

  • Mô tả: Dữ liệu được mã hóa trước khi tải lên S3. Mã hóa và quản lý khóa hoàn toàn do phía khách hàng thực hiện.
  • Cách hoạt động:
    • Khách hàng mã hóa dữ liệu bằng khóa riêng trước khi tải lên.
    • Dữ liệu được lưu trữ ở dạng mã hóa trên S3.
    • Khi cần truy cập, dữ liệu sẽ được tải xuống và giải mã ở phía khách hàng.
  • Ưu điểm: Hoàn toàn kiểm soát vòng đời của khóa.
  • Nhược điểm: Yêu cầu thêm công cụ hoặc thư viện mã hóa như AWS SDK.

6.3. Mã Hóa Khi Truyền Dữ Liệu (Encryption in Transit)

  • Khái niệm: Mã hóa dữ liệu trong quá trình truyền giữa máy khách và Amazon S3.
  • Phương thức:
    • HTTPS: Cung cấp kết nối an toàn, mã hóa dữ liệu khi truyền.
    • Bucket Policy: Có thể ép buộc sử dụng HTTPS bằng cách thêm chính sách bucket với điều kiện aws:SecureTransport: "false" để từ chối các yêu cầu không được mã hóa.

7. Versioning Amazon S3

Bật tính năng này thì mỗi khi bạn sửa file, S3 sẽ giữ lại cả phiên bản cũ và mới. Rất hữu ích nếu bạn lỡ xoá nhầm, hoặc cần khôi phục bản trước đó.

Ví dụ:

  • Bạn upload file index.html lần đầu → một phiên bản đầu tiên được tạo.
  • Bạn chỉnh sửa và upload lại file index.html → một phiên bản mới được lưu, trong khi phiên bản cũ vẫn còn.

Lưu ý:

  • Các đối tượng đã tồn tại trước khi bật versioning sẽ có Version ID = null.
  • Tạm dừng versioning (Suspend) không xóa các phiên bản đã có. Tuy nhiên, nếu versioning bị tạm dừng, các upload mới sẽ ghi đè lên object cũ mà không tạo phiên bản mới.
  • Tính năng versioning có thể làm tăng chi phí lưu trữ vì tất cả các phiên bản đều được giữ lại. Nên cân nhắc sử dụng lifecycle policy để dọn dẹp định kỳ.

8. Quy tắc lifecycle

Quy tắc lifecycle giúp tự động hóa quy trình quản lý dữ liệu trên S3. Các quy tắc này bao gồm:

8.1. Transition Action

Chuyển đổi đối tượng sang lớp lưu trữ khác sau một khoảng thời gian.
Ví dụ:

  • Chuyển đối tượng sang Standard-IA sau 60 ngày.
  • Chuyển đối tượng sang Glacier sau 6 tháng.

8.2. Expiration Action

Xóa hoặc hết hạn đối tượng sau một khoảng thời gian.

Ví dụ:

  • Xóa log file sau 365 ngày.
  • Xóa các phiên bản cũ nếu versioning được kích hoạt.
  • Xóa các phần tải lên không hoàn chỉnh sau 2 tuần.

Áp dụng quy tắc theo tiêu chí

  • Prefix: Áp dụng cho một phần cụ thể của bucket.
  • Tags: Áp dụng cho các đối tượng có tag cụ thể, ví dụ: chỉ thực hiện với dữ liệu của phòng tài chính.

9. Amazon S3 Replication

Amazon S3 Replication là một tính cho phép bạn tự động sao chép đối tượng từ một S3 bucket này sang bucket khác, giúp tăng cường khả năng bảo vệ dữ liệu, phân tán dữ liệu địa lý và tuân thủ chính sách doanh nghiệp.

9.1. Các dạng replication chính

Loại Replication Tên gọi Mục đích chính
Cross-Region Replication CRR Sao chép dữ liệu giữa các vùng (regions) khác nhau
Same-Region Replication SRR Sao chép dữ liệu trong cùng một vùng

9.2. Điều kiện cấu hình Replication

  • Cả bucket nguồn và bucket đích phải bật Versioning. Nếu chưa bật, replication sẽ không hoạt động.
  • Bucket đích có thể thuộc cùng tài khoản AWS hoặc tài khoản khác, phù hợp cho các tình huống như chia sẻ dữ liệu giữa bộ phận hoặc giữa các khách hàng.
  • Replication là bất đồng bộ (asynchronous) — việc sao chép không diễn ra theo thời gian thực mà thực hiện trong nền.
  • Cần tạo IAM Role dành riêng cho replication, với quyền:
    • Đọc từ bucket nguồn
    • Ghi vào bucket đích
    • (Tùy chọn) Quản lý thẻ (tagging), ACL nếu cần

9.3. Các Trường Hợp Sử Dụng Thực Tế

Cross-Region Replication (CRR)

  • Tuân thủ dữ liệu theo khu vực (data sovereignty)
  • Khả năng phục hồi khu vực (Disaster Recovery): chuyển sang vùng khác khi vùng chính gặp sự cố
  • Phân phối nội dung toàn cầu: lưu trữ dữ liệu gần người dùng để giảm độ trễ
  • Sao chép sang tài khoản khác để tách biệt môi trường sản xuất và sao lưu

Same-Region Replication (SRR)

  • Tổng hợp log từ nhiều bucket vào một bucket duy nhất để phục vụ phân tích
  • Giữ cho môi trường kiểm thử luôn đồng bộ với môi trường sản xuất
  • Tạo bản sao để giám sát hoặc kiểm tra dữ liệu nhạy cảm

10. S3 Event Notifications

Event Notifications trong Amazon S3 được kích hoạt khi các sự kiện cụ thể xảy ra trong bucket của bạn. Một số ví dụ về sự kiện bao gồm:

  • Tạo đối tượng: Khi một đối tượng mới được tải lên S3.
  • Xóa đối tượng: Khi một đối tượng bị xóa khỏi S3.
  • Khôi phục đối tượng: Khi một đối tượng được khôi phục từ Glacier.
  • Replication: Khi dữ liệu được sao chép từ bucket này sang bucket khác.

11. S3 Access Logs

Amazon S3 Access Logs là một tính năng quan trọng hỗ trợ ghi lại mọi truy cập đến một S3 bucket, bao gồm cả truy cập thành công và truy cập bị từ chối. Đây là một công cụ không thể thiếu trong các hệ thống yêu cầu tuân thủ nghiêm ngặt về bảo mật, giám sát hoặc điều tra sự cố truy cập.

Cách hoạt động:

  1. Khi bạn bật Access Logging cho một bucket:
  2. Mỗi request đến bucket đó (PUT, GET, DELETE, HEAD, v.v.) sẽ được ghi lại dưới dạng một dòng log.
  3. Các dòng log này sẽ được lưu vào một bucket đích khác (target bucket), cũng nằm trong cùng một region.
  4. Dữ liệu log sẽ có định dạng chuẩn, bao gồm thông tin như:
    • IP của client
    • Time request
    • Request URI
    • Response status
    • Error code (nếu có)
    • User Agent
    • Requester (IAM role hoặc anonymous user)…

12. S3 Performance

12.1. Thời gian phản hồi và số lượng yêu cầu

  • Thời gian phản hồi: S3 có thời gian phản hồi rất thấp, chỉ từ 100-200ms để gửi byte đầu tiên.
  • Số lượng yêu cầu mỗi giây:
    • 3,500 PUT/COPY/POST/DELETE mỗi giây trên mỗi prefix.
    • 5,500 GET/HEAD mỗi giây trên mỗi prefix.

12.2. Hiểu về prefix trong S3

Prefix là phần nằm giữa tên bucket và tên file.

Ví dụ: Đối với một file nằm tại bucket/folder1/sub1/file, prefix sẽ là /folder1/sub1/.

  • Mỗi prefix có thể xử lý độc lập số lượng yêu cầu nêu trên.
  • Bằng cách sử dụng nhiều prefix khác nhau, bạn có thể tăng số lượng yêu cầu xử lý đồng thời trong bucket.
  • Ví dụ: Nếu bạn phân bổ đều tải trên 4 prefix, bạn có thể đạt tới 22,000 yêu cầu GET/HEAD mỗi giây.

13. Cách Tối Ưu Hóa Hiệu Suất S3

13.1. Multi-Part Upload

Multi-Part Upload giúp tăng tốc tải lên các file lớn bằng cách chia file thành các phần nhỏ và tải lên song song.

  • Khuyến nghị:
    • Dùng Multi-Part Upload cho file lớn hơn 100 MB.
    • Bắt buộc dùng Multi-Part Upload cho file lớn hơn 5 GB.
  • Cách hoạt động:
    • File được chia thành các phần nhỏ.
    • Các phần này được tải lên đồng thời.
    • S3 sẽ tự động ghép các phần lại thành một file hoàn chỉnh.

13.2. S3 Transfer Acceleration

Tăng tốc tải lên và tải xuống bằng cách sử dụng AWS Edge Locations.

  • Dữ liệu được tải qua edge location gần nhất, sau đó truyền qua mạng nội bộ nhanh của AWS thay vì internet công cộng.
  • Lợi ích:
    • Tối ưu hóa tốc độ truyền dữ liệu trên khoảng cách xa.
    • Tương thích với Multi-Part Upload.
  • Ví dụ: Tải file từ Mỹ lên bucket ở Úc:
    • Dữ liệu được truyền tới edge location tại Mỹ.
    • Sau đó, edge location chuyển dữ liệu tới bucket ở Úc qua mạng nội bộ AWS.

13.3. Byte-Range Fetches

Cách tiếp cận này tối ưu hóa tải xuống bằng cách chỉ lấy các phần cần thiết của file hoặc tải xuống song song.

  • Ứng dụng:
    • Tải các phần nhỏ của file để xử lý riêng biệt.
    • Tăng tốc tải xuống file lớn bằng cách chia thành các byte range và tải song song.
  • Ví dụ:
    • Nếu file có phần header chứa thông tin quan trọng, bạn chỉ cần tải xuống phần đầu tiên (ví dụ: 50 bytes) thay vì toàn bộ file.

Lab01: tạo bucket Amazon S3

1. Tạo bucket mới

  1. Truy cập dịch vụ Amazon S3 từ AWS Console.
  2. Chọn Create bucket.
  3. Chọn Region (ví dụ: Europe – Stockholm eu-north-1).
  4. Nhập Bucket name, tên này phải là duy nhất trên toàn cầu (ví dụ: yourname-demo-s3-v1).
  5. Nếu có tuỳ chọn Bucket type, chọn General purpose. Nếu không có thì mặc định là loại này.
  6. Object ownership: để mặc định là ACLs disabled.
  7. Block Public Access: giữ mặc định là Enabled (chặn toàn bộ truy cập công khai).
  8. Versioning: chọn Disabled tạm thời.
  9. Encryption: chọn S3-managed keys (SSE-S3) và bật Bucket Key.
  10. Nhấn Create bucket.

2. Upload tệp vào bucket

  1. Mở bucket vừa tạo.
  2. Nhấn Upload > Add files, sau đó chọn tệp coffee.jpg.
  3. Xác nhận các thông số và nhấn Upload.

3. Truy cập tệp đã upload

  1. Sau khi upload thành công, nhấn vào tệp coffee.jpg.
  2. Trong tab Object overview, có hai loại URL:
    • Public URL: Mặc định sẽ bị Access Denied do bucket đang chặn truy cập công khai.
    • Pre-signed URL: Được AWS sinh riêng theo phiên làm việc, cho phép truy cập tạm thời dựa trên thông tin xác thực của bạn.

Lưu ý: Public URL sẽ không hoạt động nếu chưa cấp quyền truy cập công khai cho object hoặc bucket.

4. Tạo folder trong bucket

  1. Trong bucket, nhấn Create folder và đặt tên, ví dụ: images.
  2. Bên trong folder vừa tạo, bạn có thể upload thêm tệp (ví dụ: beach.jpg).

5. Xoá tệp hoặc folder

  1. Đánh dấu vào tệp hoặc thư mục cần xoá.
  2. Nhấn Delete, sau đó nhập xác nhận permanently delete để xoá vĩnh viễn.

Lab02: Tạo Bucket Policy public access

Bước 1: Cho phép Public Access tại mức Bucket

  1. Truy cập vào bucket chứa coffee.jpg.
  2. Chọn tab Permissions.
  3. Trong mục Block public access (bucket settings):
    • Nhấn Edit.
    • Bỏ chọn tất cả các ô đang chặn truy cập công khai.
    • Xác nhận cảnh báo bảo mật: chỉ thực hiện nếu bạn hiểu rủi ro và muốn công khai dữ liệu.
    • Nhấn Save changes.

Bước 2: Tạo Bucket Policy công khai

  1. Kéo xuống mục Bucket Policy.
  2. Sử dụng AWS Policy Generator:
    Truy cập: https://awspolicygen.s3.amazonaws.com/policygen.html
  3. Cấu hình:
    • Select Type of Policy: S3 Bucket Policy
    • Effect: Allow
    • Principal: * (cho phép tất cả mọi người)
    • Actions: GetObject
    • ARN: arn:aws:s3:::your-bucket-name/*
      (thay your-bucket-name bằng tên bucket thực tế)
  4. Nhấn Add Statement, sau đó nhấn Generate Policy.
  5. Copy nội dung policy và dán vào mục Bucket Policy trong console S3.
  6. Ví dụ nội dung policy:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "PublicReadGetObject",
          "Effect": "Allow",
          "Principal": "*",
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::your-bucket-name/*"
        }
      ]
    }
  7. Nhấn Save.

Bước 3: Kiểm tra truy cập công khai

  1. Truy cập lại tab Objects và mở coffee.jpg.
  2. Tìm Object URL ở phần Object overview.
  3. Mở URL trong trình duyệt. Nếu thành công, ảnh sẽ hiển thị công khai.

Lab03: Amazon S3 Replication

Mục tiêu

  • Thiết lập replication giữa hai S3 buckets
  • Thực hành cả CRR (Cross-Region Replication) và SRR (Same-Region Replication)
  • Kiểm tra các hành vi: replication, delete marker, versioning

Bước 1: Tạo Buckets và Bật Versioning

Bucket nguồn (origin)

  • Tên: s3-stephane-bucket-origin-v2
  • Region: eu-west-1
  • Bật Versioning

Bucket đích (replica)

  • Tên: s3-stephane-bucket-replica-v2
  • Region: us-east-1 (cho CRR) hoặc eu-west-1 (cho SRR)
  • Bật Versioning

Bước 2: Tạo replication rule

Thực hiện trên bucket nguồn:

  1. Vào tab Management
  2. Chọn Create replication rule
  3. Cấu hình:
    • Rule name: DemoReplicationRule
    • Status: Enabled
    • Rule scope: Apply to all objects
    • Destination: chọn bucket đích
    • IAM role: chọn Create new role

Tùy chọn nâng cao:

  • Replicate delete markers: Chọn nếu bạn muốn đồng bộ việc “xóa mềm”
  • Replicate existing objects: Không được hỗ trợ trực tiếp (dùng S3 Batch Operations nếu cần)

Bước 3: Kiểm tra hoạt động replication

  1. Tải file coffee.jpg lên bucket nguồn
  2. Đợi vài giây → Kiểm tra bucket đích → file coffee.jpg đã được replicate?
  3. Kiểm tra Version ID giữa 2 buckets phải giống nhau

Bước 4: Kiểm tra hành vi Delete Marker

  1. Xóa coffee.jpg từ bucket nguồn (không chọn version cụ thể)
  2. Kiểm tra bucket đích:
    • Nếu bật replicate delete marker → file cũng biến mất
    • Dùng Show versions để xác minh delete marker tồn tại ở cả hai bên

Kiểm tra không replicate hard delete

  1. Chọn một phiên bản cụ thể (Version ID) của beach.jpg trong bucket nguồn
  2. Chọn Delete permanently
  3. Kiểm tra bucket đích → Object vẫn còn do S3 không replicate hành vi “xóa cứng

Lab04: Configure Amazon S3 Event Notifications to send object-created events to an SQS queue

Mục tiêu

Thiết lập hệ thống để tự động gửi thông báo đến hàng đợi Amazon SQS mỗi khi có đối tượng mới được tạo trong S3 bucket. Đây là bước quan trọng trong các workflow tự động hóa như xử lý ảnh, ghi log, tạo thumbnail,…

Các bước thực hiện

Bước 1: Tạo S3 Bucket

  1. Truy cập AWS S3 Console.
  2. Chọn Create bucket.
  3. Cấu hình:
    • Bucket name: stephane-v3-events-notifications
    • Region: EU (Ireland)
  4. Nhấn Create bucket.

Bước 2: Tạo hàng đợi SQS

  1. Truy cập AWS SQS Console.
  2. Chọn Create queue.
  3. Chọn loại Standard queue.
  4. Đặt tên: DemoS3Notification.
  5. Giữ các thiết lập mặc định và nhấn Create queue.

Bước 3: Cấp quyền cho S3 gửi tin nhắn đến SQS

  1. Trong giao diện SQS, chọn hàng đợi DemoS3Notification.
  2. Chọn Access policy > Edit.
  3. Mở AWS Policy Generator.
  4. Cấu hình như sau:
    • Type: SQS Queue Policy
    • Effect: Allow
    • Principal: *
    • Action: SendMessage
    • ARN: Dán ARN của hàng đợi (hiển thị trong SQS Console)
  5. Nhấn Add Statement > Generate Policy, sau đó copy toàn bộ JSON và dán vào phần Access Policy.
  6. Nhấn Save.

Bước 4: Cấu hình Event Notification trong S3

  1. Vào lại bucket stephane-v3-events-notifications.
  2. Chọn tab Properties, kéo xuống phần Event notifications.
  3. Chọn Create event notification:
    • Name: DemoEventNotification
    • Event types: Chọn All object create events
    • Destination: SQS queue
    • Queue: chọn DemoS3Notification
  4. Nhấn Save changes.

Bước 5: Kiểm tra hoạt động

  1. Quay lại bucket, chọn Upload > Add files, tải lên một tệp ví dụ (coffee.jpg).
  2. Truy cập lại hàng đợi DemoS3Notification.
  3. Chọn Send and receive messages > Poll for messages.
  4. Kiểm tra tin nhắn nhận được, ví dụ:
    • eventName: ObjectCreated:Put
    • key: coffee.jpg

Lab05: Enable and Validate Amazon S3 Access Logs

Thiết lập hệ thống ghi log truy cập vào một S3 bucket (source bucket) bằng cách ghi log vào một bucket khác (logging bucket). Tính năng này giúp theo dõi mọi yêu cầu đến bucket, kể cả thành công và bị từ chối.

Các bước thực hiện

Bước 1: Tạo Logging Bucket

  1. Truy cập Amazon S3 Console.
  2. Chọn Create bucket.
  3. Cấu hình:
    • Bucket name: stefan-access-log-v3
    • Region: EU (Ireland) – eu-west-1
  4. Giữ nguyên các thiết lập mặc định khác.
  5. Nhấn Create bucket.

Bước 2: Bật Access Logging trên Source Bucket

  1. Mở tab mới, quay lại console S3.
  2. Chọn một bucket bạn muốn theo dõi (source bucket).
  3. Vào Properties > Server access logging.
  4. Nhấn Edit.
  5. Bật Enable logging.
  6. Cấu hình:
    • Target bucket: chọn bucket stefan-access-log-v3
    • Target prefix (tuỳ chọn): để trống hoặc điền logs/ nếu muốn gom log vào thư mục riêng
    • Log object key format: để mặc định (chọn tùy chọn đầu tiên)
  7. Nhấn Save changes.

Lưu ý: AWS sẽ tự động cập nhật Bucket Policy cho logging bucket để cho phép dịch vụ S3 ghi log vào đó.

Bước 3: Gây sự kiện để tạo log

  1. Quay lại source bucket.
  2. Tải lên một tệp bất kỳ, ví dụ: coffee.jpg.
  3. Truy cập hoặc preview tệp để tạo hoạt động trên bucket.

Bước 4: Kiểm tra Logging Bucket

  1. Chờ 5–60 phút để log được ghi.
  2. Truy cập bucket stefan-access-log-v3.
  3. Refresh để kiểm tra nếu đã có log file xuất hiện.
  4. Các tệp log sẽ có định dạng tên file kiểu:
    <source-bucket-name>_<datetime>_<random-string>

Bước 5: Kiểm tra nội dung log

  1. Nhấp vào tệp log để mở nội dung.
  2. Mỗi dòng là một bản ghi truy cập.
  3. Các trường thông tin bao gồm:
    • IP người dùng
    • Thời gian truy cập
    • API gọi đến (GET, PUT, DELETE…)
    • Tên bucket và object key
    • Mã phản hồi HTTP
    • Và nhiều thông tin khác

14. Kết luận

Amazon S3 là giải pháp lưu trữ mạnh mẽ, linh hoạt và phù hợp cho mọi nhu cầu từ lưu trữ cơ bản đến các trường hợp sử dụng phức tạp. Với khả năng mở rộng vô hạn, S3 giúp doanh nghiệp tối ưu hóa chi phí và đảm bảo dữ liệu luôn an toàn.

Hãy bắt đầu khám phá Amazon S3 ngay trên giao diện console của AWS để hiểu rõ hơn cách dịch vụ này hoạt động!

Nguyễn Tiến Trường

Mình viết về những điều nhỏ nhặt trong cuộc sống, Viết về câu chuyện những ngày không có em