0Pricing
Cloud & IT Cert Prep · درس

وظائف Lambda: أوقات التشغيل والمشغلات والمعالجات

اكتبوا وظيفة Lambda، واختاروا وقت تشغيل، واضبطوا الذاكرة والمهلة، واربطوها بحدث S3 أو مشغّل API Gateway.

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

ما هي AWS Lambda؟

AWS Lambda هي خدمة حوسبة بلا خوادم تشغّل التعليمات البرمجية استجابةً للأحداث، من دون الحاجة إلى توفير الخوادم أو إدارتها. ولا تدفعون إلا مقابل وقت الحوسبة المستهلك، والذي يُقاس بـ الميلي ثانية، مما يجعل Lambda شديدة الكفاءة من حيث التكلفة لأحمال العمل المتقطعة والمدفوعة بالأحداث. وتتوسع Lambda تلقائيًا من صفر إلى آلاف عمليات التنفيذ المتزامنة استنادًا إلى الأحداث الواردة.

بيئات التشغيل المدعومة

تدعم Lambda بيئات تشغيل مُدارة، بما في ذلك Python وNode.js وJava وGo وRuby و.NET وغيرها. وتتولى AWS صيانة هذه البيئات وتطبيق تصحيحات الأمان عليها. وبالنسبة إلى اللغات أو إصدارات بيئات التشغيل غير المدعومة أصليًا، يمكنكم توفير Custom Runtime عبر ملف تنفيذي باسم bootstrap، أو حزم وظيفتكم في container image (بحجم يصل إلى 10 GB) بدلًا من حزمة نشر ZIP.

دالة معالج Lambda

تحتوي كل دالة Lambda على معالج—وهو نقطة الدخول التي يجب أن يصدّرها الكود. تستدعي AWS المعالج بوسيطين: كائن event (بيانات الإدخال الواردة من المُشغِّل) وكائن context (بيانات وصفية عن الاستدعاء، مثل اسم الدالة والوقت المتبقي ومعرّف الطلب). يعيد المعالج استجابة قد تُعاد إلى المستدعي، بحسب نوع الاستدعاء.

# Python handler example
def lambda_handler(event, context):
    # event contains the trigger payload
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']
    print(f'Processing {key} from {bucket}')
    return {
        'statusCode': 200,
        'body': 'Processed successfully'
    }

الذاكرة والمهلة والتخزين المؤقت

تتيح لك Lambda ضبط الذاكرة من 128 MB إلى 10,240 MB. ويُخصَّص CPU بنسبة تتناسب مع الذاكرة—فكلما زادت الذاكرة، زادت قدرة CPU. يمكن ضبط المهلة من ثانية واحدة إلى 15 دقيقة؛ وإذا تجاوزت دالتك هذه المدة، تُنهيها Lambda. كما تحصل على تخزين مؤقت في /tmp (512 MB افتراضياً، ويمكن ضبطه حتى 10 GB) للملفات المؤقتة ضمن استدعاء واحد. لا يستمر هذا التخزين بين الاستدعاءات.

الاستدعاء المتزامن وغير المتزامن

يمكن استدعاء دوال Lambda بشكل متزامن (ينتظر المستدعي النتيجة—ويُستخدم مع API Gateway وALB) أو بشكل غير متزامن (لا ينتظر المستدعي—ويُستخدم مع أحداث S3 وSNS). في الوضع غير المتزامن، تعيد Lambda محاولة عمليات التنفيذ الفاشلة حتى مرتين، ويمكنها توجيه الأحداث الفاشلة إلى قائمة انتظار الرسائل غير القابلة للتسليم (SQS أو SNS) أو إلى ناقل أحداث EventBridge. يؤثر اختيار وضع الاستدعاء المناسب في تصميم معالجة الأخطاء.

مشغلات Lambda الشائعة

تتكامل Lambda بصورة أصلية مع عشرات خدمات AWS كمصادر للأحداث (مشغلات):

  • API Gateway / ALB: طلبات HTTP (متزامنة)
  • S3: أحداث إنشاء الكائنات/حذفها (غير متزامنة)
  • DynamoDB Streams / Kinesis: تدفق السجلات (يعتمد على الاستقصاء، متزامن)
  • SQS: رسائل قائمة الانتظار (يعتمد على الاستقصاء)
  • SNS: إشعارات الموضوعات (غير متزامنة)
  • EventBridge: أحداث مجدولة أو مخصصة
  • CloudWatch Logs: عوامل تصفية الاشتراك في السجلات

دور تنفيذ IAM

يجب أن تمتلك كل دالة Lambda دور تنفيذ IAM يمنح الدالة أذونات لاستدعاء خدمات AWS الأخرى. على سبيل المثال، إذا كانت دالتك تقرأ من S3 وتكتب إلى DynamoDB، يحتاج دور التنفيذ إلى أذونات s3:GetObject وdynamodb:PutItem. اتبع مبدأ أقل الصلاحيات: امنح الأذونات التي تحتاجها دالتك فعلياً فقط. يجب أن يتضمن دور التنفيذ الأساسي أيضاً logs:CreateLogGroup وlogs:CreateLogStream وlogs:PutLogEvents لخدمة CloudWatch Logs.

