قابلیت لایفسایکل این امکان را فراهم میکند که برای هر باکت یک بازهی زمانی برای انقضا یا حذف خودکار آبجکتها و آپلودهای چندبخشی ناقص آن تعریف کنید. این قابلیت به مدیریت هزینههای فضای ابری کمک میکند.
برای اطلاعات بیشتر، میتوانید مستندات رسمی AWS را مطالعه کنید.
نکته
در برخی مستندات ممکن است قانون Transition را مشاهده کنید که مربوط به جابجایی خودکار آبجکتها به یک کلاس دیگر (مثلاً کلاس سردتر) پس از مدت مشخصی است. این قانون در حال حاضر در سرویس آبجکت استوریج ستون قابل تنظیم نیست.
ایجاد یک قانون لایفسایکل
برای تعریف یک قانون لایفسایکل در یک باکت:
۱. وارد صفحه لیست باکتها شوید و باکت مورد نظر را انتخاب کنید.
۲. روی مدیریت لایفسایکل کلیک کنید.
۳. گزینه ساخت قانون جدید را انتخاب کنید.
۴. یک نام منحصربهفرد (Unique) و انگلیسی برای قانون انتخاب کنید. (امکان استفاده از - و _ وجود دارد.)
۵. محدودهی اعمال این قانون را مشخص کنید:
- همه آبجکتها: قانون روی تمام آبجکتهای باکت اعمال میشود.
- آبجکتهای خاص: قانون روی آبجکتهای دارای پیشوند یا برچسب مشخصشده اعمال میشود.
۶. حداقل یکی از قوانین لایفسایکل (توضیح دادهشده در ادامه) را انتخاب کنید.
۷. روی ساخت قانون کلیک کنید.
قوانین لایفسایکل
۱. اعمال بر روی نسخههای جاری آبجکتها
- آبجکتها پس از تعداد روز مشخصشده از باکت حذف میشوند.
- در صورت فعال بودن مدیریت نسخه، نسخه فعلی حذف و نسخههای قدیمیتر باقی میمانند.
- محدودهی مجاز: بین ۱ تا ۳۶۵۰ روز (۱۰ سال).
۲. اعمال بر روی نسخههای قدیمی آبجکتها
- نسخههای قدیمی و غیرجاری آبجکتها پس از تعداد روز مشخص حذف میشوند.
- نسخهی جاری حذف نخواهد شد.
۳. اعمال بر روی آپلودهای چندبخشی ناقص
- در صورت وجود آپلود ناقص، این قابلیت قسمتهای ناقص را حذف میکند تا از هزینههای اضافی جلوگیری شود.
- نکته: اگر قانون بر اساس برچسب تعریف شود، امکان حذف آپلودهای ناقص وجود ندارد. در این حالت، یک قانون جداگانه برای حذف آپلودهای ناقص تعریف کنید.
تنظیم لایفسایکل با CLI
ایجاد قانون با AWS CLI
برای تعریف یک قانون لایفسایکل، از دستور زیر استفاده کنید:
aws s3api put-bucket-lifecycle-configuration --endpoint-url ENDPOINT --bucket BUCKET_NAME --lifecycle-configuration file://lifecycle.jsonساختار فایل lifecycle.json:
{
"Rules": [
{
"Expiration": {
"Date": timestamp,
"Days": integer,
"ExpiredObjectDeleteMarker": true|false
},
"ID": "string",
"Filter": {
"Prefix": "string",
"Tag": {
"Key": "string",
"Value": "string"
},
"ObjectSizeGreaterThan": long,
"ObjectSizeLessThan": long,
},
"Status": "Enabled"|"Disabled",
"NoncurrentVersionExpiration": {
"NoncurrentDays": integer,
"NewerNoncurrentVersions": integer
},
"AbortIncompleteMultipartUpload": {
"DaysAfterInitiation": integer
}
}
...
]مشاهده قوانین
aws s3api get-bucket-lifecycle-configuration --endpoint-url ENDPOINT --bucket BUCKET_NAMEحذف قوانین لایفسایکل
aws s3api delete-bucket-lifecycle-configuration --endpoint-url ENDPOINT --bucket BUCKET_NAMEاستفاده از Minio Client
مشاهدهی لیست قوانین
minio ilm rule export BUCKET_NAMEmc ilm ls BUCKET_NAME --jsonاضافه کردن قانون
minio ilm import BUCKET_NAME <<EOF
{
"Rules": [
{
"Expiration": {
"Days": 365
},
"ID": "OneYearExpiration",
"Status": "Enabled"
}
]
}
EOFیا با فایل ورودی:
mc ilm rule import BUCKET_NAME < lifecycle.json- دقت کنید: این دستور همهی قوانین قبلی را جایگزین میکند.
- برای اضافه کردن یک قانون جدید بدون حذف قوانین قبلی:
mc ilm rule add --expire-days 365 BUCKET_NAMEحذف قانون لایفسایکل
mc ilm rule rm --id "RULE_ID" BUCKET_NAMEاستفاده از Python Client) Boto3)
نمونه کد برای تعریف قوانین در پایتون:
import boto3
import botocore
import datetime
botocore.config.Config(s3={"addressing_style": "path"})
client = boto3.client(
's3',
endpoint_url=ENDPOINT,
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY
)
client.create_bucket(Bucket=BUCKET_NAME)
client.put_bucket_lifecycle_configuration(
Bucket=BUCKET_NAME,
LifecycleConfiguration=
{
"Rules": [
{
"Expiration": {
"Days": 30
},
"ID": "1-month-expiration",
"Status": "Enabled"
},
{
"Expiration": {
"Days": 7
},
"ID": "1-week-tagged-expiration",
"Filter": {
"Prefix": "logs"
"Tag": {
"Key": "backup",
"Value": "true"
}
},
"Status": "Enabled"
}
]
}
)