البدء مع AWS Lambda: دليل خطوة بخطوة

AWS Lambda هي خدمة قوية حوسبة بدون خادم تمكنك من تشغيل الشيفرة البرمجية دون الحاجة لإدارة البنية التحتية، حتى تتمكن من التركيز فقط على كتابة الشيفرة دون القلق بشأن توفير أو صيانة الخوادم.

في هذا الدليل، سنستكشف AWS Lambda، بدءًا من إعداد الدالة الأولى الخاصة بك إلى دمجها مع خدمات AWS الأخرى. سواء كنت تقوم بمعالجة تدفقات البيانات أو بناء واجهات برمجة التطبيقات، سيساعدك هذا الدليل على البدء في نشر التطبيقات بدون خوادم باستخدام AWS Lambda.

ما هي AWS Lambda؟

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

تقوم هذه الطريقة لتطوير التطبيقات بإزالة الحاجة إلى البنية التحتية التقليدية، مما يمكنك من التركيز فقط على كتابة ونشر الشيفرة.

AWS Lambda هو مدفوع بالأحداث، مما يعني أنه يتم تشغيله بواسطة أحداث محددة من خدمات AWS الأخرى، مما يجعله مثاليًا لبناء حلول متجاوبة وقابلة للتوسع وفعالة من حيث التكلفة.

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

ميزات AWS Lambda

  • الهندسة المعمارية المدفوعة بالأحداث:تُستدعى وظائف AWS Lambda استجابةً للأحداث مثل التغييرات في البيانات، طلبات HTTP، أو تحديثات لموارد AWS.
  • دعم تشغيل متعدد:تدعم Lambda مجموعة متنوعة من البيئات التشغيلية، بما في ذلك Python، Node.js، Java، Go، Ruby، و .NET. يمكن للمطورين أيضًا جلب بيئتهم التشغيلية الخاصة باستخدام واجهة برمجة التطبيقات لبيئة تشغيل AWS Lambda، مما يجعله منصة متنوعة لحالات الاستخدام المختلفة.
  • توسيع تلقائي:تقوم AWS Lambda بتحجيم تطبيقك تلقائيًا استنادًا إلى الطلب. سواء كانت معالجة حدث واحد أو التعامل مع الآلاف في نفس الوقت، تعدل Lambda الموارد الحسابية بشكل ديناميكي.
  • التسعير حسب الاستخدام: يتم تحديد التكاليف بناءً على عدد الطلبات ووقت تنفيذ وظائفك. هذا يلغي الحاجة للاستثمارات المسبقة ويضمن أنك تدفع فقط مقابل ما تستخدمه.
  • أمان متكامل: تعمل Lambda مع AWS إدارة الهوية والوصول (IAM)، مما يضمن التحكم الدقيق في الوصول والتفاعلات الآمنة بين وظائفك وخدمات AWS الأخرى.

حالات الاستخدام الشائعة لـ Lambda

  • معالجة تيارات البيانات: تتكامل AWS Lambda مع Amazon Kinesis لمعالجة وتحليل البيانات التدفقية في الوقت الحقيقي. على سبيل المثال، يمكنك مراقبة أجهزة IoT أو معالجة ملفات السجل بشكل ديناميكي.
  • بناء واجهات برمجة التطبيقات RESTful: يمكن ربط وظائف Lambda مع بوابة AWS API لإنشاء واجهات برمجة تطبيقات قابلة للتوسيع لتطبيقات الويب والجوال. يُستخدم هذا الإعداد عادة للتعامل مع المصادقة الخاصة بالمستخدم، استعلام قواعد البيانات، أو إنشاء محتوى ديناميكي.
  • تأتيمة الأعمال: قم بتأتيمة سلاسل الأعمال المعقدة عبر تشغيل وظائف لامبدا استنادًا إلى الأحداث من خدمات مثل S3, DynamoDB, or CloudWatch. على سبيل المثال، يمكنك تغيير حجم الصور المُرفقة على S3 أو أرشفة سجلات قاعدة البيانات القديمة تلقائيًا.
  • معالجة الأحداث في خطوط البيانات: يمكنك استخدام لامبدا لمعالجة الأحداث الزمنية الحقيقية للبيانات، مثل معالجة التحميلات الجديدة إلى دلو S3، تحويل البيانات قبل التخزين، أو إثراء تدفقات البيانات باستدعاءات واجهة برمجة تطبيقات خارجية.
  • معالجة الخلفية الخادمية بدون خادم: يُستخدم لامبدا بشكل شائع لتفريغ المهام الخلفية مثل تحقق البيانات، وعمليات ETL (استخراج، تحويل، تحميل)، أو إرسال الإشعارات عبر Amazon SNS أو SES.كيف يعمل AWS Lambda؟

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

