وظائف Serverless بلغة JavaScript: AWS Lambda – دليل شامل

مدرب بايثون أونلاين للمبتدئين

تعلم Python بسهولة دون إرهاق نظري. حل مهام عملية مع التحقق التلقائي واكتب الكود مباشرة في المتصفح.

ابدأ الدورة

مقدمة في بنية Serverless و AWS Lambda



تتجه تطوير الويب الحديث بسرعة نحو الحوسبة بدون خادم (serverless). تتيح هذه النموذج للمطورين التركيز على كتابة منطق الأعمال دون القلق بشأن إدارة البنية التحتية. AWS Lambda هي واحدة من أشهر الخدمات لتنفيذ دوال serverless، وتتكامل بشكل ممتاز مع JavaScript (Node.js).



في هذه المقالة، سنشرح بالتفصيل ما هي AWS Lambda، وكيفية إنشاء وتشغيل أول دالة serverless لك باستخدام JavaScript، وسنستعرض أفضل الممارسات وأمثلة من الكود الفعلي. ستكون المادة مفيدة لكل من المبتدئين والمطورين ذوي الخبرة الذين يرغبون في إتقان تطوير serverless.



ما هي AWS Lambda وكيف تعمل مع Node.js



AWS Lambda هي خدمة حوسبة تقوم بتشغيل الكود الخاص بك استجابةً للأحداث وتدير تلقائيًا موارد الحوسبة. أنت تدفع فقط مقابل وقت التنفيذ المستهلك (مقربًا إلى 1 مللي ثانية) وعدد الطلبات.



الميزات الرئيسية لـ AWS Lambda لمطور JavaScript

  • دعم Node.js: تدعم AWS Lambda رسميًا Node.js 14 و16 و18 و20.
  • التوسع التلقائي: تقوم Lambda تلقائيًا بإنشاء نسخ من الدالة لمعالجة كل طلب وارد.
  • المحفزات: يمكن استدعاء الدوال عبر HTTP (من خلال API Gateway)، وفقًا لجدول زمني (CloudWatch Events)، عند تحميل ملف إلى S3، والعديد من الطرق الأخرى.
  • القيود: وقت التنفيذ يصل إلى 15 دقيقة، الذاكرة من 128 ميجابايت إلى 10,240 ميجابايت، حجم الحزمة يصل إلى 50 ميجابايت (مضغوط) أو 250 ميجابايت (غير مضغوط).


للعمل مع Lambda باستخدام JavaScript، لا يلزم أي إعداد إضافي — فقط اكتب المعالج (handler) وقم بتحميل الكود إلى AWS.



إنشاء أول دالة serverless باستخدام JavaScript



لنكتب دالة serverless بسيطة تستقبل JSON يحتوي على اسم المستخدم وتعيد تحية. هذا مثال كلاسيكي للبدء في التعرف على AWS Lambda.



الخطوة 1: الهيكل الأساسي للمعالج

تتكون كل دالة Lambda في Node.js من دالة معالج مُصدّرة، تستقبل ثلاث معاملات: event (الحدث)، context (سياق التنفيذ)، و callback (للاستجابة غير المتزامنة).



// index.jsexports.handler = async (event, context) => {    // منطق الدالة    const name = event.name || 'ضيف';    return {        statusCode: 200,        body: JSON.stringify({            message: `مرحبًا، ${name}! هذه أول دالة serverless لك.`        })    };};


الخطوة 2: معالجة أنواع مختلفة من الأحداث

في المشاريع الحقيقية، قد تأتي الأحداث من مصادر مختلفة. لنلقِ نظرة على مثال لمعالجة طلب من API Gateway:



// handler.jsexports.handler = async (event) => {    try {        // تحليل جسم الطلب (إذا كان موجودًا)        const body = event.body ? JSON.parse(event.body) : {};        const { userId, action } = body;

// مثال على منطق الأعمال const result = { userId: userId || 'غير معروف', action: action || 'افتراضي', timestamp: new Date().toISOString(), message: 'تم تنفيذ الإجراء بنجاح' };

return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify(result) }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ error: error.message }) }; }};


العمل مع الخدمات الخارجية والبيئة



نادرًا ما تعمل دوال Serverless في عزلة. في أغلب الأحيان، تحتاج إلى التفاعل مع قواعد البيانات، S3، Dyna

المدونات

توصيات الكتب