Đây là các thông tin liên quan đến Replication trên Amazon S3:
- Bắt buộc phải bật tính năng Versioning cho cả bucket nguồn và bucket đích.
- Có thể thực hiện Cross-Region Replication (CRR) hoặc Same-Region Replication (SRR).
- Có thể sao chép giữa các bucket thuộc các tài khoản AWS khác nhau.
- Quá trình sao chép là bất đồng bộ, nghĩa là các object được sao chép đến bucket đích không phải ngay lập tức.
- Cần phải cấp đủ quyền truy cập IAM cho S3 để thực hiện sao chép.
Trong đó, Cross-Region Replication (CRR) cho phép sao chép các object giữa các bucket ở các khu vực khác nhau. Khi bật tính năng CRR, các object mới được tạo trong bucket nguồn sẽ được sao chép đến bucket đích. Các object đã tồn tại trong bucket nguồn có thể được sao chép đến bucket đích bằng cách sử dụng lệnh aws s3 sync
hoặc bằng cách sử dụng lệnh aws s3api copy-object
.
Same-Region Replication (SRR) cho phép sao chép các object giữa các bucket trong cùng một khu vực. Khi bật tính năng SRR, các object mới được tạo trong bucket nguồn sẽ được sao chép đến bucket đích. Các object đã tồn tại trong bucket nguồn có thể được sao chép đến bucket đích bằng cách sử dụng lệnh aws s3 sync
hoặc bằng cách sử dụng lệnh aws s3api copy-object
.
Trong cả hai trường hợp, cần cấu hình quyền truy cập IAM cho S3 để cho phép bucket nguồn và bucket đích giao tiếp với nhau.
Dưới đây là giải thích chi tiết về hai use case của S3 Cross-Region Replication (CRR) và Same-Region Replication (SRR):
- CRR: Khi một tổ chức có nhiều người dùng truy cập vào S3 từ các vị trí khác nhau trên toàn cầu, họ có thể muốn sao chép dữ liệu S3 đến các vị trí khác nhau để đảm bảo rằng các người dùng có truy cập nhanh chóng đến dữ liệu. Ngoài ra, các tổ chức phải tuân thủ các quy định và chuẩn mực pháp lý yêu cầu lưu trữ dữ liệu trên các khu vực địa lý khác nhau. Do đó, S3 CRR được sử dụng để đảm bảo sao chép dữ liệu từ bucket nguồn tới các bucket đích trong các khu vực khác nhau, giúp cải thiện thời gian truy cập và giảm độ trễ.
- SRR: Khi bạn cần cập nhật dữ liệu trên bucket thực tế để chạy các bài kiểm tra cho môi trường khác, S3 SRR là một giải pháp tuyệt vời. Bằng cách sao chép dữ liệu từ bucket sản xuất đến bucket kiểm tra, SRR giúp đồng bộ hóa các dữ liệu và bảo đảm rằng các thay đổi được áp dụng trên môi trường kiểm tra một cách nhanh chóng. SRR cũng có thể được sử dụng để gộp các tập tin nhật ký từ các bucket khác nhau và đưa chúng vào một bucket duy nhất để dễ dàng quản lý.
Sau khi kích hoạt tính năng Replication, chỉ các đối tượng mới được sao chép sang bucket đích. Tuy nhiên, bạn có thể sao chép các đối tượng hiện có bằng cách sử dụng tính năng S3 Batch Replication (sao chép hàng loạt). Tính năng này cũng giúp sao chép các đối tượng đã bị lỗi trong quá trình sao chép trước đó. Đối với các thao tác DELETE, bạn có thể sao chép các đánh dấu xóa từ nguồn sang đích (tùy chọn). Tuy nhiên, các xóa đối tượng với một version ID sẽ không được sao chép (để tránh việc xóa độc hại). Không có “chuỗi” sao chép, nghĩa là nếu bucket 1 được sao chép sang bucket 2, và bucket 2 được sao chép sang bucket 3, thì các đối tượng được tạo ra trong bucket 1 sẽ không được sao chép sang bucket 3.
Để thực hành, đều tiên hãy tạo 1 bucket mới.
Tính năng Replication chỉ hoạt động khi bạn Enable Bucket Versioning. Kéo xuống dưới bấm Create bucket để tạo bucket này.
Tạo bucket thứ 2 ở 1 vùng khác và đừng quên Enable tính năng Bucket Versioning.
Upload 1 file vào bucket đầu tiên s3-stephane-bucket-origin-v2, ví dụ beach.jpg.
Để thực hiện Replication bạn làm như sau. Trên bucket đầu tiên s3-stephane-bucket-origin-v2 bạn vào Management và tìm đến Replication rules và bấm vào Create replication rule.
Đặt tên cho rule này tại Replication rule name.
Đối với bucket nguồn chúng ta chọn Apply to all objects in the bucket với ý nghĩa là áp dụng cho toàn bộ đối tượng trong bucket.
Đối với bucket đích chúng ta chọn Choose a bucket in this account để lựa chọn 1 bucket ở cùng 1 tài khoản AWS. Nhập tên bucket đích vào Bucket name bằng cách bấm Browse S3 hoặc nếu bấm Browse S3 mà không thấy bucket đích thì bạn có thể gõ thẳng tên bucket đích vào, nếu bucket đích tồn tại trong tài khoản AWS của bạn thì hệ thống sẽ tự phát hiện ta vùng tại Destination Region.
Bạn thấy 1 dòng thông báo “You can replicate objects across buckets in different AWS Regions (Cross-Region Replication) or you can replicate objects across…..” ở dưới Destination tức là bạn đang sử dụng sao chép liên khu vực (Cross-Region Replication).
Do chúng ta đang demo nên các tính năng khác hãy tạm thời bỏ qua, kéo xuống dưới cùng và bấm Save để lưu lại. Khi bạn bấm Save sẽ có lời nhắc cho bạn là nếu lựa chọn “No, do not replicate existing objects.” hệ thống chỉ sao chép các tập tin tính từ thời điểm kích hoạt Replication và lựa chọn còn lại “Yes, replicate existing objects.” sẽ giúp bạn sao chép các tập tin trước đó. Nhưng lần này mình chọn “No, do not replicate existing objects.” và bấm Submit.
Bây giờ chúng ta hãy quay lại bucket nguồn Amazon S3 › Buckets › s3-stephane-bucket-origin-v2 vào tab Management bạn đã thấy 1 quy tắc Replication ở đây.
Và giờ đây tại bucket nguồn mình sẽ update 1 file mới tên là coffee.jpg có Version ID là GBk.okLFeF5vm4wbmJszK3Hfl.xh.03J.
Và chúng ta chuyển sang bucket đích, sau khoảng 10s đã có 1 file đồng bộ qua tên là coffee.jpg. Lý do chỉ có mỗi file này được đồng bộ là do trước đó mình lựa chọn option “No, do not replicate existing objects.” hệ thống chỉ sao chép các tập tin tính từ thời điểm kích hoạt Replication.
Bây giờ tại bucket nguồn nếu mình tải lên lại file beach.jpg 1 lần nữa thì kết quả như thế nào.
Bên bucket đích đã sao chép thành công file beach.jpg bởi vì phiên bản này đã được tải lên sau khi mình kích hoạt tính năng Replication.
Bây giờ chúng ta qua 1 tính năng khác quan trọng trong kỳ thi. Hãy vào bucket nguồn Amazon S3 › Buckets › s3-stephane-bucket-origin-v2 › Management và tại phần Replication rules tiến hành Edit rule.
Kéo xuống Additional replication options tích vào Delete marker replication và lưu lại.
Delete marker replication là một tính năng tùy chọn trong S3 Replication, cho phép sao chép các delete marker từ nguồn đến đích. Delete marker là một loại object đặc biệt được tạo ra khi một object bị xóa, nó đóng vai trò như một đánh dấu để biểu thị rằng object đã bị xóa. Với tính năng Delete marker replication, khi một object bị xóa ở nguồn, một delete marker tương ứng cũng được tạo ra và sao chép đến đích, giúp đảm bảo tính toàn vẹn dữ liệu giữa các bucket. Khi đích nhận được delete marker, nó sẽ xem đó như là một yêu cầu để xóa object tương ứng trong bucket đích, do đó bảo đảm rằng các object bị xóa ở nguồn cũng được xóa ở đích và dữ liệu giữa các bucket là đồng bộ.
Và bây giờ mình tiến hành xoá file coffee.jpg tại bucket nguồn.
Sang bucket đích kiểm tra, chúng ta thấy delete marker file coffee.jpg từ bucket nguồn đã được đồng bộ qua bucket đích.
Nhưng nếu mình xoá 1 version id cụ thể ví dụ như file beach.jpg ở hình dưới.
Kết quả bên bucket nguồn sau khi xoá file beach.jpg
Nó sẽ không xoá bên bucket đích của mình, điều này chứng minh file beach.jpg bên bucket đích sẽ không bao giờ bị xoá.
Khi sử dụng tính năng Cross-Region Replication (CRR) và bật chức năng Delete marker replication, các delete marker (đánh dấu xóa) sẽ được sao chép từ bucket nguồn sang bucket đích. Tuy nhiên, các phiên bản (version) đã được đánh dấu xóa với một version ID cụ thể sẽ không được sao chép sang bucket đích, nhằm tránh các hành động xóa độc hại. Do đó, nếu bạn xoá một phiên bản với version ID cụ thể trong bucket nguồn, thì phiên bản đó sẽ không được sao chép sang bucket đích và vẫn giữ nguyên ở bucket nguồn.