مثال على رسم تخطيطي للهندسة المعمارية باستخدام Lambda وخدمات AWS الأساسية الأخرى. مصدر الصورة: AWS.

1. تشغيل وظائف AWS Lambda

تتم تنشيط وظائف AWS Lambda عن طريق الأحداث من مختلف خدمات AWS أو الأنظمة الخارجية. أمثلة شائعة على مصادر الأحداث تشمل:

  • API Gateway: عندما يرسل المستخدم طلب HTTP (على سبيل المثال ، طلب GET أو POST) إلى نقطة نهاية بوابة الواجهة البرمجية (API Gateway) الخاصة بك ، يمكن لـ Lambda تنفيذ وظيفة لمعالجة الطلب – على سبيل المثال ، نقطة نهاية واجهة برمجة تطبيقات RESTful لإنشاء مستخدم في قاعدة بيانات.
  • أحداث S3: يمكن لوظائف Lambda الاستجابة لإجراءات مثل تحميل أو حذف أو تعديل كائن في دلو S3. على سبيل المثال، يمكنها تغيير حجم الصور أو تحويل تنسيقات الملفات بعد تحميل صورة إلى دلو S3.
  • تيارات DynamoDB: أي تغييرات تحدث في جداول DynamoDB، مثل الإدخالات أو التحديثات أو الحذف، يمكن أن تؤدي إلى تفعيل وظيفة Lambda. على سبيل المثال، تفعيل خط أنابيب التحليلات عند إضافة صفوف جديدة إلى جدول DynamoDB.
  • تطبيقات مخصصة: يمكنك استدعاء وظائف Lambda مباشرة باستخدام SDKs أو CLI أو طلبات HTTP، مما يتيح لك التكامل مع الأنظمة الخارجية.

2. بيئة التنفيذ

عندما يتم تشغيل الحدث دالة Lambda، تقوم AWS تلقائيًا بإنشاء بيئة تنفيذ لتشغيل الكود. تشمل هذه البيئة:

  • كود دالتك: الكود الذي كتبته لمهمتك المحددة.
  • الموارد المخصصة: يتم تخصيص وحدة المعالجة المركزية والذاكرة (قابل للتكوين) ديناميكيًا بناءً على احتياجات الدالة.
  • التبعيات: أي مكتبات أو حزم خارجية تم تحديدها أثناء النشر مدرجة.

3. التزامن والتوسع

تدعم AWS Lambda التوسع التلقائي من خلال تشغيل عدة نسخ من دالتك بالتوازي. إنها تدير التوسع بشكل شفاف دون أي تكوين. إليك كيف يعمل التزامن:

  • إذا كانت دالتك تحتاج إلى معالجة 100 حدث في وقت واحد، ستقوم Lambda بإنشاء عدد من بيئات التنفيذ حسب الحاجة (حتى حد التزامن).

4. التكامل مع خدمات AWS الأخرى

يتكامل AWS Lambda بعمق مع خدمات AWS لبناء حلول قوية من البداية إلى النهاية:

  • التفاعلات مع قواعد البيانات: يمكن لـ Lambda قراءة/كتابة البيانات إلى DynamoDB أو RDS أثناء التنفيذ.
  • خدمات الرسائل: يمكن لـ Lambda تفعيل الإشعارات عبر SNS أو إرسال الرسائل إلى قوائم SQS للمعالجة لاحقًا.
  • المراقبة والتسجيل: يقوم CloudWatch بالتقاط جميع السجلات، المقاييس، وتفاصيل الأخطاء لوظائف Lambda، مما يتيح لك مراقبة واستكشاف مشاكل الأداء.

