ما هو AWS Lambda وما الغرض من استخدامه؟
يُعد AWS Lambda خدمة حوسبة بدون خوادم (Serverless) من أمازون ويب سيرفيسز (AWS)، تتيح لك تشغيل الكود دون الحاجة إلى تجهيز أو إدارة أي خادم. كل ما عليك هو رفع الكود، وتحديد الأحداث التي يجب أن تُشغّله، وسيقوم Lambda تلقائياً بتنفيذ الكود، وتوسيع قدرته أو تقليصها حسب الطلب، مع احتساب التكلفة فقط على مدة تشغيل الوظيفة. وهذا يجعل AWS Lambda مثالياً لـالعمليات القصيرة، الحدثية، عديمة الحالة مثل بناء واجهات API، مهام الأتمتة، ومعالجة البيانات بالوقت الفعلي.
ما هو AWS Lambda؟
في جوهره، يُعتبر AWS Lambda منصة وظائف تعتمد على الأحداث (FaaS). بدلاً من تشغيل خادم كامل أو حاوية تعمل باستمرار، تكتب وظائف صغيرة بلغات مثل Node.js وPython وJava و.NET وGo، وترفعها إلى Lambda، ثم تربطها بأحداث مثل:
- رفع ملفات جديدة إلى Amazon S3.
- طلبات HTTP القادمة عبر Amazon API Gateway.
- رسائل تصل إلى SQS أو SNS.
- تحديثات تحدث في جداول DynamoDB أو تدفقات Kinesis.
- مهام مجدولة (مثل الكرون) باستخدام EventBridge / CloudWatch Events.
عندما يحدث الحدث، يقوم Lambda بتهيئة بيئة تشغيل، وتشغيل الكود، ثم إغلاق البيئة بعد انتهاء التنفيذ. لست بحاجة لإدارة أنظمة تشغيل أو إجراءات التوسّع أو التخطيط للقدرة؛ Lambda يتولى كل ذلك بينما تركز أنت على المنطق البرمجي فقط.
متى أختار استخدام AWS Lambda؟
أختار AWS Lambda عندما أحتاج لتشغيل كود يعتمد على أحداث محددة، دون تشغيل خوادم طوال الوقت، وعندما أريد توسّعاً تلقائياً ودفعاً حسب الاستخدام. يناسب Lambda أكثر عندما تكون مدة التنفيذ قصيرة (ثوانٍ إلى دقائق)، والوظيفة عديمة الحالة، ولها حدث واضح يطلقها. ومن الحالات الشائعة: أتمتة مهام الخلفية، بناء واجهات API خفيفة، معالجة ملفات فور رفعها، الاستجابة لتغييرات في قواعد البيانات أو التدفقات، وتنفيذ مهام مجدولة مثل التقارير أو التنظيف. أما للعمليات الطويلة أو الثقيلة أو التي تحتاج اتصالاً دائماً، فأفضّل استخدام EC2 أو الحاويات (ECS/Fargate).
أهم استخدامات AWS Lambda (مع أمثلة)
1. معالجة الملفات والصور في الوقت الفعلي من Amazon S3
أحد أشهر استخدامات Lambda هو معالجة الملفات فور وصولها إلى S3. على سبيل المثال، عندما أبني تطبيق مشاركة صور أو متجر إلكتروني:
- يرفع المستخدم صورة عالية الجودة إلى S3.
- يُرسل S3 حدثاً إلى Lambda عند إنشاء الملف.
- تقوم وظيفة Lambda بقراءة الصورة، وإنشاء نسخ بأحجام مختلفة (صغيرة، متوسطة، كبيرة)، ثم تحفظها في مجلدات S3 مثل
/thumbnails/و/medium/و/large/. - يعرض الواجهة الأمامية هذه الصور المحسّنة مباشرة من S3 أو عبر CloudFront.
يُستخدم هذا النموذج كثيراً في ضغط الصور، فحص الملفات، تحويل PDF، معالجة الفيديوهات الصغيرة، وتحويل المستندات، وكل ذلك بدون خادم وبقدرة توسع تلقائي مع حجم النشاط.
2. بناء واجهات برمجة تطبيقات (APIs) بدون خوادم
يمكن أيضاً بناء واجهات REST أو GraphQL بالكامل باستخدام API Gateway + Lambda:
- يرسل تطبيق ويب أو هاتف طلباً إلى API Gateway مثل
POST /orders. - يقوم API Gateway بتشغيل وظيفة Lambda للتحقق من الطلب وتنفيذ القواعد وقراءة/كتابة البيانات في DynamoDB أو RDS.
- ترجع Lambda استجابة للعميل.
هذا النموذج يوفر توسّعاً تلقائياً وتكلفة شبه صفرية أثناء فترات عدم الاستخدام، وهو مثالي للتطبيقات التي يزيد وينخفض حملها بشكل غير متوقع.
3. تقديم محتوى حسب الموقع الجغرافي من S3 (توجيه ديناميكي باستخدام Lambda)
يعمل AWS Lambda بشكل ممتاز عند تقديم محتوى خاص بمنطقة معينة مخزَّن في S3. بدلاً من بناء نظام مستقل لكل دولة، يمكنني جمع المنطق في Lambda واحدة. مثلاً:
- أخزّن ملفات المناطق داخل S3 مثل
egypt/cairo/وegypt/alexandria/وuk/london/. - يتضمّن طلب المستخدم معلومة المنطقة مثل
?region=egypt-cairo. - يقوم API Gateway بتشغيل Lambda عند طلب المحتوى.
- تحسب Lambda المسار الصحيح داخل S3 مثل
egypt/cairo/map-tiles.zip، ثم ترجع:- رابط S3 مُوقّع مسبقاً، أو
- رابط CloudFront مخزّن قريباً من المستخدم.
هذا مفيد لـ:
- خرائط تعتمد على الموقع.
- صور أو شعارات تسويقية محلية.
- أسعار أو بيانات منتجات تختلف حسب المنطقة.
4. معالجة البيانات والتدفقات وأتمتة المهام
يُستخدم Lambda كثيراً في خطوط معالجة البيانات. يمكن ربطه بـ Kinesis أو DynamoDB Streams لمعالجة البيانات فور وصولها، أو استخدامه داخل AWS Step Functions لبناء مهام أتمتة متكاملة.
لماذا AWS Lambda شائع جداً؟
يحظى AWS Lambda بشعبية لأنه يقلل العبء التشغيلي ويوفر نموذج تكلفة يعتمد على الاستخدام الحقيقي فقط. فهو يتيح بناء أنظمة قابلة للتوسع بسهولة، خاصة للتطبيقات الحدثية أو المتقطعة أو المبنية بأسلوب الميكروسيرفيس. وعند دمجه مع S3 وAPI Gateway وDynamoDB وCloudFront وStep Functions، يمكنك إنشاء بنية بدون خوادم بالكامل لتطبيقات الويب والهواتف والأتمتة.
الخلاصة
باختصار، AWS Lambda هو خدمة حوسبة بدون خوادم لتشغيل كود يعتمد على الأحداث. أستخدم Lambda عندما أحتاج تشغيل مهام قصيرة، عديمة الحالة، وتتوسع تلقائياً، مثل معالجة ملفات S3، بناء APIs، تقديم محتوى حسب الموقع، ومعالجة البيانات الفورية. أما للمهام الطويلة أو الثقيلة أو التي تحتاج بقاء الذاكرة فعّالة دائماً، فأفضّل EC2 أو الحاويات.
للمزيد، يمكن الرجوع إلى: دليل AWS Lambda الرسمي و شرح ربط Lambda مع S3.