Business Digital

S3: versioning و lifecycle والأمن — درس AWS SAA-C03 2026

7 دقائق للقراءة

إتقان S3: إنشاء bucket، تفعيل versioning، إعداد lifecycle (Standard ← IA ← Glacier)، تشفير SSE-S3/SSE-KMS، bucket policies، presigned URLs، cross-region replication، S3 Object Lock للامتثال، classes تخزين وأسعارها.

للسياق: الدليل الرئيسي AWS SAA-C03.

المقدّمة

S3 (Simple Storage Service) هي object storage في AWS، إحدى الخدمات الأكثر وزناً في SAA-C03. ~15% من الأسئلة تدور حول S3: الأمن، classes التخزين، المتانة 99.999999999% (11 nines)، أنماط الاستعمال. هذا الدرس يبني الكفاءة الكاملة.

المتطلّبات

  • حساب AWS مُهيَّأ.
  • AWS CLI شغّال.
  • المستوى المتوسّط.
  • الوقت: ساعتان.

الخطوة 1 — إنشاء bucket والـ upload

# اسم bucket = فريد عالميّاً على AWS
aws s3 mb s3://diallo-lab-2026 --region eu-west-3

# Upload ملفّ
echo "Hello S3" > test.txt
aws s3 cp test.txt s3://diallo-lab-2026/

# قائمة
aws s3 ls s3://diallo-lab-2026/

# Sync مجلّد كاملاً
aws s3 sync ./mon-dossier s3://diallo-lab-2026/dossier/

# Download
aws s3 cp s3://diallo-lab-2026/test.txt downloaded.txt

# حذف
aws s3 rm s3://diallo-lab-2026/test.txt
aws s3 rb s3://diallo-lab-2026 --force  # يحذف bucket حتى لو غير فارغ

الخطوة 2 — Storage Classes

S3 Standard               : وصول عالي التكرار، الافتراضي. ~0.023 USD/Go/شهر
S3 Standard-IA            : Infrequent Access، وصول > 30 يوم. ~0.0125 USD/Go/شهر + رسوم retrieval
S3 One Zone-IA            : IA في AZ واحدة، 20% أرخص، متانة أقلّ
S3 Glacier Instant Retrieval: أرشيف وصول بالميلّي ثانية، ~0.004 USD/Go/شهر
S3 Glacier Flexible Retrieval: أرشيف مع restore 1 دقيقة-12 ساعة، ~0.0036 USD/Go/شهر
S3 Glacier Deep Archive   : أرشيف وصول 12 ساعة، ~0.00099 USD/Go/شهر (الأرخص)
S3 Intelligent-Tiering    : tiering آليّ مبنيّ على الوصول، رسوم monitoring 0.0025 USD/1000 obj
S3 Express One Zone       : أداء فائق، AZ واحدة، ~7x سعر Standard

في الاختبار: اختر حسب السيناريو. logs حديثة ← Standard. backups شهريّة ← IA. أرشيف قانونيّ 7 سنوات ← Glacier Deep Archive. بيانات استعمال غير متوقّع ← Intelligent-Tiering.

الخطوة 3 — Versioning

Versioning يحفظ كلّ النسخ من كائن — حيويّ للمرونة ضدّ الحذف العرضيّ.

# تفعيل versioning
aws s3api put-bucket-versioning --bucket diallo-lab-2026 --versioning-configuration Status=Enabled

# Upload نفس الملفّ 3 مرّات ← 3 نسخ
echo "v1" > file.txt && aws s3 cp file.txt s3://diallo-lab-2026/file.txt
echo "v2" > file.txt && aws s3 cp file.txt s3://diallo-lab-2026/file.txt
echo "v3" > file.txt && aws s3 cp file.txt s3://diallo-lab-2026/file.txt

# قائمة النسخ
aws s3api list-object-versions --bucket diallo-lab-2026

# استعادة نسخة سابقة
aws s3api copy-object --bucket diallo-lab-2026 --copy-source diallo-lab-2026/file.txt?versionId=xxx --key file.txt

في الاختبار: versioning + MFA Delete = حماية من ransomware. بمجرّد تفعيله، يمكن إيقافه (لا تعطيله).

الخطوة 4 — Lifecycle policies

أتمتة انتقال الكائنات نحو classes أرخص حسب عمرها.

{
  "Rules": [
    {
      "Id": "TransitionToIA-then-Glacier",
      "Status": "Enabled",
      "Filter": { "Prefix": "logs/" },
      "Transitions": [
        { "Days": 30, "StorageClass": "STANDARD_IA" },
        { "Days": 90, "StorageClass": "GLACIER_IR" },
        { "Days": 365, "StorageClass": "DEEP_ARCHIVE" }
      ],
      "Expiration": { "Days": 2555 }
    }
  ]
}
aws s3api put-bucket-lifecycle-configuration --bucket diallo-lab-2026 --lifecycle-configuration file://lifecycle.json