الآن، دعنا نبدأ في إعداد أول وظيفة Lambda لك!

إعداد AWS Lambda

المتطلبات السابقة

  • حساب AWS: تأكد من وجود حساب AWS نشط. سجل هنا.
  • إعداد مستخدم IAM: أنشئ مستخدم IAM بأذونات لخدمة AWS Lambda. تابع الدليل IAM.

إعداد بيئة التطوير

  • قم بتثبيت AWS CLI: قم بتنزيل وتثبيت AWS CLI. قم بتكوينه باستخدام بيانات اعتماد IAM الخاصة بك.
  • قم بإعداد بايثون أو Node.js: قم بتثبيت بايثون أو Node.js بناءً على وقت التشغيل المفضل لديك. يدعم AWS Lambda عدة أوقات تشغيل. سنستخدم وقت تشغيل بايثون في هذا الدليل.

الخطوة 1: الوصول إلى وحدة تحكم AWS Lambda

  1. سجل الدخول إلى وحدة إدارة AWS.
  2. انتقل إلى خدمة Lambda.

لوحة توجيه في واجهة AWS.

انقر على لامبدا في قائمة التنقل لرؤية اللوحة:

لوحة تحكم AWS Lambda في واجهة AWS.

الخطوة 2: إنشاء وظيفة جديدة

  1. انقر إنشاء وظيفة.
  2. اختر “المؤلف من البداية”.
  3. قدم اسمًا لوظيفتك.
  4. حدد وقت تشغيل (مثل Python 3.11).
  5. انقر على زر إنشاء وظيفة.

قم بإنشاء وظيفة جديدة في AWS Lambda.

سيستغرق الأمر بضع ثوانٍ. بمجرد إنشاء الوظيفة، سترى رسالة نجاح في الأعلى.

الخطوة 3: اكتب شفرة الوظيفة الخاصة بك

بيئة تطوير متصفح AWS Lambda لتحرير الشفرات بشكل بسيط.

الخطوة 4: اختبر وظيفة Lambda الخاصة بك

في هذه النقطة، تقوم هذه الوظيفة ببساطة بإرجاع السلسلة “مرحبًا من Lambda!”.

لا توجد منطقية، لا تبعيات، لا شيء.

لدينا نص برمجي بايثون يسمى lambda_function.py الذي يحتوي على الوظيفة المسماة lambda_handler() التي تقوم بإرجاع سلسلة.

يمكننا الآن اختباره ببساطة عن طريق النقر فوق زر الاختبار.

اختبار وظيفة AWS Lambda الخاصة بك في المتصفح.

يمكنك إزالة “JSON الحدث” حيث أن وظيفتنا لا تأخذ أي مدخلات. قم بإعطاء اسم حدث وانقر فوق زر الاستدعاء.

اختبار ناجح لوظيفة AWS Lambda.

تم تنفيذ الوظيفة بنجاح، وتم إرجاع الرسالة.

ياي! لقد نشرنا وظيفة بدون خادم باستخدام خدمة AWS Lambda. لا تقوم بكثير في الوقت الحالي، ولكنها تعمل بشكل جيد. في كل مرة يتم فيها استدعاء هذه الوظيفة، تعيد سلسلة بسيطة.

تشغيل لامبدا بواسطة الأحداث

كما ذُكر، تسمح هندسة AWS Lambda بتشغيل الوظائف استجابة لأحداث معينة من مختلف خدمات AWS، مما يجعلها أداة متعددة الاستخدام لتلقيم سير العمل ودمج الأنظمة.

