اختبار التحقق - الوحدة 12
هذا الاختبار المكون من 30 سؤالًا يتيح لك التحقق من معرفتك في استكشاف أخطاء Lambda قبل الانتقال إلى المختبر العملي.
السؤال 1
أين تجد سجلات دالة Lambda؟
A) في S3
B) في CloudWatch Logs، المجموعة /aws/lambda/اسم-الدالة
C) على المثيل EC2
D) في DynamoDB
عرض الإجابة
الإجابة: B
يتم إرسال سجلات Lambda تلقائيًا إلى CloudWatch Logs في المجموعة /aws/lambda/اسم-الدالة. كل حاوية تنفيذ تنشئ تدفق سجلات. تحقق من أن الدالة لديها أذونات CloudWatch Logs.
السؤال 2
ماذا تعني خطأ "Task timed out"؟
A) انتهت مهلة الاتصال بالشبكة
B) تجاوزت الدالة المهلة المحددة
C) انتهت مهلة المشغل
D) انتهت مهلة API
عرض الإجابة
الإجابة: B
"Task timed out after X seconds" تعني أن الدالة لم تنته في المهلة المحددة (timeout). الحلول: زيادة المهلة (الحد الأقصى 15 دقيقة)، تحسين الكود، أو اكتشاف سبب بطء التنفيذ (انتظار الشبكة، قاعدة البيانات).
السؤال 3
كيف تزيد مهلة دالة Lambda؟
A) لا يمكن تكوينها
B) في إعدادات الدالة، تعديل المعلمة Timeout (الحد الأقصى 15 دقيقة)
C) عبر الكود فقط
D) عن طريق الاتصال بـ AWS
عرض الإجابة
الإجابة: B
المهلة قابلة للتكوين في إعدادات الدالة: وحدة التحكم، CLI، أو قالب CloudFormation/SAM. القيمة القصوى هي 900 ثانية (15 دقيقة). قم بتكييفها وفقًا للوقت الفعلي المطلوب بالإضافة إلى هامش.
السؤال 4
ماذا تشير خطأ "out of memory"؟
A) القرص ممتلئ
B) تجاوزت الدالة الذاكرة المخصصة
C) CloudWatch يفتقر إلى التخزين
D) S3 ممتلئ
عرض الإجابة
الإجابة: B
"Runtime exited with error: signal: killed" أو "Memory Size: X MB Max Memory Used: X MB" تشير إلى أن الدالة استخدمت كل ذاكرتها. الحل: زيادة الذاكرة المخصصة أو تحسين الكود لاستخدام ذاكرة أقل.
السؤال 5
كيف تعرف مقدار الذاكرة التي تستخدمها دالة؟
A) لا يمكن قياسها
B) في سجلات CloudWatch "REPORT" أو المقاييس "Max Memory Used"
C) عبر الكود
D) في وحدة التحكم EC2
عرض الإجابة
الإجابة: B
كل استدعاء يولد سطر REPORT في السجلات: "Memory Size: 128 MB Max Memory Used: 85 MB". المقياس CloudWatch "MaxMemoryUsed" يظهر أيضًا هذه القيمة. إذا كانت قريبة من الحد، قم بزيادة الذاكرة.
السؤال 6
ما هو خطأ "Access Denied" في Lambda؟
A) رفض الوصول إلى وحدة التحكم
B) الدالة لا تملك أذونات IAM للوصول إلى مورد
C) كلمة المرور غير صحيحة
D) VPC محظور
عرض الإجابة
الإجابة: B
"Access Denied" تعني أن دور IAM للدالة لا يملك الأذونات اللازمة. تحقق من أن الدور لديه السياسات للوصول إلى S3، DynamoDB، SQS، أو أي خدمة أخرى يستخدمها الكود.
السؤال 7
كيف تشخص أخطاء الأذونات في Lambda؟
A) انتظار اختفائها
B) التحقق من السجلات للخطأ الدقيق، ثم تعديل سياسات IAM للدور
C) إعادة إنشاء الدالة
D) الاتصال بـ AWS
عرض الإجابة
الإجابة: B
اقرأ سجلات CloudWatch لتحديد المورد والإجراء المرفوضين. تحقق من دور IAM للدالة. أضف السياسة اللازمة (مثال: s3:GetObject). اختبر مرة أخرى. استخدم IAM Policy Simulator للتحقق.
السؤال 8
دالة Lambda في VPC لا يمكنها الوصول إلى الإنترنت. لماذا؟
A) هذا طبيعي
B) Lambda في VPC تحتاج إلى NAT Gateway للوصول إلى الإنترنت
C) Security Group محظور
D) السجلات لا تعمل
عرض الإجابة
الإجابة: B
Lambda في VPC تستخدم ENI في الشبكات الفرعية الخاصة. للوصول إلى الإنترنت، قم بتكوين NAT Gateway في شبكة فرعية عامة ومسار 0.0.0.0/0 إلى NAT في جدول توجيه الشبكات الفرعية لـ Lambda.
السؤال 9
دالة Lambda في VPC لا يمكنها الوصول إلى DynamoDB. ماذا تفعل؟
A) حذف VPC
B) استخدام VPC Endpoint لـ DynamoDB أو تكوين NAT Gateway
C) تغيير المنطقة
D) زيادة الذاكرة
عرض الإجابة
الإجابة: B
DynamoDB هي خدمة عامة. تحتاج Lambda VPC إما إلى NAT Gateway (مكلف)، أو VPC Endpoint Gateway لـ DynamoDB (مجاني وموصى به). يتيح VPC Endpoint الوصول الخاص دون المرور عبر الإنترنت.
السؤال 10
ما هو خطأ "Handler not found"؟
A) المعالج غير موجود
B) اسم المعالج المكون لا يتطابق مع الدالة في الكود
C) الملف غير موجود
D) الذاكرة غير كافية
عرض الإجابة
الإجابة: B
هذا الخطأ يعني أن Lambda لا تجد المعالج المحدد. تحقق من: التنسيق (ملف.طريقة)، اسم الملف (مثال: lambda_function.py)، اسم الطريقة، وأن الملف في جذر الحزمة.
السؤال 11
كيف يتم تنسيق المعالج في Python؟
A) handler.py
B) ملف.دالة (مثال: lambda_function.lambda_handler)
C) lambda.handler
D) handler()
عرض الإجابة
الإجابة: B
في Python، التنسيق هو: اسم_الملف.اسم_الدالة. الافتراضي هو lambda_function.lambda_handler، لذا ملف lambda_function.py مع دالة def lambda_handler(event, context). قم بتعديلها وفقًا لبنيتك.
السؤال 12
ما هو خطأ "Module not found"؟
A) وحدة AWS مفقودة
B) تبعية مطلوبة من الكود غير مضمنة في الحزمة
C) Python غير مثبت
D) المعالج غير صحيح
عرض الإجابة
الإجابة: B
"Unable to import module" أو "Module not found" تعني أن مكتبة مستخدمة في الكود ليست في حزمة النشر. قم بتضمين التبعيات في ملف ZIP أو استخدم Lambda Layers.
السؤال 13
كيف تضمين تبعيات Python في Lambda؟
A) تثبيتها عالميًا
B) pip install في مجلد، تضمينها في ملف ZIP للنشر أو استخدام Layers
C) مضمنة تلقائيًا
D) عبر وحدة التحكم
عرض الإجابة
الإجابة: B
قم بإنشاء مجلد، قم بتثبيت التبعيات: pip install requests -t ./package/، أضف الكود الخاص بك، قم بضغط الكل. أو استخدم Lambda Layers للتبعيات المشتركة. SAM وCDK يقومان بأتمتة هذه العملية.
السؤال 14
ما هو "cold start" وكيف يتم اكتشافه؟
A) خطأ في Lambda
B) تأخير التهيئة يظهر كـ "Init Duration" في سجلات REPORT
C) خطأ في المهلة
D) مشكلة في الذاكرة
عرض الإجابة
الإجابة: B
يظهر cold start في السجلات: "Init Duration: X ms" يظهر فقط أثناء cold starts. المقياس "Duration" يشمل هذا الوقت. الاستدعاءات التالية (warm) لا تحتوي على Init Duration.
السؤال 15
دالة تعيد خطأ 502 عبر API Gateway. ماذا تتحقق؟
A) API Gateway فقط
B) سجلات Lambda للخطأ الحقيقي، تنسيق استجابة Lambda
C) Route 53
D) CloudFront
عرض الإجابة
الإجابة: B
502 من API Gateway تعني غالبًا أن Lambda أعادت استجابة غير صحيحة أو تعطلت. تحقق من سجلات Lambda للخطأ. تأكد من أن الاستجابة تتبع التنسيق المتوقع من API Gateway (statusCode، body، headers).
السؤال 16
ما هو تنسيق استجابة Lambda الذي تتوقعه API Gateway؟
A) نص بسيط
B) JSON مع statusCode، headers، body
C) XML
D) HTML
عرض الإجابة
الإجابة: B
التنسيق المتوقع هو كائن JSON مع statusCode (200)، headers (Content-Type: application/json)، وbody (سلسلة JSON). يجب أن يكون body سلسلة، وليس كائنًا. استجابة غير صحيحة تسبب خطأ 502.
السؤال 17
كيف تقوم بتصحيح دالة Lambda في الإنتاج؟
A) الاتصال بالخادم
B) تحليل سجلات CloudWatch، تفعيل X-Ray للتتبع
C) تعديل الكود في الإنتاج
D) انتظار الشكاوى
عرض الإجابة
الإجابة: B
استخدم CloudWatch Logs لرسائل الخطأ. قم بتفعيل AWS X-Ray لتتبع الطلبات عبر الخدمات (زمن الانتظار، الأخطاء). CloudWatch Insights يسمح بالاستعلامات على السجلات. أضف تسجيلًا منظمًا في الكود.
السؤال 18
ما هو AWS X-Ray لـ Lambda؟
A) تصوير بالأشعة للخوادم
B) خدمة تتبع موزعة تعرض مسار الطلبات
C) مضاد فيروسات
D) أداة نسخ احتياطي
عرض الإجابة
الإجابة: B
AWS X-Ray يتتبع الطلبات عبر Lambda والخدمات الأخرى (API Gateway، DynamoDB، S3). يعرض خريطة الخدمات، أزمنة الانتظار، ويساعد في تحديد الاختناقات والأخطاء.
السؤال 19
دالة تفشل بشكل متقطع. ماذا تتحقق؟
A) الكود فقط
B) السجلات للأنماط، المهلات، cold starts، الاختناقات
C) لا شيء، هذا طبيعي
D) Security Group
عرض الإجابة
الإجابة: B
الفشل المتقطع يمكن أن يكون بسبب: المهلات (الموارد الخارجية البطيئة)، cold starts (تهيئة فاشلة)، الاختناقات (حدود التزامن)، الموارد الخارجية غير المتاحة، أو الاتصالات المغلقة (connection pooling).
السؤال 20
ما هو "throttling" في Lambda؟
A) تقييد سرعة الكود
B) رفض الاستدعاءات لأن حد التزامن قد تم الوصول إليه
C) ضغط البيانات
D) تقييد الذاكرة
عرض الإجابة
الإجابة: B
يحدث الاختناق عندما تصل الدالة إلى حد التزامن (محجوز أو إقليمي). يتم رفض الاستدعاءات الإضافية بخطأ 429 (TooManyRequestsException). قم بزيادة الحدود أو تنفيذ قائمة انتظار.
السؤال 21
كيف تكتشف إذا كانت Lambda تتعرض للاختناق؟
A) مستحيل اكتشافه
B) مقياس CloudWatch "Throttles"، خطأ 429 في السجلات المستدعية
C) عبر الكود
D) في EC2
عرض الإجابة
الإجابة: B
مقياس CloudWatch "Throttles" يحسب الاستدعاءات المرفوضة. يتلقى المستدعي خطأ 429 TooManyRequestsException. راقب هذا المقياس وأنشئ إنذارات لاكتشاف مشاكل السعة.
السؤال 22
ما هي Dead Letter Queue (DLQ) ومتى تستخدم؟
A) قائمة رسائل ميتة
B) وجهة للأحداث الفاشلة بعد كل المحاولات (استدعاء غير متزامن)
C) قائمة احتياطية
D) قائمة ذات أولوية
عرض الإجابة
الإجابة: B
تستقبل DLQ الأحداث التي فشلت بعد المحاولات التلقائية (2 للغير متزامن). قم بتكوين SQS أو SNS كـ DLQ. حلل هذه الرسائل لفهم وتصحيح الفشل.
السؤال 23
كيف تقوم بتكوين المحاولات لـ Lambda؟
A) عبر الكود فقط
B) يعتمد على نوع الاستدعاء: قابل للتكوين للغير متزامن، تلقائي للتدفقات
C) لا محاولات
D) عبر IAM
عرض الإجابة
الإجابة: B
الاستدعاءات غير المتزامنة: 2 محاولات افتراضيًا (قابلة للتكوين 0-2)، مع backoff أسي. التدفقات (Kinesis، DynamoDB): محاولة حتى انتهاء صلاحية البيانات أو النجاح. متزامن: لا محاولات تلقائية، المستدعي يدير.
السؤال 24
دالة Lambda بطيئة جدًا. ماذا تتحقق أولاً؟
A) اسم الدالة
B) سجلات REPORT لـ Duration، Memory Used، والمكالمات الخارجية
C) المشغل
D) المنطقة
عرض الإجابة
الإجابة: B
حلل سجلات REPORT: Duration (الوقت الكلي)، Billed Duration، Memory Used. إذا كانت قريبة من حد الذاكرة، قم بزيادتها. تحقق من المكالمات الخارجية (قاعدة البيانات، API) التي قد تكون بطيئة. استخدم X-Ray للتفاصيل.
السؤال 25
هل يؤثر زيادة الذاكرة في Lambda على السرعة؟
A) لا
B) نعم، المزيد من الذاكرة = المزيد من CPU = تنفيذ أسرع محتملًا
C) يبطئها
D) فقط لـ Java
عرض الإجابة
الإجابة: B
يتم تخصيص CPU بشكل متناسب مع الذاكرة. عند 1,769 MB، تحصل على 1 vCPU كامل. المزيد من الذاكرة يعني المزيد من قوة الحوسبة، مما قد يقلل من وقت التنفيذ وأحيانًا حتى التكلفة الإجمالية.
السؤال 26
كيف تختبر دالة Lambda محليًا؟
A) مستحيل
B) AWS SAM CLI، LocalStack، أو تشغيل ملف Python/Node مباشرة
C) فقط في الإنتاج
D) عبر EC2
عرض الإجابة
الإجابة: B
اختبر محليًا باستخدام: AWS SAM CLI (sam local invoke)، LocalStack لمحاكاة Lambda، أو قم بتشغيل دالتك مباشرة مع حدث وهمي. يسرع ذلك دورة التطوير قبل النشر.
السؤال 27
ما هو خطأ "ECONNREFUSED" في Lambda؟
A) رفض الاتصال من قبل Lambda
B) الدالة لا يمكنها الاتصال بخدمة خارجية (نقطة النهاية غير قابلة للوصول)
C) خطأ في الأذونات
D) مهلة Lambda
عرض الإجابة
الإجابة: B
ECONNREFUSED تعني أن الاتصال قد تم رفضه من قبل نقطة النهاية المستهدفة. الأسباب: عنوان URL/منفذ خاطئ، الخدمة غير مشغلة، Security Group محظور، مشكلة في توجيه VPC، أو الخدمة الخارجية معطلة.
السؤال 28
ما هو خطأ "socket timeout" في Lambda؟
A) المقبس مكسور
B) الاتصال بخدمة خارجية يستغرق وقتًا طويلاً (لا يوجد رد)
C) انتهت مهلة Lambda
D) VPC غير مكون بشكل صحيح
عرض الإجابة
الإجابة: B
Socket timeout تعني أن الخدمة الخارجية لا ترد في المهلة المحددة من قبل العميل HTTP. الأسباب: الخدمة بطيئة أو محملة بشكل زائد، مشكلة في الشبكة، Security Group/NACL محظور، أو تكوين مهلة العميل غير صحيح.
السؤال 29
كيف ترى أخطاء دالة Lambda في الوقت الحقيقي؟
A) مستحيل
B) CloudWatch Logs Live Tail، CloudWatch Logs Insights، أو aws logs tail
C) عبر البريد الإلكتروني
D) في S3
عرض الإجابة
الإجابة: B
استخدم CloudWatch Logs Insights للاستعلامات في الوقت الحقيقي، "Live Tail" في وحدة التحكم لبث السجلات، أو aws logs tail /aws/lambda/اسم-الدالة --follow للمتابعة من CLI.
السؤال 30
ما هي أفضل ممارسة للتسجيل في Lambda؟
A) لا تسجل
B) استخدم JSON منظم، قم بتضمين requestId، مستويات السجل، والسياق المفيد
C) سجل كل شيء
D) فقط الأخطاء
عرض الإجابة
الإجابة: B
أفضل الممارسات: استخدم JSON منظم لتسهيل الاستعلامات، قم بتضمين requestId (context.aws_request_id) للتتبع، استخدم المستويات (INFO، ERROR)، سجل السياق المفيد بدون بيانات حساسة، وتجنب السجلات المفرطة (التكلفة).
النتيجة
احسب إجاباتك الصحيحة:
- 27-30: ممتاز - أنت تتقن استكشاف أخطاء Lambda
- 22-26: جيد - بعض النقاط تحتاج إلى مراجعة
- 17-21: متوسط - اقرأ الدورة مرة أخرى قبل المختبر
- أقل من 17: غير كافٍ - أعد الدورة من البداية
انتقل إلى مختبر استكشاف أخطاء Lambda بمجرد أن تصل إلى 22 إجابة صحيحة على الأقل.