ROI: 1 To من logs ← في Standard 230 USD/سنة، lifecycle نحو Glacier Deep Archive عند 90 يوم = 80 USD/سنة. توفير 65%.

الخطوة 5 — Encryption at rest

SSE-S3                : مفتاح مُدار من S3 (AES-256). مُفعَّل افتراضياً على buckets جديدة منذ يناير 2023
SSE-KMS               : مفتاح مُدار من AWS KMS، audit CloudTrail للفكّ
SSE-KMS DSSE          : تشفير مزدوج (FIPS 140-3 validated)
SSE-C                 : مفتاح يقدّمه العميل (S3 لا يخزّن المفتاح)
Client-side encryption: تشفير قبل upload، S3 يخزّن ciphertext

في الاختبار: SSE-KMS = موصى به لـ audit + multi-tenant. SSE-S3 = بسيط، افتراضيّ. SSE-C = امتثال صارم (HIPAA، FIPS).

# تفعيل تشفير SSE-KMS على bucket
aws s3api put-bucket-encryption --bucket diallo-lab-2026 --server-side-encryption-configuration '{
  "Rules": [{
    "ApplyServerSideEncryptionByDefault": {
      "SSEAlgorithm": "aws:kms",
      "KMSMasterKeyID": "alias/aws/s3"
    }
  }]
}'

الخطوة 6 — Bucket policies و IAM

آليّتان للتحكّم في الوصول:

IAM policies (user/role)  : من يستطيع فعل ماذا على S3 إجمالاً
Bucket policies           : من يستطيع فعل ماذا على هذا الـ bucket تحديداً
ACL (Access Control List) : LEGACY، تجنّبه في 2026

Bucket policy قراءة عامّة (حالة استضافة ساكنة):

{
  "Version": "2012-10-17",
  "Statement": [{
    "Sid": "AllowPublicRead",
    "Effect": "Allow",
    "Principal": "*",
    "Action": "s3:GetObject",
    "Resource": "arn:aws:s3:::diallo-lab-2026/*"
  }]
}

⚠️ فعّل « Block Public Access » افتراضياً، عطّله صراحة فقط لـ bucket الاستضافة الساكنة.

# حجب كلّ وصول عامّ (افتراضيّ منذ 2023)
aws s3api put-public-access-block --bucket diallo-lab-2026 --public-access-block-configuration "BlockPublicAcls=true,IgnorePublicAcls=true,BlockPublicPolicy=true,RestrictPublicBuckets=true"

الخطوة 7 — Presigned URLs

لإعطاء وصول مؤقّت إلى ملفّ خاصّ بلا bucket عامّ:

# توليد URL صالحة لـ 1 ساعة
aws s3 presign s3://diallo-lab-2026/private.pdf --expires-in 3600

الـ URL المُوقَّعة تعطي وصولاً إلى كائن دون استيثاق AWS، خلال المدّة المُحدَّدة. نمط متكرّر: التطبيق يولّد URL لـ download مستخدم، يفتحه عند الاستعمال.

الخطوة 8 — Cross-Region Replication

للـ DR أو الامتثال، تكرار bucket نحو منطقة أخرى:

1. Source bucket: versioning enabled (إلزاميّ)
2. Destination bucket: versioning enabled، في منطقة أخرى
3. إنشاء IAM role يسمح لـ S3 بالتكرار
4. إعداد replication rule (كائنات، préfixe، classe destination)

الأنواع:

SRR (Same-Region Replication)  : امتثال داخليّ، تجميع logs
CRR (Cross-Region Replication) : DR، latence client
RTC (Replication Time Control) : 99% الكائنات مُكرَّرة في 15 دقيقة

الخطوة 9 — S3 Object Lock للامتثال

يمنع حذف الكائنات للامتثال التنظيمي (SEC 17a-4، HIPAA).

Governance mode: فقط user مميَّز يستطيع bypass
Compliance mode: لا أحد، حتى root، يستطيع الحذف قبل retention
Legal Hold      : flag غير محدود يحمي الكائن

للتفعيل عند إنشاء bucket فقط (غير قابل للتعديل لاحقاً).

الخطوة 10 — استضافة موقع ساكن S3

aws s3 mb s3://my-static-site-2026
aws s3 cp index.html s3://my-static-site-2026/
aws s3 website s3://my-static-site-2026 --index-document index.html --error-document error.html

# URL: http://my-static-site-2026.s3-website-eu-west-3.amazonaws.com

لـ HTTPS والأداء العالميّ، أضف CloudFront أمامه (CDN AWS) — نمط قياسي لـ SPA، مدوّنة ساكنة.

الأخطاء المتكرّرة

الخطأ الحلّ
اسم bucket مأخوذ فريد عالميّاً: أضف ID الحساب أو suffix عشوائيّ
Public access blocked « Block Public Access » نشط، عطّله لحالة استعمال عامّة شرعيّة
403 على GetObject تحقّق من IAM policy + bucket policy + Block Public Access
Lifecycle policy لا يُطبَّق انتظر 24h، بعض الانتقالات batch async
Versioning + حذف عرضيّ استعد النسخة السابقة، لا تحذف الـ marker

