علامة حذف S3 والنسخة الحالية تحتاجان تحديد الطلب الذي يراجعه المساعد. قد تعرض ورقة 404 فيقول إن جميع نسخ الملف محيت. نقرأ عقد حاوية ذات إصدار مفعّل، ونرسم نسخة بيانات وعلامة حالية بلا إرسال طلب أو تغيير تخزين. المقصود فهم المرجع، لا تنفيذ استعادة.
الخلاصة السريعة
راجع المفتاح ومعرف النسخة ونوعها؛ العلامة الحالية تجعل الطلب دون versionId يعامل الكائن كمحذوف، ولا تثبت وحدها محو كل نسخ البيانات.
- في حاوية مفعلة الإصدارات، يضع DELETE دون معرف نسخة علامة حذف بلا بيانات تصبح الحالية، بدل حذف الكائن في الحالة الموثقة. [1]
- في ورقتنا، ن 1 نسخة بيانات وم 2 علامة حالية؛ GET دون versionId يخص الحالية، وتوثق AWS تحديد versionId لاسترجاع نسخة معينة. [2] لا نضمن نجاح وصول فعلي.
- إذا كانت الحالية علامة، يوثق GET دون معرف 404 ؛ وإذا حدد معرف العلامة، فالنتيجة 405 ، ومعهما x-amz-delete-marker: true. [1] لا نستنتج العلامة من رقم 404 وحده.
- توضح الوثيقة أن قائمة الكائنات العادية لا تعرض ما كانت حالته الحالية علامة، بينما ListObjectVersions يعرض النسخ والعلامات. [1] لا نعد غياب صف محوا لكل التاريخ.
ما الذي تمثله العلامة الحالية؟
في حاوية مفعلة الإصدارات، توثق AWS أن DELETE دون معرف نسخة ينشئ علامة بلا بيانات تصبح الحالية، ولا يحذف الكائن في هذه الحالة. [1]
نحصر المثال في تفعيل الإصدارات، ولا نعمم نتيجته على حاوية لم يقدم نوع إعدادها. علامة تحمل معرفا لا تصبح نسخة محتوى مقروءة؛ نوع النسخة جزء من وصفها.
لا يشرح اسم زر عام كل طلب تخزين. إذا نقل المساعد ورقة ناقصة، يسجل إعداد الحاوية والمفتاح ووجود معرف النسخة قبل تلخيص الأثر. لم نقدم سياسة حفظ أو دليل بقاء دائم.
أي مرجع تختاره الورقة؟
تذكر AWS أن GET البسيط يجلب النسخة الحالية، وأن معرف versionId يحدد نسخة معينة للاسترجاع. [2]
نؤلف المفتاح لوحة، وتحتَه ن 1 نوعها بيانات وم 2 نوعها علامة وحالتها الحالية. الطلب الأول بلا معرف يتجه للحالية م 2. الطلب الثاني يذكر ن 1 ؛ لذلك لا يطلب م 2 لمجرد أنها أحدث في ورقتنا.
هذا اختلاف في المرجع، وليس اختبار قراءة ناجحة لن 1. لم نقدم أذونات طلب أو استجابة فعلية، فلا نعلن استرجاع محتوى. احتفاظ المثال بصف ن 1 فرض معلن وليس فحصا لتخزين.
| بطاقة طلب مؤلفة | مرجعها | نوعه المعلن |
|---|---|---|
| دون معرف نسخة | م 2 الحالية | علامة |
| معرف ن 1 | ن 1 | بيانات |
| معرف م 2 | م 2 | علامة |
لماذا لا تتطابق 404 و 405 هنا؟
إذا كانت الحالية علامة، يوثق الدليل GET دون معرف بنتيجة 404 ؛ وعند تحديد معرف العلامة، بنتيجة 405 ، ومعهما x-amz-delete-marker: true. [1]
لا يعني ذلك أن كل 404 يكشف علامة. نحتاج الدليل الذي يصف هذه الحالة، ولا نستخرج السبب من رقم مجرد في سجل آخر. وفي مثالنا نعرف النوع لأننا أعلنّاه قبل المقارنة.
لو كتب المساعد أن versionId «يتجاوز الحذف دائما»، تصحح الورقة هذا التعميم: يمكن أن يحدد المعرف العلامة نفسها. الفرق بين طلب ن 1 وم 2 في الهوية والنوع، لا مجرد وجود المعامل.
هل قائمة واحدة تحصي كل الإصدارات؟
تفصل الوثيقة عرض ListObjectVersions عن قائمة الكائنات العادية التي لا تعرض الكائن إذا كانت الحالية علامة. [1]
لذلك لا نلخص قائمة عادية غاب عنها لوحة بعبارة «لا نسخة له إطلاقا». مادة القائمة وحدودها تختلف عن سجل النسخ، ولا نسمي ما لم نطلبه أو نقرأه نسخة مسترجعة.
لم نحذف علامة أو ننشئ حاوية أو نرسل GET. الرسم يفرع الطلبات بحسب المرجع ويترك نجاح القراءة غير مجرب. لا يعد وعدا باستعادة أو احتفاظ دائم أو سلامة كل إصدار.
المصادر ومتابعة القراءة
- AWS S3: Working with delete markers (يفتح في نافذة جديدة)docs.aws.amazon.com
- AWS S3: Retrieving object versions (يفتح في نافذة جديدة)docs.aws.amazon.com
أُعدّ هذا المقال بصياغة عربية أصلية بالاستناد إلى المصادر أعلاه، وهو مدخل تمهيدي إلى الموضوع. اقرأ منهجية المحتوى وحدوده.