حزم النشر وحدود الحجم

تقبل Lambda تنسيقين للنشر: ملف ZIP (50 MB مضغوطاً و250 MB بعد فك الضغط) يُرفع مباشرة أو عبر S3، وصورة حاوية (حتى 10 GB) مخزنة في Amazon ECR. تُنشر حزم ZIP بسرعة أكبر، وهي مناسبة للدوال الصغيرة وLambda Layers. أما صور الحاويات فهي مثالية لمجموعات التبعيات الكبيرة أو للفرق التي تستخدم بالفعل سير عمل يعتمد على Docker. يمكن لكلا التنسيقين استخدام بيئات التشغيل نفسها ونمط المعالج نفسه.

# Deploy a ZIP package from S3
aws lambda update-function-code \
  --function-name 'MyFunction' \
  --s3-bucket 'my-lambda-packages' \
  --s3-key 'my-function-v2.zip'

متغيرات البيئة والأسرار

مرّر الإعدادات إلى Lambda عبر متغيرات البيئة. بالنسبة إلى القيم الحساسة، مثل مفاتيح API وكلمات مرور قواعد البيانات، خزّنها في AWS Secrets Manager أو Parameter Store واسترجعها عند وقت تهيئة الدالة (خارج المعالج) للاستفادة من إعادة استخدام سياق التنفيذ. لا تضمّن الأسرار مطلقاً بشكل ثابت في كود الدالة أو في متغيرات البيئة كنص عادي—استخدم تشفير KMS لمتغيرات بيئة Lambda لحمايتها أثناء التخزين.

import boto3
import os

# Fetch secret once during cold start (outside handler)
ssm = boto3.client('ssm')
DB_PASSWORD = ssm.get_parameter(
    Name=os.environ['DB_PASSWORD_PARAM'],
    WithDecryption=True
)['Parameter']['Value']

def lambda_handler(event, context):
    # DB_PASSWORD is already loaded; no SSM call on each invocation
    pass

البدء البارد وإعادة استخدام سياق التنفيذ

يتضمن أول استدعاء لدالة Lambda بعد النشر أو بعد فترة من عدم النشاط بدءاً بارداً: إذ يجب على AWS تهيئة بيئة التشغيل، وتنزيل حزمة النشر، وتشغيل كود التهيئة. الاستدعاءات اللاحقة ضمن بيئة التنفيذ نفسها هي عمليات بدء دافئة وتكون أسرع بكثير. احتفظ بكود التهيئة العام، مثل عملاء SDK واتصالات قاعدة البيانات، خارج المعالج لإعادة استخدام سياق التنفيذ عبر الاستدعاءات الدافئة.

Lambda في VPC

تعمل Lambda افتراضياً في VPC تديرها AWS ويمكنها الوصول إلى الإنترنت، لكنها لا تستطيع الوصول إلى موارد VPC الخاصة بك. للوصول إلى قاعدة بيانات RDS أو مجموعة ElastiCache في شبكة فرعية خاصة، اضبط Lambda لتعمل داخل VPC الخاصة بك عبر تحديد الشبكات الفرعية ومجموعات الأمان. تستخدم دوال Lambda المفعّلة ضمن VPC Hyperplane ENIs للشبكات (ولم تعد هناك حاجة لتوفير ENI لكل دالة)، مما يلغي عقوبة البدء البارد التاريخية لدوال Lambda في VPC.

aws lambda update-function-configuration \
  --function-name 'MyFunction' \
  --vpc-config 'SubnetIds=subnet-aaa111,subnet-bbb222,SecurityGroupIds=sg-xyz'

تحقق سريع

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

ملخص الدرس

تعلمت في هذا الدرس ما يلي: تدعم بيئات تشغيل Lambda Python وNode.js وJava وGo وغيرها، مع بيئات تشغيل مخصصة وصور حاويات للحالات المتقدمة؛ وتحدد المشغلات، بما فيها API Gateway (متزامن) وS3/SNS (غير متزامن)، كيفية تدفق الأحداث إلى دوال Lambda؛ ويُعد دور التنفيذ ومتغيرات البيئة وإعداد VPC جوانب أساسية لربط Lambda بخدمات AWS الأخرى بأمان. بعد ذلك، سنستكشف التزامن في Lambda والخنق والتزامن المحجوز.

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

هل درس «وظائف Lambda: أوقات التشغيل والمشغلات والمعالجات» مجاني؟

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

ماذا ستتعلم في «وظائف Lambda: أوقات التشغيل والمشغلات والمعالجات»؟

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

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

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

كم من الوقت يستغرق درس «وظائف Lambda: أوقات التشغيل والمشغلات والمعالجات»؟

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

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

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

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

  1. وظائف Lambda: أوقات التشغيل والمشغلات والمعالجات
  2. التزامن والتقييد والتزامن المحجوز
  3. طبقات Lambda وحزم النشر
  4. Lambda@Edge والأنماط المستندة إلى الأحداث
← العودة إلى Cloud & IT Cert Prep