[AWS Lab] AWS S3 Versioning có gì hay?

Hẳn mọi người đều đã biết

Amazon Simple Storage Service (Amazon S3) là một dịch vụ lưu trữ đối tượng cung cấp khả năng thay đổi theo quy mô, tính khả dụng của dữ liệu, bảo mật và hiệu năng hàng đầu trong lĩnh vực. - Theo aws

Để đảm bảo tính khả dụng của dữ liệu lưu trữ trên S3 như aws quảng cáo thì dịch vụ này có rất nhiều tính năng hay do đi kèm. Trong đó có 1 tính năng cơ bản nhưng rất chi lợi hại - đó là Versioning.

Hôm nay, bài viết này thông qua 1 mini lab sẽ tìm hiểu về Amazon S3 - Versioning với mục tiêu nho nhỏ là hiểu được cơ chế hoạt động cơ bản của Amazon S3 - Versioning.

Step 1: Tạo và thiết lập 1 bucket

  • Việc tạo mới 1 bucket thì không có gì phải bận tâm nhiều, trước mắt, chỉ cần nhập 1 valid name, chọn đại 1 region rồi nhấn create luôn - khỏi nghĩ. (Các config tính sau)

Đối với AWS S3 thì mặc định 1 bucket sau khi được tạo sẽ ở trạng thái private và block hoàn toàn các access vào nó.

  • Cho nên việc đầu tiên cần làm (để phục vụ cho việc demo view file thuận lợi) đó là thay đổi permissions setting của bucket này.

  • Việc tiếp theo - quan trọng nhất trong bài lab này đây, đó là setting cho bucket ở trạng thái Versioning. => Click vào tab Properties của bucket -> click vào chức năng Versioning -> Chọn vào Enable versioning.

Chú ý 1: Một khi đã enable chức năng versioning của 1 bucket lên thì không thể disable nó được nữa. Mà chỉ có thể dừng - suspend nó thôi

Chú ý 2: Chức năng versioning 1 khi được enable là sẽ áp dụng cho toàn bộ các object nằm trong bucket đó.

The versioning state applies to all (never some) of the objects in that bucket

=> Step 1 Done.

Step 2: Demo chức năng versioning với 1 file txt

  • Đầu tiên, cần tạo 1 file .txt để thực hiện demo chức năng versioning này sau đó upload lên bucket.

=> Cứ upload lên luôn config tính sau cũng được.

  • Sau khi upload thì file được upload sẽ được tạo luôn một url để access. Tuy nhiên

Cũng như bucket, mặc định 1 file khi được upload lên sẽ được setting ở trạng thái private (cho dù bucket của nó đã được public)

Cho nên rốt cuộc khi thử click vào url của file để xem thử nội dung file demo thì vẫn dính lỗi Access Denied

=> Click vào file -> Chọn Actions -> Click vào Make pulic để có thể xem được file từ internet

Vào thử url của file 1 lần nữa => Ngon lành.

  • Bây giờ mới tới phần chính yếu. Thử change content của file txt đã tạo và upload lên 1 lần nữa (tất nhiên vẫn giữ nguyên file name để bucket hiểu rằng mình đang upload cùng 1 file)

=> Vẫn như lần 1, cứ nhấn upload luôn đã, config gì đó tính sau.

  • Sau khi upload version mới lên, nếu ở phần versions đang để chế độ là Hide thì chưa thấy gì thay đổi nhiều (time modified thì có). Nhưng khi click vào show thì có thể thấy được 2 version với Version ID khác nhau được hiển thị. Ngoài ra version mới được upload lên sẽ được setting làm Lastest Version

  • Thử reload lại url ban nãy xem content file có được thay đổi không thì... => Lại dính lỗi Access Denied

Rất tiếc là cứ mỗi lần upload file thì bucket vẫn cứ mặc định cho file đó là private (cho dù có là update new version của file). Cho nên tốt nhất khi upload tranh thủ setting public cho file luôn cho khỏe cũng được.

=> Làm lại : Click vào file -> Chọn Actions -> Click vào Make pulic

Vào thử url của file 1 lần nữa => Ngon lành lần 2. Content của file cũng đã được thay đổi theo version mới nhất

=> Step 2 Done

Step 3: Bây giờ xóa file (object) đi thì sao?

  • Bây giờ thử xóa file đã upload lên xem sao => Click vào file -> Chọn Actions -> Click vào Delete -> Confirm

Kết quả sau khi xóa file thì có vẻ như file đã không còn...

Nhưng mà nếu Bật Versions = Show lên thì...

Việc xóa file (object) khi đang enable chức năng versioning chỉ tương ứng với việc tạo ra 1 version mới của object và được đánh dấu là (Delete marker). Các version trước đó vẫn được giữ nguyên và có thể khôi phục bất cứ lúc nào.

  • Thử click vào version thứ 2, ta có thể thấy được object này vẫn có url để access như bình thường, chỉ có điều ở url này sẽ được gán thêm version id

=> Click vào thử url này -> Vẫn có thể xem được content của file như bình thường

  • Vậy thì bây giờ nếu muốn khôi phục lại trạng thái trước khi delete, đơn giản chỉ cần xóa đi cái version (Delete marker) đi là được.

  • Đúng như dự đoán, sau khi delete version (Delete marker) đi thì mọi thứ trở lại như trước khi delete.

=> Step 3 Done

Kết luận

  • Sau khi demo nhẹ nhàng như trên thì có lẽ nhìn vào hình bên dưới cũng đã có thể hiểu được versioning của S3 là như thế nào.

  • Với các lợi điểm như vậy, hẳn sẽ có nhiều use case để chúng ta có thể cân nhắc sử dụng S3 Versioning trong các ứng dụng thực tế.

Rất cảm ơn các bạn đã đọc bài.


All Rights Reserved