Chia sẻ góc nhìn vì sao AWS S3 lại giới hạn 100 buckets mỗi tài khoản

S3 là dịch vụ mà hầu như ai bắt đầu cũng sử dụng. S3 rất phổ biến khi muốn archive dữ liệu hay muốn triển khai các data lake trên mây. Nhiều người lầm tưởng và ngộ nhận cứ làm Cloud là Unlimited, là Infinity là vô cực nhưng nó cũng phải trong các ngữ cảnh khác nhau. S3 cũng thế, cũng có một số giới hạn, bài này mình chia sẻ góc nhìn cá nhân. Nói chung, nếu bạn làm với AWS hãy học thật kỹ về S3 để tối ưu hóa sử dụng dịch vụ này, vì nó rất ngon rẻ.

Một số thuật ngữ

  1. S3 viết tắt của Simple Storage Service (03 chữ S nên gọi là S3) là một dịch vụ của AWS trong hàng trăm dịch vụ. S3 chuyên biệt cho lưu trữ dữ liệu dang đối tượng (object storage), mỗi một thực thể lưu trữ trong S3 gọi là đối tượng (object).
  2. Bucket – mình không biết dịch tiếng Việt thế nào cho dễ hiểu, nhưng nhìn chung đây là nơi mình để lưu trữ dữ liệu nằm trong một Bucket. AWS tổ chức các đối tượng ở dạng phẳng (bạn vẫn có thể tổ chức phân cấp dạng folder, sub-folder để dễ nhìn) nhưng ở mặt hệ thống AWS xem đó là dạng phẳng (flat structure).
  3. Account (Tài khoản) – Góc nhìn của AWS có hai khái niệm cần phân biệt là Account và User. Mỗi Account có thể có nhiều User truy cập theo chính sách (AWS quản lý thông qua IAM).

 

Mỗi bucket trong S3 đều có dung lượng lưu trữ không bị giới hạn nhưng có một số giới hạn như sau:

  1. Có tối đa 100 buckets / account
  2. Mỗi object trong bucket có dung lượng từ 1byte đến 5TB, nếu dùng PUT request thì 5GB / object.

Lưu ý nếu object lớn hơn 100MB, AWS khuyến nghị sử dụng Multi-part upload để hạn chế lỗi xảy ra khi upload.

Trước khi hiểu tại sao một account mặc định chỉ có 100 buckets ta cần biết thêm một số tính chất sau:

  1. AWS phân chia các data center ở nhiều vùng địa lý khác nhau gọi là Region. VD: Singapore Region, US Regions.
  2. Trong mỗi AWS Regions có ít nhất 03 Availability Zone (AZ) để nâng cao sự sẵn sàng của dịch vụ.
  3. Trong mỗi AZ lại còn có nhiều data center (DC) cho nên các dịch vụ của AWS rất ổn định và scalability.
  4. Khi khởi tạo một S3 Bucket bạn phải lựa chọn Bucket đó physically nằm tại Region nào. VD: Singapore Region.
  5. Bucket là Global Specific có nghĩa là tên của Bucket phải là duy nhất giữa các account mặc kệ bucket đó được tạo ra trong Region nào. Đây theo mình là nguyên nhân chính giới hạn mỗi account chỉ có 100 buckets để tránh flooding tên của bucket. VD: Nếu mình đặt tên bucket của mình là vietdeptrai, thì bạn ko thể đặt tên một bucket tên tương tự.

Tips: Nếu bạn xóa một bucket thì việc tạo lại bucket đó không thể tạo được ngay trên tài khoản đó, bạn có thể phải chờ một ngày sau mới có thể tạo được nên tạo hay xóa bucket nên cân nhắc trước. Tổ chức bucket name, folder, sub-folder thế nào cũng rất quan trọng để sau này còn phục vụ phân tích, tìm kiếm, tích hợp dễ dàng…

100 buckets có đủ dùng hay không?

Mình làm phát triển sản phẩm và tạo rất nhiều môi trường trên AWS cho nhiều sản phẩm khác nhau, cho nhiều đối tượng khác hàng khác nhau, thậm chí mình còn phải phân biệt dữ liệu cho đối tượng người dùng khác nhau (intern, permanent employees…). Do mỗi bucket là unlimited storage do đó mình lưu trữ dạng folder / sub-folder, nhìn như thế cũng sẽ clean hơn trong việc quản lý. Tuy mỗi object có giới hạn là 5TB nhưng theo mình đây là quá lớn so với nhu cầu sử dụng, thậm chí tạo các DWH trên S3 mình cũng phải phân chia dữ liệu để thuận tiện cho việc phân tích, tìm kiếm nữa.

Nếu trong trường hợp 100 buckets vẫn không đủ, bạn có thể raise service limit request, và bạn có thể extent tới 1000 buckets. Hiện tại mình mới chỉ sử dụng hết khoảng 30 buckets và mình thấy cũng khá nhiều rồi, mong nhận được chia sẻ của các bạn tổ chức AWS S3 Bucket ở quy mô lớn và thông minh nhé.

Thank you!

Topics #1000 buckets #100buckets #119 #5tb #az #bucket #region #S3