قابلیت ورژنینگ به شما اجازه میدهد تا نسخههای مختلفی از یک آبجکت را در باکت خود ذخیره و مدیریت کنید. هر تغییر روی آبجکت، نسخه جدیدی ایجاد میکند، بدون اینکه نسخه قبلی بازنویسی شود. این ویژگی به طور پیشفرض غیرفعال است و باید به صورت دستی فعال شود.
وضعیتهای ورژنینگ در باکت
ورژنینگ میتواند در یکی از سه وضعیت زیر باشد:
- غیرفعال (Disabled): حالت پیشفرض برای همه باکتها.
- فعال (Enabled): هر تغییری روی آبجکتها نسخه جدید ایجاد کرده و نسخههای قبلی را حفظ میکند.
- معلق (Suspended): در صورتی که ورژنینگ فعال باشد، میتوان برای غیرفعال کردن آن وضعیت آن را به معلق شده تغییر داد. در این حالت تغییرات روی آبجکتهای فعلی، نسخه جدید نمیسازد و نسخه جاری هر آبجکت را تغییر میدهد. دقت کنید که در این حالت نسخههای پیشین آبجکتها که در زمان فعال بودن ورژنینگ آپلود شدهاند، همچنان وجود خواهند داشت ولی برای تغییرات جدید، نسخههای جدید از آبجکتهای ایجاد نمیشود. همچنین توجه داشته باشید که پس از فعالسازی ورژنینگ، این قابلیت فقط میتواند در دو وضعیت فعال و یا معلق شده قرار بگیرد. در ادامه این مستند، عبارت غیرفعالسازی، به معنای تغییر وضعیت به معلقشده (Suspended) میباشد.
نشانگر حذف (Delete Marker)
با فعال بودن ورژنینگ، پس از حذف یک آبجکت، به جای حذف آن یک نشانگر حذف (Delete Marker) ایجاد میشود. این نشانگر به عنوان نسخه فعال آبجکت شناخته میشود. درخواستهای GET بدون مشخص کردن versionId نتیجهای نخواهند داشت، اما با مشخص کردن versionId میتوانید نسخههای قبلی را مشاهده کنید.
فعالسازی ورژنینگ از طریق پنل
برای فعالسازی ورژنینگ:
- وارد باکت مورد نظر شوید.
- از منوی بالا، گزینه تنظیمات باکت را انتخاب کنید.
- در بخش باکت ورژنینگ گزینه ویرایش را بزنید.
- وضعیت را به حالت فعال تغییر داده و ذخیره کنید.
پس از فعالسازی و آپلود آبجکتها، با انتخاب گزینه نمایش نسخهها میتوانید نسخههای مختلف را مشاهده و مدیریت کنید.
نکات مهم
- فعال بودن باکت ورژنینگ فضای بیشتری از باکت اشغال میکند. برای مدیریت بهتر فضای باکت، میتوانید از قابلیت لایفسایکل (لینک به مستند لایفسایکل) استفاده کنید.
- نسخهای با آیدی null، نسخه جاری و اصلی آبجکت است.
غیرفعال کردن ورژنینگ از طریق پنل
برای غیرفعال کردن این قابلیت:
- وارد تنظیمات باکت شوید.
- در بخش باکت ورژنینگ گزینه ویرایش را انتخاب کنید.
- وضعیت را به غیرفعال تغییر داده و ذخیره کنید.
نکته: پس از غیرفعال کردن ورژنینگ، قابلیت بازنویسی به طور خودکار فعال میشود.
نکته: نسخههای قبلی که تا پیش از غیرفعالسازی ورژنینگ ایجاد شدهاند، همچنان باقی میمانند و فضای باکت را اشغال خواهند کرد.
مدیریت ورژنینگ از طریق AWS CLI
فعالسازی باکت ورژنینگ
aws s3api --endpoint-url ENDPOINT put-bucket-versioning --bucket BUCKET_NAME --versioning-configuration Status=Enabled
نمایش نسخههای موجود در باکت
aws s3api --endpoint-url ENDPOINT list-object-versions --bucket BUCKET_NAME
نمایش نسخههای آبجکت یا prefix خاص
aws s3api --endpoint-url ENDPOINT list-object-versions --bucket BUCKET_NAME --prefix PREFIX_OR_OBJECT_NAME
دانلود نسخه خاصی از یک آبجکت
aws s3api --endpoint-url ENDPOINT get-object --bucket BUCKET_NAME --key lc.json --version-id "AjRIko.6PtE7r4J4bdfQaSTbrWL6DGi" old_lc.json
معلق کردن ورژنینگ
aws s3api --endpoint-url ENDPOINT put-bucket-versioning --bucket BUCKET_NAME --versioning-configuration Status=Suspended