يمكن أن تشغل أحداث مثل تحميل الملفات إلى دلو S3، أو تحديثات في جدول DynamoDB، أو استدعاءات واجهة برمجة التطبيقات من خلال API Gateway وظائف Lambda، مما يمكن تنفيذها في الوقت الحقيقي وبطريقة قابلة للتوسيع.

1. إعداد مشغل S3

  1. انتقل إلى وحدة تحكم S3.
  2. حدد دلو S3.
  3. ضمن الخصائص، أضف إخطار حدث لتشغيل وظيفتك Lambda عند إنشاء كائن. إنشاء إخطار حدث في دلو AWS S3.حدد وظيفة Lambda لتشغيلها في S3.

أمثلة على حالات الاستخدام:

    • تغيير حجم الصور تلقائيًا المُرفقة إلى S3.
    • تحويل مقاطع الفيديو إلى عدة دقات أو صيغ لبثها.
    • التحقق من صيغ الملفات والأحجام أو البيانات الوصفية عند التحميل.
    • استخدام الذكاء الاصطناعي لاستخراج النصوص من المستندات المُرفقة (مثلًا عبر Amazon Textract).

2. تكامل بوابة الواجهة البرمجية للتطبيقات

  1. انتقل إلى خدمة بوابة الواجهة البرمجية.

لوحة تحكم خدمة بوابة الواجهة البرمجية في AWS Console.

  1. إنشاء واجهة برمجية REST جديدة.

إنشاء واجهة برمجية REST جديدة عبر بوابة الواجهة البرمجية للتطبيقات.

  1. تكوين طريقة (على سبيل المثال، POST) لتشغيل وظيفتك Lambda.

أمثلة استخدام:

    • إنشاء واجهة برمجية خادمية للاستجابات في الوقت الحقيقي.
    • تشغيل وظيفة Lambda لإنشاء وتخزين بيانات المستخدم في قاعدة البيانات.
    • معالجة طلبات POST لمعالجة وتحقق طلبات العملاء في الوقت الحقيقي.
    • تشغيل وظيفة Lambda للاستعلام عن البيانات وإرجاعها من قاعدة بيانات أو واجهة برمجية للتطبيقات.

نشر ومراقبة لامبدا في AWS

نشر وظائف لامبدا في AWS هو عملية بسيطة يمكن القيام بها باستخدام طرق مختلفة تعتمد على احتياجاتك، مثل واجهة تحكم إدارة AWS للنشر اليدوي أو AWS CLI للنشر التلقائي.

1. نشر يدوي باستخدام واجهة التحكم في AWS

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

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

2. النشر التلقائي باستخدام AWS CLI

يعد AWS CLI وسيلة فعالة لنشر وتحديث وظائف Lambda من أجل الأتمتة أو التحديثات المتكررة. يضمن التناسق ويقلل من الأخطاء اليدوية، خاصة في المشاريع الأكبر أو في خطوط CI/CD.

الخطوة 1 – إعداد حزمة النشر

قم بتعبئة التعليمات البرمجية والاعتمادات في ملف .zip. على سبيل المثال:

zip -r my-deployment-package.zip .

الخطوة 2 – نشر الوظيفة باستخدام CLI

استخدم الأمر update-function-code لتحميل الكود الجديد إلى AWS Lambda:

aws lambda update-function-code \ --function-name MyFunction \ --zip-file fileb://my-deployment-package.zip

–function-name MyFunction \

–zip-file fileb://my-deployment-package.zip

aws lambda get-function --function-name MyFunction

الخطوة 3 – تحقق من النشر

بعد النشر، تحقق من حالة الوظيفة باستخدام:

يسترجع هذا الأمر تكوين الوظيفة ويؤكد النشر.

مراقبة Lambda مع CloudWatch

