0Pricing
Cloud & IT Cert Prep · درس

إنشاء بحيرة بيانات على S3

صمّم بحيرة بيانات قائمة على S3 بمناطق للهبوط والمعالجة والبيانات المنسّقة، وطبّق سياسات الحاويات، ونظّم البيانات حسب الأقسام لتحسين كفاءة الاستعلام

إنشاء بحيرة بيانات على S3 درس مجاني في Cloud & IT Cert Prep على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cloud & IT Cert Prep، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ما هي بحيرة البيانات؟

بحيرة البيانات هي مستودع مركزي يخزن البيانات المهيكلة وشبه المهيكلة وغير المهيكلة بأي حجم. وعلى خلاف مستودع البيانات، تخزن بحيرة البيانات البيانات بصيغتها الأولية الأصلية إلى أن تصبح مطلوبة للتحليل. ويُعد Amazon S3 الأساس الأكثر شيوعًا لبحيرات البيانات على AWS بفضل متانته وقابليته للتوسع وتكامله مع خدمات التحليلات.

بنية مناطق بحيرة البيانات

تستخدم بحيرة بيانات S3 المصممة جيدًا ثلاث مناطق منطقية: منطقة الهبوط (استقبال البيانات الأولية دون تعديل)، ومنطقة المعالجة (البيانات المنظفة والمحوّلة)، والمنطقة المنسقة (الجاهزة للتحليلات والقابلة للاستخدام من جانب الأعمال). تكون كل منطقة عادةً بادئة S3 أو حاوية منفصلة. ويُطلق على هذا النمط أحيانًا اسم بنية الميدالية (البرونزية والفضية والذهبية).

# Example zone structure inside one S3 bucket
# s3://my-data-lake/
#   landing/    <- raw ingest from source systems
#   processing/ <- cleansed, validated data
#   curated/    <- aggregated, analytics-ready

إنشاء بنية حاوية S3

استخدموا AWS CLI لإنشاء حاوية S3 ذات إصدارات ومشفرة، ثم طبّقوا بادئات لكل منطقة. فعّلوا الإصدار حتى يمكن دائمًا الرجوع عند إعادة المعالجة إلى المصدر الأولي، وفعّلوا التشفير من جانب الخادم (SSE-S3 أو SSE-KMS) للبيانات غير النشطة. احظروا كل الوصول العام للحفاظ على خصوصية البيانات.

aws s3api create-bucket \
  --bucket my-data-lake-123 \
  --region us-east-1

aws s3api put-bucket-versioning \
  --bucket my-data-lake-123 \
  --versioning-configuration Status=Enabled

aws s3api put-bucket-encryption \
  --bucket my-data-lake-123 \
  --server-side-encryption-configuration \
    '{"Rules":[{"ApplyServerSideEncryptionByDefault":{"SSEAlgorithm":"AES256"}}]}'

تطبيق سياسات الحاوية للوصول إلى المناطق

ينبغي أن تكون لكل منطقة سياسة وصول خاصة بها، بحيث لا تتمكن الفرق والخدمات المختلفة إلا من الوصول إلى ما تحتاج إليه. فعلى سبيل المثال، تحصل أدوار استيعاب البيانات على صلاحية s3:PutObject على بادئة الهبوط، وتحصل أدوار ETL على صلاحية القراءة في منطقة الهبوط والكتابة في منطقة المعالجة، بينما تحصل أدوار التحليلات على صلاحية القراءة فقط في المنطقة المنسقة. وبهذا يُفرض مبدأ أقل الصلاحيات داخل بحيرة البيانات.

