Cấu hình Bucket Lifecycle

Bucket Lifecycle trong S3 là gì?

Trong Bizfly Cloud S3 (Simple Storage Service), bucket lifecycle là một tính năng quản lý tự động các file/object trong bucket, dựa trên các quy tắc mà người dùng định nghĩa. Bằng cách sử dụng bucket lifecycle, bạn có thể tự động di chuyển hoặc xóa các file sau một khoảng thời gian nhất định, giúp tối ưu hóa dung lượng lưu trữ và giảm bớt chi phí.

Một số tính năng chính của bucket lifecycle trong Bizfly Cloud S3 bao gồm:

  1. Tự dộng di chuyển file: Người dùng có thể định nghĩa rule để di chuyển các file sang các lớp lưu trữ khác nhau (ví dụ: từ Standard sang Cold hoặc ngược lại) sau một khoảng thời gian nhất định.

  2. Tự động xóa file: Người dùng có thể định nghĩa các rule tự động xóa các file khỏi bucket sau một khoảng thời gian nhất định. Điều này giúp giảm lượng lưu trữ không cần thiết và tiết kiệm chi phí.

  3. Tự động xóa, di chuyển các phiên bản của file: Người dùng có thể sử dụng rule để tự động xóa phiên bản cũ của các file sau một thời gian nhất định. Từ đó này giúp quản lý lịch sử phiên bản của các file theo cách hiệu quả hơn.

Để bắt đầu sử dụng và cấu hình các rule cho bucket lifecycle, bạn có thể sử dụng giao diện dashboard của Bizfly Cloud S3 hoặc SDK dành cho đa dạng các ngôn ngữ lập trình.

Sử dụng Bucket Lifecycle trên Bizfly Cloud S3:

Việc cấu hình các rule cho bucket lifecycle trong 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 cấu hình bucket lifecycle 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 cấu hình lifecycle

  4. Danh sách các lifecycle có sẵn, bạn cũng có thể lựa chọn chỉnh thêm, sửa hoặc xóa các lifecycle ở đây

    list.png

  5. Để khởi tạo lifecycle, chọn loại rule mà bạn muốn và xác định thời gian thực hiện rule

    list.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 đã có sẵn nhiều công cụ miễn phí giúp 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:

  • Xem danh sách các lifecycle hiện tại của bucket, ví dụ tên bucket-name:
    • mc ilm rule list s3client/bucket-name
  • Cấu hình lifecyle với 2 rule transition (tự động di chuyển lớp lưu trữ) và expiration (tự động xóa) với các file nằm trong folder/:
    • mc ilm rule add --prefix folder/ --transition-days 100 --transition-tier "COLD" --expire-days 200 s3client/bucket-name
  • Ngoài ra cũng có thể chỉnh sửa lifecycle sẵn có dựa theo id:
    • mc ilm edit --id "transition-rule" --transition-days 99 --tier "COLD" s3client/bucket-name

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 Cloud. Dưới đây là một ví dụ cơ bản về cách sử dụng AWS SDK để cấu hình lifecycle 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
bucket_name = 'your_bucket_name'

# List các lifecycle có sẵn
res = s3_client.get_bucket_lifecycle_configuration(Bucket=bucketname)
print(res)

# Cấu hình lifecyle
s3.put_bucket_lifecycle_configuration(
    Bucket=bucketname,
    LifecycleConfiguration={
        'Rules': [
            {
                'ID': 'current-rule',
                'Prefix': 'folder/',
                'Status': 'Enabled',
                'Transitions': [
                    {
                        'Days': 100,
                        'StorageClass': 'COLD'
                    },
                ],
                'Expiration': {
                    'Days': 200,
                },
            },
            {
                'ID': 'multipart-rule',
                'Prefix': 'folder/',
                'Status': 'Enabled',
                'AbortIncompleteMultipartUpload': {
                    'DaysAfterInitiation': 50
                },
            },
        ]
    },
)