المراقبة أمر بالغ الأهمية لضمان تشغيل وظائف Lambda بكفاءة، والتعامل مع الأخطاء بسلاسة، وتلبية توقعات الأداء. تتكامل AWS Lambdaمع Amazon CloudWatch لتوفير قدرات المراقبة والتسجيل.

  1. تجمع Amazon CloudWatch تلقائيًا وتعرض المقاييس الرئيسية لوظائف Lambda الخاصة بك. تساعدك هذه المقاييس في تحليل أداء وظيفتك وحل المشكلات.
  2. المقاييس التي يجب مراقبتها:
  3. الاستدعاءات: يتتبع عدد مرات استدعاء الوظيفة الخاصة بك. يساعدك في فهم أنماط حركة المرور واتجاهات الاستخدام.
  4. الأخطاء: يعرض عدد الأخطاء أثناء تنفيذ الوظيفة. استخدم هذا لتحديد معدلات الفشل وتصحيح المشاكل.

المدة: يقيس الوقت اللازم لتنفيذ الوظيفة. هذا أمر حاسم لتحسين الأداء وإدارة التكاليف.

  • ثروتلز: يظهر عدد الاستدعاءات التي تم ركنها بسبب الوصول إلى حدود التنفيذ المتزامن.
  • الوصول إلى البيانات القياسية:
  • انتقل إلى وحدة تحكم بيانات CloudWatch Metrics.

اختر لامبدا من قائمة الأسماء الرئيسية.

اختر الوظيفة التي ترغب في مراقبتها لعرض المقاييس المفصلة.

أفضل الممارسات لخدمة AWS Lambda

الآن بعد نشر وظيفة Lambda الأولى الخاصة بك، فإن معرفة بعض أفضل الممارسات للمشاريع المعقدة في المستقبل مفيدة. في هذا القسم، أقدم بعض الإرشادات الأفضل للمراعاة.

1. قم بتحسين بدء الوظيفة من الصفر

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

استخدم أدوات مثل AWS Lambda Layers لمشاركة المكتبات المشتركة (على سبيل المثال، AWS SDK) عبر الوظائف دون تضمينها في الحزم الفردية.

ضغط الكود وتقليصه حيثما كان ذلك ممكنًا، خاصة بالنسبة للوظائف المعتمدة على JavaScript أو Python.

تجنب التهيئة الثقيلة في وظيفتك

نقل عمليات التهيئة التي تستهلك الموارد (مثل اتصالات قاعدة البيانات، عملاء واجهة برمجة التطبيقات، أو المكتبات الخارجية) خارج معالج الدالة. وهذا يضمن تنفيذ الكود مرة واحدة فقط لكل بيئة وإعادة استخدامه عبر الاستدعاءات.

استفد من التزامن المخصص

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

2. حافظ على عدم الحالة للدوال

عدم الحالة هو مبدأ أساسي في بنية السيرفرless، مما يضمن أن تطبيقك يتوسع بسلاسة:

تجنب الاعتماد على البيانات في الذاكرة

تكون دوال لامدا عابرة، مما يعني أن بيئة تنفيذها مؤقتة وقد لا تستمر عبر الاستدعاءات. بدلاً من الاعتماد على المتغيرات في الذاكرة، قم بتخزين معلومات الحالة في أنظمة خارجية مثل DynamoDB أو S3 أو Redis.

قم بتمكين التكرار

صمم وظائفك للتعامل مع الأحداث المكررة بسلاسة. استخدم معرفات فريدة للطلبات وتحقق من السجلات أو قواعد البيانات للتأكد من عدم معالجة نفس الحدث عدة مرات.

3. استخدم متغيرات البيئة

  • تعد متغيرات البيئة وسيلة آمنة ومريحة لتكوين وظائف Lambda الخاصة بك:
  • تخزين المعلومات الحساسة

قم بتخزين مفاتيح API، وسلاسل الاتصال بقاعدة البيانات، والأسرار الأخرى كمتغيرات بيئية. تقوم AWS Lambda بتشفير هذه المتغيرات أثناء التخزين وفك تشفيرها أثناء التنفيذ.

من أجل أمان إضافي، استخدم AWS Secrets Manager أو Systems Manager Parameter Store لإدارة الأسرار ديناميكيًا.

تبسيط إدارة التكوين

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

الخاتمة

Source:
https://www.datacamp.com/tutorial/aws-lambda