# Attach a policy that allows the ETL role to read landing/ and write processing/
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::123456789012:role/ETLRole"},
      "Action": "s3:GetObject",
      "Resource": "arn:aws:s3:::my-data-lake-123/landing/*"
    },
    {
      "Effect": "Allow",
      "Principal": {"AWS": "arn:aws:iam::123456789012:role/ETLRole"},
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::my-data-lake-123/processing/*"
    }
  ]
}

تقسيم البيانات لتحسين كفاءة الاستعلام

ينظّم التقسيم البيانات في S3 باستخدام تسلسلات مجلدات تتوافق مع شروط الاستعلام (مثل السنة/الشهر/اليوم أو المنطقة/الخدمة). وعندما يقرأ Athena أو Glue البيانات المقسمة، فإنه يفحص الأقسام ذات الصلة فقط بدلًا من مجموعة البيانات بأكملها، ما يقلل بدرجة كبيرة من التكلفة ووقت الاستعلام. ومفتاح التقسيم الجيد هو الذي يظهر كثيرًا في عبارات WHERE.

# Hive-style partition naming for year/month/day
# s3://my-data-lake-123/curated/sales/
#   year=2024/month=01/day=15/part-00000.parquet
#   year=2024/month=01/day=16/part-00000.parquet
#   year=2024/month=02/day=01/part-00000.parquet

# Athena recognises this naming automatically

التنسيقات العمودية: Parquet وORC

يؤدي تخزين البيانات بتنسيق عمودي مثل Apache Parquet أو ORC (Optimised Row Columnar) إلى تحسين أداء الاستعلامات التحليلية بدرجة كبيرة وخفض تكاليف فحص بيانات S3. تتيح التنسيقات العمودية لمحركات الاستعلام قراءة الأعمدة المطلوبة فقط، وضغط القيم المتكررة بكفاءة، ودعم دفع الشروط إلى مصدر البيانات. حوّلوا دائمًا ملفات CSV أو JSON الأولية إلى Parquet في المنطقة المنسقة.

# Converting CSV to Parquet with AWS Glue (simplified PySpark)
import sys
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)

datasource = glueContext.create_dynamic_frame.from_catalog(
    database='my_db', table_name='raw_sales')

glueContext.write_dynamic_frame.from_options(
    frame=datasource,
    connection_type='s3',
    connection_options={'path': 's3://my-data-lake-123/curated/sales/'},
    format='parquet')

سياسات دورة حياة S3 لإدارة التكاليف

تنمو البيانات في منطقة الهبوط باستمرار، لكن نادرًا ما يُعاد الوصول إلى الملفات الأولية القديمة. استخدموا S3 Lifecycle Policies لنقل البيانات الأولية تلقائيًا إلى فئات تخزين أقل تكلفة بمرور الوقت. فعلى سبيل المثال، انقلوا الكائنات الموجودة في landing/ إلى S3 Glacier Instant Retrieval بعد 30 يومًا، وإلى Glacier Deep Archive بعد 90 يومًا. ويمكن لهذا الإجراء وحده خفض تكاليف التخزين بنسبة 70–90% للبيانات التاريخية.

aws s3api put-bucket-lifecycle-configuration \
  --bucket my-data-lake-123 \
  --lifecycle-configuration '{
    "Rules": [{
      "ID": "ArchiveLanding",
      "Filter": {"Prefix": "landing/"},
      "Status": "Enabled",
      "Transitions": [
        {"Days": 30, "StorageClass": "GLACIER_IR"},
        {"Days": 90, "StorageClass": "DEEP_ARCHIVE"}
      ]
    }]
  }'

Lake Formation للتحكم الدقيق في الوصول

تعمل خدمة AWS Lake Formation فوق S3 وGlue Data Catalogue لتوفير التحكم في الوصول على مستوى الجدول والعمود والصف، دون كتابة سياسات حاويات معقدة. تتكامل Lake Formation مع Athena وRedshift Spectrum وEMR. وهي النهج المفضل عندما تستعلم فرق متعددة من بحيرة البيانات نفسها وتحتاج إلى مستويات رؤية مختلفة للأعمدة الحساسة مثل معلومات التعريف الشخصية أو البيانات المالية.

# Grant Lake Formation table access via CLI
aws lakeformation grant-permissions \
  --principal DataLakePrincipalIdentifier=arn:aws:iam::123456789012:role/AnalystRole \
  --permissions SELECT \
  --resource '{
    "Table": {
      "DatabaseName": "my_db",
      "Name": "curated_sales"
    }
  }'

إشعارات أحداث S3 لمحفزات الاستيعاب

عند وصول ملف جديد إلى منطقة الهبوط في S3، تحتاجون إلى تشغيل المعالجة تلقائيًا. استخدموا S3 Event Notifications لنشر حدث إلى SQS أو SNS أو Lambda كلما أُنشئ كائن. ثم تلتقط دالة Lambda أو سير عمل Glue الملف الجديد، وتتحقق من صحته، وتنقله عبر مسار المعالجة. وينشئ ذلك عملية استيعاب مؤتمتة بالكامل وقائمة على الأحداث داخل بحيرة البيانات.

# S3 event notification to trigger Lambda on new object
aws s3api put-bucket-notification-configuration \
  --bucket my-data-lake-123 \
  --notification-configuration '{
    "LambdaFunctionConfigurations": [{
      "LambdaFunctionArn": "arn:aws:lambda:us-east-1:123456789012:function:ProcessNewFile",
      "Events": ["s3:ObjectCreated:*"],
      "Filter": {
        "Key": {"FilterRules": [{"Name": "prefix", "Value": "landing/"}]}
      }
    }]
  }'

التشفير والامتثال في بحيرة البيانات

يجب أن تفرض بحيرة البيانات الإنتاجية التشفير في جميع المواضع. استخدموا AWS KMS Customer Managed Keys (CMK) مع SSE-KMS للبيانات الحساسة، مع اشتراط منح صريحة للمفاتيح لكل مستهلك. فعّلوا S3 Object Lock في وضع Compliance للبيانات التنظيمية التي يجب عدم حذفها أو الكتابة فوقها. استخدموا Macie لاكتشاف معلومات التعريف الشخصية المخزنة في البحيرة والتنبيه إليها تلقائيًا.

# Enforce KMS encryption on all PUT operations via bucket policy
{
  "Effect": "Deny",
  "Principal": "*",
  "Action": "s3:PutObject",
  "Resource": "arn:aws:s3:::my-data-lake-123/curated/*",
  "Condition": {
    "StringNotEquals": {
      "s3:x-amz-server-side-encryption": "aws:kms"
    }
  }
}

الوصول إلى بحيرة البيانات عبر الحسابات

في المؤسسات الكبيرة، توجد حاوية S3 الخاصة ببحيرة البيانات في حساب مركزي تابع لـ منصة البيانات، بينما تعمل فرق المستهلكين في حسابات AWS منفصلة. امنحوا الوصول باستخدام مزيج من سياسات الحاوية (مع إدراج كيان حساب المستهلك) وأدوار IAM في حساب المستهلك التي تفترض صلاحيات عبر الحسابات. ويُعد Resource Access Manager (RAM) بديلًا للمشاركة القائمة على Lake Formation.

# Bucket policy in central account allows consumer account to read curated/
{
  "Effect": "Allow",
  "Principal": {
    "AWS": "arn:aws:iam::999988887777:root"
  },
  "Action": ["s3:GetObject", "s3:ListBucket"],
  "Resource": [
    "arn:aws:s3:::my-data-lake-123",
    "arn:aws:s3:::my-data-lake-123/curated/*"
  ]
}

تحقق سريع

اختبروا مدى فهمكم لمفاهيم AWS Solutions Architect (SAA-C03) الواردة في هذا الدرس.

مراجعة الدرس

تعلمتم في هذا الدرس أن: بحيرات البيانات تستخدم S3 مع مناطق الهبوط والمعالجة والتنسيق، وأن التقسيم وتنسيق Parquet يقللان تكاليف استعلامات Athena، وأن Lake Formation يوفر تحكمًا دقيقًا في الوصول على مستوى الأعمدة والصفوف. سنستكشف بعد ذلك AWS Glue لإجراء ETL بلا خوادم وGlue Data Catalogue.

الأسئلة الشائعة

هل درس «إنشاء بحيرة بيانات على S3» مجاني؟

نعم — نص درس «إنشاء بحيرة بيانات على S3» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cloud & IT Cert Prep، انتقل إلى CoddyKit PRO. تتضمن دورة Cloud & IT Cert Prep 4 دروس في المجموع.

ماذا ستتعلم في «إنشاء بحيرة بيانات على S3»؟

صمّم بحيرة بيانات قائمة على S3 بمناطق للهبوط والمعالجة والبيانات المنسّقة، وطبّق سياسات الحاويات، ونظّم البيانات حسب الأقسام لتحسين كفاءة الاستعلام تتمرن على Cloud & IT Cert Prep مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Cloud & IT Cert Prep؟

لا تُشترط خبرة سابقة. Cloud & IT Cert Prep على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «إنشاء بحيرة بيانات على S3»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Cloud & IT Cert Prep هذا؟

نعم. كل درس في Cloud & IT Cert Prep يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء بحيرة بيانات على S3
  2. AWS Glue: ETL وكتالوج البيانات
  3. Amazon Athena: SQL دون خوادم على S3
  4. Kinesis Streams وFirehose والتحليلات الفورية
← العودة إلى Cloud & IT Cert Prep