1. Amazon S3 Replication.
Amazon S3 Replication là tính năng cho phép sao chép đồng bộ dữ liệu giữa các bucket S3 khác nhau. Nó bao gồm hai loại sao chép, Cross-Region Replication (CRR) và Same-Region Replication (SRR).
Để sử dụng tính năng này, người dùng phải kích hoạt Versioning cho các bucket nguồn và đích. Quá trình sao chép diễn ra không đồng bộ, do đó thời gian sao chép sẽ phụ thuộc vào kích thước và số lượng file.
CRR cho phép sao chép giữa các bucket S3 ở các khu vực khác nhau, trong khi SRR cho phép sao chép giữa các bucket S3 ở cùng một khu vực. Bucket nguồn và đích có thể nằm trong các tài khoản AWS khác nhau và cần phải có quyền truy cập IAM phù hợp để cho phép sao chép.
CRR được sử dụng cho mục đích đáp ứng các yêu cầu về tuân thủ quy định, giảm độ trễ truy cập và sao chép giữa các tài khoản khác nhau. SRR được sử dụng để tập hợp các nhật ký và sao chép trực tiếp giữa các tài khoản sản xuất và kiểm tra.
- Sau khi bật tính năng Replication, chỉ các object mới được sao chép.
- Tùy chọn, bạn có thể sao chép các object đã tồn tại bằng S3 Batch Replication.
- Sao chép các object hiện có và các object bị lỗi sao chép.
- Đối với thao tác DELETE:
- Có thể sao chép các điểm xóa từ nguồn đến đích (tùy chọn).
- Việc xóa với một ID phiên bản không được sao chép (để tránh xóa độc hại).
- Không có “chaining” của sao chép.
- Nếu bucket 1 có sao chép vào bucket 2, mà lại sao chép vào bucket 3.
- Khi đó, các object được tạo ra trong bucket 1 không được sao chép vào bucket 3.
Bây giờ mình sẽ tạo 1 bucket mới bằng cách vào Amazon S3 › Buckets › Create bucket.
Điều chúng ta cần làm là Enable Bucket Versioning sau đó kéo xuống dưới chọn Create bucket.
Mình sẽ tạo bucket thứ 2.
Tiếp tục kéo xuống và Enable Bucket Versioning sau đó kéo xuống dưới chọn Create bucket.
Như vậy là chúng ta đã tạo được 2 bucket đó là s3-stephane-bucket-origin-v2 (bucket chính) và s3-stephane-bucket-replica-v2 (bucket phụ). Bây giờ chúng ta hãy update 1 file lên s3-stephane-bucket-origin-v2 nhé.
Việc chúng ta cần làm bây giờ là vào Management
Kéo xuống dưới và chọn Create replication rule.
Tại Replication rule configuration hãy đặt 1 tên tại Replication rule name.
Tại Source bucket name chúng ta thấy nguồn vẫn là bucket s3-stephane-bucket-origin-v2, tùy chọn Apply to all objects in the bucket giúp cho việc đồng bộ là toàn bộ các đối tượng trong bucket.
Tại Destination chúng ta có 2 lựa chọn Specify a bucket in another account (đồng bộ từ bucket của 1 tài khoản AWS khác) hoặc Choose a bucket in this account (cùng account). Chúng ta sẽ lựa chọn đồng bộ bucket cùng account. Ở phần bucket name chúng ta hãy nhập tên bucket sẽ được đồng bộ dữ liệu tới, nếu bạn nhập đúng tên bucket thì tại phần Destination Region bạn sẽ thấy được bucket đích đang ở vùng nào.
Kéo xuống dưới cùng và chọn Save.
Khi bạn bấm Save, sẽ có 1 bảng nhắc nhở trong quá trình cấu hình đồng bộ dữ liệu giữa các bucket S3 bằng Replication, có hai tùy chọn để xử lý việc đồng bộ các đối tượng đã tồn tại trong nguồn:
- No, do not replicate existing objects: Tùy chọn này chỉ đồng bộ các đối tượng mới được tạo ra sau khi cấu hình đồng bộ đã được kích hoạt. Điều này có nghĩa là bất kỳ đối tượng nào đã tồn tại trong nguồn trước khi đồng bộ hóa bắt đầu sẽ không được đồng bộ hóa sang đích.
- Yes, replicate existing objects: Tùy chọn này cho phép đồng bộ các đối tượng đã tồn tại trong nguồn. Nếu bạn chọn tùy chọn này, các đối tượng có trong nguồn sẽ được sao chép sang đích, bao gồm cả các đối tượng đã tồn tại trước khi đồng bộ hóa bắt đầu.
Cần lưu ý rằng nếu lựa chọn “Yes, replicate existing objects” được chọn, đối tượng nào đã bị xóa từ nguồn trước khi đồng bộ hóa không sẽ được đồng bộ hóa trở lại đích. Điều này nhằm tránh các hành động xóa bất hợp pháp hoặc vô tình từ nguồn ảnh hưởng đến đích.
Trường hợp này mình sẽ chọn No, do not replicate existing objects.
Thông báo Replication configuration successfully updated cho biết bạn đã tạo replica thành công.
Một quy tắc đồng bộ dữ liệu đã xuất hiện tại Destination -> Replication rules.
Mặc dù bấm reload lại nhưng bên bucket s3-stephane-bucket-replica-v2 vẫn chưa được đồng bộ.
Mình sẽ bấm upload thêm 1 file mới vào bucket chính đó là s3-stephane-bucket-origin-v2.
Và bây giờ sang bên s3-stephane-bucket-replica-v2 kiểm tra chúng ta đã thấy file mới đã được đồng bộ qua s3-stephane-bucket-replica-v2.
Chúng ta bấm Show versions các bạn sẽ thấy Version ID của file mới.
So sánh bên s3-stephane-bucket-origin-v2 bạn sẽ thấy Version ID của file đã được đồng bộ trùng với nhau.
Giờ mình sẽ upload thêm 1 file mới và chúng ta sẽ có 1 file mới với version mới được đánh dấu như dưới. Bây giờ mình vào Management kéo xuống tới Replication rules, chọn 1 rule và bấm Edit rule.
Chúng ta sẽ thử thay đổi 1 tính năng khác đó là Delete marker replication. Delete marker replication là một tính năng của S3 Replication cho phép sao chép các đối tượng bị xóa từ nguồn đến đích. Khi một đối tượng được xóa ở nguồn, một đánh dấu xóa (delete marker) được tạo ra và được sao chép đến đích (nếu tính năng này được bật). Điều này giúp đảm bảo rằng các đối tượng đã bị xóa từ nguồn cũng sẽ bị xóa từ đích, để tránh lưu trữ dư thừa và tăng tính toàn vẹn dữ liệu. Tuy nhiên, đối tượng đã bị xóa ở nguồn và có một ID phiên bản, sẽ không được sao chép đến đích để tránh những xóa vô tình hoặc hành động độc hại của người dùng.
Bây giờ ở bucket chính mình tiến hành xóa file coffee.jpg.
Xác nhận xóa.
Và bạn có thể thấy rằng, điểm đánh dấu xóa đã được đánh dấu vào bucket replica của mình.
Và nếu chúng ta tắt Show versions chúng ta sẽ không thấy file coffee.jpg của mình.
Và điều này cũng tương tự với bucket chính của mình.
Và bây giờ bên bucket chính s3-stephane-bucket-origin-v2 mình sẽ xóa đi 1 phiên bản cụ thể, ví dụ như dưới.
Dưới đây là các thông báo khi xóa vĩnh viễn 1 đối tượng cụ thể.
Mặc dù ở bucket chính s3-stephane-bucket-origin-v2 đã bị xóa nhưng bên bucket replica s3-stephane-bucket-replica-v2 file beach.jpg vẫn nguyên vẹn bởi vì nó chỉ xóa các điểm đánh dấu được sao chép.
2. S3 Websites.
S3 Websites là tính năng của Amazon S3 cho phép người dùng lưu trữ các trang web tĩnh và có thể truy cập trên Internet thông qua tên miền riêng. Với tính năng này, người dùng có thể sử dụng Amazon S3 để lưu trữ các trang web tĩnh, không cần tới các máy chủ web truyền thống và vẫn đảm bảo tính khả dụng cao và độ tin cậy.
Để sử dụng tính năng S3 Websites, người dùng cần tạo một bucket mới trong Amazon S3 và cấu hình nó để trở thành một trang web tĩnh. Sau đó, URL của trang web sẽ được tạo ra dựa trên tên bucket và khu vực AWS. URL này có thể có dạng “<bucket-name>.s3-website-<AWS-region>.amazonaws.com” hoặc “<bucket-name>.s3-website.<AWS-region>.amazonaws.com”.
Tuy nhiên, khi truy cập trang web, nếu người dùng nhận được lỗi 403 (Forbidden), điều đó có thể là do chính sách bucket không cho phép đọc công khai. Người dùng cần cấu hình chính sách bucket để cho phép đọc công khai để đảm bảo truy cập trang web được chính xác.
Đầu tiên hãy upload 2 file error.html và index http như dưới.
Sau khi tải xong, vào Properties và kéo xuống phần Static website hosting, bấm vào Edit.
Tại Static website hosting bấm chọn Enable, tại Hosting type chọn Host a static website.
Tại Index document chúng ta trỏ file index.html và tại Error document trở file error.html, mọi thứ xong xuôi, kéo xuống dưới và bấm Save changes.
Một thông báo Successfully edited static website hosting cho chúng ta biết đã thiết lập thành công. Vẫn ở tab Properties chúng ta kéo xuống dưới.
Kéo tới phần Static website hosting, copy phần Bucket website endpoint lại.
Dán url đã copy vào trình duyệt, chúng ta nhận được thông báo 403 Forbidden cho biết bạn đang bị từ chối truy cập.
Điều đó là rõ ràng rồi vì bucket của mình đang ở chế độ Bucket and objects not public.
Vẫn tại Permissions, bấm Edit để chúng ta tắt phần Block all public access như ở dưới.
Tại Block all public access hãy tắt nó đi và bấm Save changes.
Do khi bạn tắt tính năng này nó liên quan đến bảo mật nên nó yêu cầu bạn xác nhận chắc chắn bằng cách nhập confirm vào To confirm the settings, enter confirm in the field và sau đó bạn bấm Confirm.
Như vậy Block all public access đã được tắt.
Kéo xuống dưới vào bấm Edit.
Mình sẽ tạo Bucket Policy, như thường lệ mình sử dụng Policy generator, hãy lưu Bucket ARN lại.
Thiết lập như dưới nhé, chi tiết mình đã nói ở các phần trước nên mình không giải thích lại.
Hãy nhập
Copy đoạn json và dán vào đây, bấm Save changes để lưu lại.