انتقل إلى المحتوى الرئيسي

MODULE 11 - Serverless : AWS Lambda

نظرة عامة​

هذا الوحدة تقدم السيرفرلس مع AWS Lambda. إنه نموذج مختلف حيث لا يوجد لديك خوادم لإدارتها - أنت فقط تكتب الكود الذي يتم تنفيذه عند الطلب.

التقييم الختامي

هذه الوحدة تتضمن التقييم 3 (25%) الذي يغطي Lambda والتحقق.

LocalStack يدعم Lambda!

خبر جيد: LocalStack يحاكي Lambda بشكل جيد. ستتمكن من ممارسة هذه الوحدة فعليًا!

أهداف التعلم​

  • فهم نموذج السيرفرلس
  • مقارنة Lambda مقابل الآلات الافتراضية
  • إنشاء ونشر وظائف Lambda
  • تكوين أذونات IAM الدنيا
  • تحليل سجلات CloudWatch
  • اختبار والتحقق من الوظائف

محتوى الأسبوع​

1. السيرفرلس مقابل VM​

┌─────────────────────────────────────────────────────────────┐
│ SERVERLESS vs VM │
├─────────────────────────────────────────────────────────────┤
│ │
│ EC2 (VM) LAMBDA (Serverless) │
│ ──────── ──────────────────── │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Instance │ │ Function │ │
│ │ (24/7) │ │ (on demand) │ │
│ │ │ │ │ │
│ │ OS + Runtime │ │ Code only │ │
│ │ + Application │ │ │ │
│ │ │ │ Triggered by │ │
│ │ Always UP │ │ event │ │
│ └─────────────────┘ └─────────────────┘ │
│ │
│ أنت تدير: أنت تدير: │
│ • OS • Code │
│ • Patching • Configuration │
│ • Scaling │
│ • Availability AWS يدير الباقي! │
│ │
│ الفوترة: الفوترة: │
│ • بالساعة • لكل تنفيذ │
│ • حتى في وضع الخمول • 0$ إن لم يُنفَّذ │
│ │
└─────────────────────────────────────────────────────────────┘

2. تشريح وظيفة Lambda​

# Exemple Python

def handler(event, context):
"""
Handler = نقطة دخول الوظيفة

event = بيانات الإدخال (JSON)
context = معلومات وقت التشغيل (الوقت المتبقي، الذاكرة...)
"""

# منطقك هنا
name = event.get('name', 'World')
message = f"Hello, {name}!"

# العودة (التنسيق يعتمد على المشغل)
return {
'statusCode': 200,
'body': message
}

3. المشغلات (Triggers)​

TriggerDescriptionExemple
API Gatewayطلب HTTPREST API
S3تحميل ملفمعالجة الصور
DynamoDBتغيير البياناتتزامن، إشعار
SQSرسالة في قائمةمعالجة غير متزامنة
CloudWatch EventsجدولةCron job
SNSإشعارFan-out

4. حدود Lambda​

LimiteValeurNotes
Timeout max15 minutesلكل تنفيذ
Mémoire128 MB - 10 GBCPU متناسب
Package50 MB (zip) / 250 MB (décompressé)كود + تبعيات
Concurrence1000 (par défaut)لكل حساب/منطقة
/tmp storage512 MB - 10 GBمؤقت

مختبر عملي مع LocalStack​

إنشاء وظيفة Lambda​

# 1. إنشاء ملف الوظيفة
cat > lambda_function.py << 'EOF'
def handler(event, context):
name = event.get('name', 'World')
return {
'statusCode': 200,
'body': f'Hello, {name}!'
}
EOF

# 2. ضغط الملف
zip function.zip lambda_function.py

# 3. إنشاء الوظيفة على LocalStack
awslocal lambda create-function \
--function-name hello-function \
--runtime python3.9 \
--handler lambda_function.handler \
--zip-file fileb://function.zip \
--role arn:aws:iam::000000000000:role/lambda-role

# 4. استدعاء الوظيفة
awslocal lambda invoke \
--function-name hello-function \
--payload '{"name": "AWS Student"}' \
output.txt

# 5. عرض النتيجة
cat output.txt

اختبار مع API Gateway (LocalStack)​

# إنشاء API REST
awslocal apigateway create-rest-api \
--name 'Hello API'

# قائمة APIs
awslocal apigateway get-rest-apis

التقييم 3 (25%)​

الشكل​

  • مختبر عملي LocalStack (60%)
  • أسئلة نظرية (40%)

المحتوى المغطى​

  • إنشاء وظائف Lambda
  • الاستدعاء والاختبارات
  • قراءة السجلات
  • حالات استخدام السيرفرلس
  • مقارنة مع EC2

التسليم​

وظيفة Lambda موثقة + اختبارات:

  • كود مصدر مع تعليقات
  • لقطات شاشة للاستدعاء
  • تحليل السجلات
  • اقتراحات للتحسين

التنقل​

  1. مفاهيم Lambda
  2. إنشاء الوظائف
  3. اختبار التحقق - 30 سؤال للتحقق من معرفتك
  4. مختبر: Lambda

الأسبوع التالي: MODULE 12 - استكشاف أخطاء Lambda