الوحدة 3 · الخدمات الأساسية
التخزين: Amazon S3 وEBS وEFS
17 دقراءة 5 داملأ الفراغات
الدرس في لمحة
خزّن ملصقات Lantern ونسخه الاحتياطية في Amazon S3 بفئة التخزين المناسبة مع تفعيل الـ versioning وBlock Public Access، واعرف متى يحتاج حمل عمل على EC2 إلى EBS أو EFS بدلًا من ذلك.
لا فيديو هنا، بل الشيء الحقيقي: درس مكتوب وأمثلة قابلة للتشغيل واختبار وتدريب.
على خادم Lantern القديم، كان “التخزين” قرصًا واحدًا يمتلئ. أما على AWS فتحصل على ثلاثة أنواع مختلفة، صُمِّم كلٌّ منها لمهمة مختلفة: الكائنات (objects) في Amazon S3، والأقراص الكتلية (block disks) في Amazon EBS، والملفات المشتركة في Amazon EFS. ومعظم بيانات Lantern مكانها النوع الأول.
Amazon S3: كائنات في buckets
يخزّن S3 الكائنات (أي بايتات، حتى 50 TB لكلٍّ منها) في buckets. يُعنون الكائن بـ مفتاحه (key)، مثل posters/2026/street-food-festival.jpg. تبدو الشرطات المائلة كمجلّدات، ويرسمها الـ console كمجلّدات، لكن S3 لا يحتوي على مجلّدات: المفتاح نص واحد، وposters/2026/ بادئة (prefix). أسماء الـ buckets فريدة على مستوى AWS كلها؛ أما الـ bucket نفسه فيعيش في الـ Region التي تختارها.
aws s3 mb s3://lantern-posters --region eu-west-1
aws s3 cp ./posters/ s3://lantern-posters/posters/ --recursive
aws s3 ls s3://lantern-posters/posters/2026/آمن افتراضيًا، فأبقِه كذلك
تأتي الـ buckets الجديدة بثلاث حمايات مفعّلة: Block Public Access (بإعداداته الأربعة مفعّلة)، وObject Ownership مضبوطًا على bucket owner enforced (قوائم التحكّم في الوصول ACLs معطّلة، فلا تمنح الوصولَ إلا السياسات)، والتشفير الافتراضي بمفاتيح يديرها S3. تغيّر الوصول عبر سياسات الـ bucket، كما فعلت في القسم الثاني.
أبقِ Block Public Access مفعّلًا في كل bucket ليس عامًّا عن قصد، واضبطه على مستوى الحساب أيضًا، كي لا يتحوّل bucket واحد إلى عام بالخطأ:
aws s3control put-public-access-block --account-id 111122223333 \
--public-access-block-configuration \
BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=trueفي القسم الرابع يُقدَّم موقع Lantern للجمهور دون جعل أي bucket عامًّا: يقرأ CloudFront الـ bucket بشكل خاص نيابة عن الزوّار.
فئات التخزين: الـ API نفسه، وشكل سعر مختلف
لكل كائن فئة تخزين. وكلها مصمّمة لمستوى المتانة نفسه، أي إحدى عشرة تسعة (99.999999999%)؛ لكنها تختلف في طريقة الدفع.
| الفئة | الأنسب لـ | العقبة |
|---|---|---|
| S3 Standard (الافتراضية) | البيانات التي تُقرأ كثيرًا | أعلى سعر تخزين |
| S3 Intelligent-Tiering | نمط وصول مجهول أو متغيّر | رسوم مراقبة صغيرة لكل كائن |
| S3 Standard-IA | ما يُقرأ نحو مرة شهريًا ويحتاج إلى وصول بالمللي ثانية | رسوم استرجاع، وحد أدنى 30 يومًا |
| S3 One Zone-IA | النسخ التي يمكن إعادة إنشائها | منطقة توافر واحدة فقط |
| S3 Glacier Instant Retrieval | ما يُقرأ نحو مرة كل ربع سنة، بوصول بالمللي ثانية | رسوم استرجاع أعلى، وحد أدنى 90 يومًا |
| S3 Glacier Flexible Retrieval | الأرشيفات، والاستعادة من دقائق إلى ساعات | الاستعادة قبل القراءة |
| S3 Glacier Deep Archive | ما نادرًا ما يُلمس، والاستعادة بالساعات | حد أدنى 180 يومًا |
لنموذج السعر ثلاثة أجزاء: لكل غيغابايت مخزّن شهريًا، ولكل طلب، ولكل غيغابايت مسترجَع في فئات الوصول غير المتكرّر والأرشيف. فئة تخزين أرخص مع قراءات متكرّرة قد تكلّف أكثر من Standard. والكائنات الصغيرة فخ أيضًا: فئات IA تحتسب كل كائن بـ 128 KB على الأقل.
بالنسبة إلى Lantern: تبقى الملصقات الحالية في Standard، وتنتقل الملصقات الأقدم من سنة إلى Glacier Instant Retrieval (فهي ما زالت تظهر في صفحات الفعاليات القديمة)، وتذهب التصديرات الشهرية لقاعدة البيانات إلى Deep Archive.
الـ versioning: زر تراجع له ثمن
مع تفعيل الـ versioning (إدارة النسخ)، تُبقي الكتابة فوق كائن أو حذفه على النسخة القديمة. الحذف يضيف علامة حذف (delete marker) بدلًا من إتلاف البيانات، فيمكن التعافي من aws s3 rm عرضي. وبمجرد تفعيله، يمكن تعليق الـ versioning فقط، ولا يمكن إزالته كليًا أبدًا.
aws s3api put-bucket-versioning --bucket lantern-posters \
--versioning-configuration Status=Enabledكل نسخة تُحتسب ككائن كامل، لذا اقرن الـ versioning بـ قاعدة دورة حياة (lifecycle rule) تنقل البيانات وتنهيها تلقائيًا:
{
"Rules": [
{
"ID": "age-out-posters",
"Filter": { "Prefix": "posters/" },
"Status": "Enabled",
"Transitions": [{ "Days": 365, "StorageClass": "GLACIER_IR" }],
"NoncurrentVersionExpiration": { "NoncurrentDays": 30 }
}
]
}aws s3api put-bucket-lifecycle-configuration --bucket lantern-posters \
--lifecycle-configuration file://lifecycle.jsonأقراص للخوادم: EBS وEFS
بعض البرمجيات تحتاج إلى نظام ملفات حقيقي. وهنا يأتي دور الخدمتين الأخريين.
Amazon EBS (Elastic Block Store) قرص شبكي لـ instance واحدة في EC2، ضمن منطقة توافر واحدة. وتقريبًا كل instance تُقلع من واحد منها. والنوع gp3 هو قرص SSD للأغراض العامة الذي تبدأ به. تدفع مقابل الحجم المحجوز، لا مقابل ما تملؤه، لذا فإن volume بحجم 500 GB يحمل 20 GB يكلّف ما يكلّفه volume ممتلئ. واللقطات (snapshots) تنسخ الـ volumes احتياطيًا بشكل تزايدي إلى تخزين يصمد أمام خسارة منطقة التوافر.
Amazon EFS (Elastic File System) نظام ملفات NFS مُدار تركّبه instances كثيرة، عبر مناطق التوافر، في الوقت نفسه. يكبر ويصغر مع ملفاتك ويُحتسب لكل غيغابايت مخزّن فعلًا، بسعر للغيغابايت أعلى من EBS. استخدمه حين يجب أن تتشارك عدة خوادم شجرة مجلّدات واحدة.
بالنسبة إلى Lantern، الجواب في الغالب “لا هذا ولا ذاك”: تعيش الملصقات في S3، حيث تستطيع Lambda وCloudFront الوصول إليها. ويحصل خادم الترحيل المؤقت على volume صغير واحد من نوع gp3، ولا EFS على الإطلاق.
حُسم أمر الملفات. في الدرس التالي: البيانات التي تتغيّر كل ثانية، في قاعدة بيانات.
أهم النقاط
- يخزّن Amazon S3 الكائنات تحت مفاتيح (keys) داخل buckets، والـ buckets الجديدة تحجب الوصول العام وتعطّل الـ ACLs وتشفّر الكائنات افتراضيًا.
- فئات التخزين تقايض بين سعر التخزين وتكلفة الاسترجاع وسرعته والحد الأدنى لمدة التخزين؛ وS3 Standard هي الفئة الافتراضية.
- يحتفظ الـ versioning بكل نسخة من كل كائن، ما يحمي من الكتابة فوق الملفات وحذفها، لكنه يحتسب كل نسخة مخزّنة حتى تنهيها قاعدة دورة حياة (lifecycle rule).
- Amazon EBS قرص كتلي (block) لـ instance واحدة في EC2 ضمن منطقة توافر واحدة، ويُحتسب لكل غيغابايت محجوز.
- Amazon EFS نظام ملفات مشترك تستطيع instances كثيرة عبر مناطق التوافر تركيبه (mount) في الوقت نفسه، ويُحتسب لكل غيغابايت مخزّن فعلًا.
قراءات إضافية
- Understanding and managing Amazon S3 storage classes(يُفتح في علامة تبويب جديدة)
- Blocking public access to your Amazon S3 storage(يُفتح في علامة تبويب جديدة)
- Retaining multiple versions of objects with S3 Versioning(يُفتح في علامة تبويب جديدة)
- What is Amazon Elastic File System?(يُفتح في علامة تبويب جديدة)