خصائص للدمج في PME غرب إفريقيا

Backups للـ PME: S3 + lifecycle نحو Glacier Deep Archive = backup خارج الموقع بـ 1 USD/To/شهر. تنافسيّ مقابل الحلول المحلّيّة.

استضافة ساكنة: S3 + CloudFront لـ blog، portfolio، SPA. ~5 USD/شهر لـ 10 000 زائر. أرخص من VPS.

Data lake analytics: S3 + Athena (SQL serverless) لتحليل TBs من البيانات دون إدارة cluster. الاستعلامات مُفوتَرة بـ 5 USD/TB ممسوح.

أسئلة شائعة

S3 مقابل EBS؟

S3 = object storage، وصول عبر HTTP API، scalabilité لا نهائيّة. EBS = block storage مرفق بـ instance، latence ms.

كم متانة S3؟

99.999999999% (11 nines). لـ 10M كائن مُخزَّن، الخسارة المتوقّعة كائن واحد كلّ 10 000 سنة.

هل Glacier Deep Archive مفيد عمليّاً؟

نعم، لأرشيف قانونيّ 7+ سنوات (بنوك، اتّصالات). Restore 12h مقبول لهذه الحالة.

في التتمّة


الكلمات المفتاحيّة: AWS S3، versioning lifecycle، Glacier Deep Archive، SSE-KMS، bucket policy، presigned URL، Cross-Region Replication، Object Lock compliance.


دراسات حالات حقيقيّة لـ AWS في غرب إفريقيا

الحالة 1 — Fintech mobile money، داكار، 2025. 4 ملايين معاملة/شهر. ALB متعدّد AZ + ECS Fargate + Aurora Serverless v2 + DynamoDB + S3 + CloudFront. التكلفة 4 200 USD/شهر، التوفّر 99.98%.

الحالة 2 — تجارة إلكترونيّة عابرة لإفريقيا. 80 000 زائر/يوم. multi-region active-active: eu-west-3 + af-south-1. التكلفة 8 500 USD/شهر، ROI +23% تحويل.

الحالة 3 — هجرة بنك تقليديّ. lift-and-shift لـ 80% workloads في 14 شهراً. توفير 40% منذ السنة 1، 55% في السنة 3.

خمسة سيناريوهات SAA-C03

1: تجارة إلكترونيّة HA لـ Black Friday. ALB + ASG scheduled scaling، CloudFront، Aurora Read Replicas، ElastiCache، SQS.

2: DR cross-region. Pilot Light، Aurora Global Database، AMI مُكرَّرة، Route 53 health checks.

3: تأمين بيانات. S3 SSE-KMS، تشفير EBS، RDS مُشفَّر، IAM least privilege، CloudTrail نحو S3 Object Lock، GuardDuty.

4: تحسين تكلفة. Instance Scheduler، RIs، Spot، S3 Intelligent-Tiering، Compute Savings Plans. توفير 65-75%.

5: امتثال PCI DSS. تجزئة VPC، WAF + Shield، CloudHSM، AWS Config، Inspector، Security Hub، AWS Audit Manager.

معماريّة cloud-native حديثة

[Route 53] → [CloudFront] → [WAF] → [API Gateway/ALB]
        ↓ Lambda + ECS Fargate + EKS
        ↓ Aurora Serverless v2 + DynamoDB
        ↓ ElastiCache + S3
[Observability: CloudWatch + X-Ray + EventBridge]
[الأمن: IAM + KMS + GuardDuty + Security Hub]
[الحوكمة: Organizations + SCP + Control Tower]

التكاليف بـ FCFA لـ PME

30 موظّفاً، تطبيق SaaS، 10 000 مستخدم/شهر: ~225 USD/شهر ≈ 135 000 FCFA/شهر. مع RIs 3 سنوات: ~87 000 FCFA/شهر.

خطّة مهنة بعد AWS SAA

0-12 شهراً: cloud engineer junior. 800 000-1 200 000 FCFA.
12-30 شهراً: DevOps Pro أو Security Specialty. 1 400 000-2 000 000 FCFA.
30-60 شهراً: architect، SAP-C02. 2 200 000-3 500 000 FCFA محلّياً، 4-7 ملايين FCFA remote.
60+ شهراً: senior، Engineering Manager، freelance 400-800 USD/يوم.

أدوات تكميليّة

IaC: Terraform، AWS CDK، Pulumi.
CI/CD: GitHub Actions، GitLab CI، CodePipeline.
Containers: ECS، EKS، Fargate.
Observability: CloudWatch، Datadog، Grafana Cloud.
FinOps: Cost Explorer + Budgets، Vantage.sh.
الأمن: Prowler، Security Hub، Wiz.

مقالات ذات صلة

مشاركة