Giới thiệu S3 Multi Storage Class

Storage Class trong S3 là gì?

Trong S3, storage class là một loại metadata của đối tượng lưu trữ. Các loại storage class được xác định và phân biệt dựa trên các đặc điểm về giá cả, độ bền, tính khả dụng và hiệu năng truy suất dữ liệu. S3 cung cấp có khả năng cung cấp các loại storage class khác nhau để phù hợp với các trường hợp sử dụng và yêu cầu chi phí khác nhau.

Hiện tại Bizfly Cloud hỗ trợ hai Storage Class chính và phổ biến nhất trong S3 như sau:

  1. STANDARD:
    • Cung cấp khả năng truy cập dữ liệu với độ bền và tính khả dụng cao, độ trễ thấp tối thiểu. Thường dùng cho dữ liệu được truy cập thường xuyên, truy cập theo thời gian thực hoặc truy xuất hiệu suất cao
    • Use case: website, mobile app, big data,… hay các ứng dụng tần suất truy cập thường xuyên cao
    • Độ khả dụng: 99.99%
  2. COLD:
    • Được thiết kế cho dữ liệu được truy cập ít thường xuyên hơn nhưng vẫn yêu cầu truy cập nhanh khi cần. Yêu cầu chi phí lưu trữ thấp hơn so với loại lưu trữ STANDARD nhưng có thể có hiệu năng đọc ghi kém hơn.
    • Use case: dữ liệu backup, lưu trữ lâu dài,… hay các ứng dụng tần suất truy cập thấp mà vẫn có thể lấy được dữ liệu ngay lập tức khi cần
    • Độ khả dụng: 99.99%

Khi một bucket được tạo trên Bizfly Cloud S3 sẽ có mặc định storage class là STANDARD. Khi file được tải lên bucket này cũng sẽ kế thừa storage class mặc định từ bucket. Ngoài ra bạn cũng có thể chỉ định loại lưu trữ khi tải file lên, hoặc quản lý chuyển đổi loại lưu trữ bằng Lifecycle.

Sử dụng Storage Class trên Bizfly Cloud S3:

Việc sử dụng các Storage Class trên Bizfly Cloud S3 có thể được thực hiện thông qua nhiều cách khác nhau, bao gồm SDK (Software Development Kit), các công cụ dòng lệnh và giao diện đồ họa Dashboard của Bizfly Cloud S3. Dưới đây là hướng dẫn sử dụng các Storage Class thông qua các hình thức khác nhau:

1. Sử dụng giao diện đồ họa dashboard:

Bạn có thể sử dụng giao diện dashboard của Bizfly Cloud để chỉ định loại lưu trữ khi tải file lên S3: Dưới đây là cách thực hiện:

  1. Đăng nhập vào Bizfly Cloud Management Dashboard

  2. Chọn Simple Storage trên thanh dịch vụ

  3. Tìm và chọn bucket mà bạn muốn tải file

  4. Chọn loại lưu trữ và tải file lên

    upload-sc.png

Giao diện dashboard cũng hỗ trợ thay đổi loại lưu trữ của object trong S3:

  1. Đăng nhập vào Bizfly Cloud Management Dashboard

  2. Chọn Simple Storage trên thanh dịch vụ

  3. Tìm và chọn bucket chứa object mà bạn muốn thay đổi lớp lưu trữ.

  4. Tìm và chọn đối tượng cần thay đổi lớp lưu trữ.

  5. Chọn lớp lưu trữ mới mà bạn muốn áp dụng và xác nhận thay đổi.

    edit-sc.png

    edit-sc2.png

2. Sử dụng công cụ dòng lệnh CLI:

S3 là một dịch vụ phổ biến vậy nên hiện nay nhiều công cụ miễn phí, nhằm hỗ trợ việc thao tác với S3 một cách thuận tiện hơn. Một công cụ điển hình và phổ biến trong số đó là MinioClient:

  • Tải file lên S3 với storage class chỉ định:
    • mc cp file_name s3client/your_bucket_name/folder/ --storage-class COLD
  • Cấu hình lifecycle để transition sang storage class COLD, dành cho các object thuộc folder/ và đã được sau 10 ngày:
    • mc ilm edit --id "transition-rule" --transition-days 10 --tier "COLD" s3client/your_bucket_name/folder/

Xem thêm tại: Sử dụng MinIO Client

3. Sử dụng AWS SDK

Các AWS SDK cũng tương thích và cho phép bạn tương tác với dịch vụ S3 của Bizfly Cloudt. Dưới đây là một ví dụ cơ bản về cách sử dụng AWS SDK để chỉ định loại lưu trữ khi tải file, hoặc thay đổi loại lưu trữ của một file đã có sẵn trong S3 bằng ngôn ngữ Python và SDK cho Python (Boto3):

import boto3

# Khởi tạo client của S3
s3 = boto3.client('s3')

# Tên bucket và tên file
bucket_name = 'your_bucket_name'
object_key = 'file_name'

# Tải file lên với loại lưu trữ chỉ định
response = s3.upload_file(file_path, bucket_name, object_key, ExtraArgs={'StorageClass': 'COLD'})

Hoặc thay đổi loại lưu trữ của một file đã có sẵn trong S3 bằng ngôn ngữ Python và SDK cho Python (Boto3)

import boto3

# Khởi tạo client của S3
s3 = boto3.client('s3')

# Tên bucket và tên file
bucket_name = 'your_bucket_name'
object_key = 'file_name'

# Thay đổi loại lưu trữ của file
response = s3.copy_object(
    Bucket=bucket_name,
    CopySource={'Bucket': bucket_name, 'Key': object_key},
    Key=object_key,
    StorageClass='COLD'
)