وظائف AWS Lambda هي طريقة لتشغيل التعليمات البرمجية دون توفير أو إدارة الخوادم الخاصة بك. بدلاً من تشغيل تطبيق متصل بالإنترنت دائمًا ، فإنهم يقومون بتشغيل وظيفة واحدة في السحابة ، والتي يمكن تشغيلها استجابة لأحداث API أو الأحداث الأخرى في حساب AWS الخاص بك.
كيف تستخدم وظائف Lambda؟
Lambda هي خدمة حسابية ، بسيطة وبسيطة ، وربما تكون أبسطها جميعًا. بدلاً من استئجار خادم بعدد محدد من النوى وكمية ذاكرة الوصول العشوائي ، يمكنك ببساطة تحميل الكود وتشغيل الوظيفة.عادة ، لن تقوم بتشغيله يدويًا ؛ بدلاً من ذلك ، ستقوم بتعيينه ليتم تشغيله بناءً على الإجراءات من خدمات AWS الأخرى. على سبيل المثال ، تشغيل وظيفة لتغيير حجم الصور كلما تم وضع ملف جديد في S3 (طريقة مستخدمة من قبل Seattle Times لتأثير كبير) ، أو الاستعلام عن قاعدة بيانات كلما تم إرسال طلب إلى API Gateway.
يتم منح موارد الكمبيوتر تلقائيًا إلى وظيفة التشغيل ، وسوف تستخدم أكبر قدر من الذاكرة التي تحتاجها طالما استمرت المهمة. يتم محاسبتك ببساطة بناءً على عدد استدعاءات الوظائف ومقدار الذاكرة التي يستخدمها كل استدعاء.
هذا يجعل Lambda مرنة للغاية للاستخدام كخلفية. التطبيقات التقليدية هي في الغالب متجانسة ؛ لديك خادم واحد (أو أسطول منهم) يقوم بتشغيل تطبيقك. قد يكون لديك خوادم منفصلة لاستضافة الويب وقواعد البيانات وأشياء أخرى ، ولكن يتم إنشاء الكثير من التطبيقات بهذه الطريقة - واحد كبير قابل للتنفيذ ، والعديد من الأجزاء المتحركة.

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

يتيح ذلك لـ Lambda أن تكون عالية الكفاءة ، وعند تنفيذها بشكل صحيح ، يمكن أن توفر لك الكثير من المال. تمكن Adam Pash من Postlight من إسقاط فاتورته الشهرية من AWS من أكثر من 10 آلاف دولار إلى 370 دولارًا فقط ، فقط عن طريق التبديل إلى Lambda وتحسين استخدام الذاكرة.
على الرغم من أن الأمر لن يكون بهذه الصعوبة أو السهولة لكل تطبيق ، إلا أن Lambda تتمتع ببعض المزايا الرائعة التي تجعلها جزءًا مهمًا من مجموعة خدمات الحوسبة التي تقدمها AWS.
بالنسبة للتطبيقات المهمة غير المهمة ، فإنه يقدم أيضًا طريقة رخيصة جدًا لتشغيل تطبيق يحتاج إلى تقديم طلبات API. على سبيل المثال ، يمكنك تقديم تطبيق ويب ثابت بدون أي خوادم على الإطلاق ، من خلال تخزين موقع الويب الخاص بك في S3 ، وتقديمه من خلال CloudFront ، والاتصال بخلفية Lambda من خلال بوابة API التي تتصل بجدول DynamoDB.
ما هي التكلفة؟
مثل معظم AWS ، فإن تسعير Lambda هو إلى حد كبير نموذج "الدفع عند الاستخدام". بدلاً من دفع سعر ثابت للخادم بالكامل ، ستدفع فقط مقابل المبلغ المحدد من الموارد التي يستخدمها تطبيقك - فأنت لا تدفع أبدًا مقابل وقت الخمول ، ولا حتى ثانية منه. من الواضح أن هذا يجعل Lambda فعالة للغاية ، علاوة على قدرتها على القضاء على الاختناقات في التطبيقات المتجانسة.
رسوم Lambda كالتالي ، لـ
us-east-1:
- $ 0.20 لكل مليون طلب
- 0.000016667 دولارًا أمريكيًا لكل جيجابايت ثانية
أول شحنة منطقية ؛ إذا كان لديك 100 مليون طلب في الشهر ، فستدفع رسومًا قدرها 20 دولارًا مقابل ذلك.
الشحنة الثانية أكثر إرباكًا. في الأساس ، يتم محاسبتك بناءً على استخدام الذاكرة لوظائفك ، نظرًا لأن هذا عادة ما يكون العامل المحدد لـ AWS. إذا تم تشغيل وظيفتك وتخصيص 1024 ميغابايت من ذاكرة الوصول العشوائي وتشغيلها لمدة ثانية واحدة ، فسيتم تحصيل 0.000001667 دولارًا مقابل ذلك. هذا رقم منخفض جدًا ، ولكن عبر مليون طلب ، يبلغ 1.667 دولارًا.
بطبيعة الحال ، سترغب في اختيار وقت تشغيل فعال للذاكرة. يتم استخدام NodeJS بشكل شائع ، حيث إنه خفيف الوزن إلى حد ما مقارنة بأوقات التشغيل مثل Java. ومع ذلك ، يمكن أن تكون Java أسرع للمهام التي تستغرق وقتًا أطول لإكمالها ، وبما أنك لا تدفع مقابل الوقت الذي تقضيه في تهيئة وقت التشغيل (أي "البداية الباردة") ، فهي ليست دائمًا سيئة كما تبدو على الورق.

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

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

يمكنك أيضًا إحضار وقت التشغيل الخاص بك لتشغيل أي لغة تريدها.
بمجرد إنشائها ، يمكنك تعديلها من صفحة الوظيفة. تقوم وظيفة NodeJS القياسية بتصدير معالج ، يتم استدعاؤه عندما تستجيب الوظيفة للأحداث.

نوصي باستخدام Cloud9 IDE من AWS للعمل مع وظائف Lambda. إنه IDE مستند إلى الويب مبني على نفس المحرر المستخدم في محرر الوظيفة الافتراضية ، ولكن مع ميزة إضافية تتمثل في سهولة الاختبار وتصحيح الأخطاء.
إذا كنت تريد أن تستجيب وظيفتك لطلبات API ، فإن أسهل طريقة لإعداد ذلك هي باستخدام بوابة API. يمكنك إنشاء واجهة برمجة تطبيقات جديدة وجعلها توجه نقاط نهاية معينة مباشرة إلى وظيفة Lambda معينة ، والتي ستتعامل مع الطلب وترجع استجابة.
وإلا ، يمكنك تحديد مشغل في "المصمم" في الجزء العلوي ، مثل عندما يتم وضع كائن في حاوية S3 معينة. يمكنك أيضًا تحديد وجهة يتم إرسال النتائج إليها ، مثل قائمة انتظار SQS أو موضوع SNS أو وظيفة Lambda الأخرى.
ستعمل وظيفة Lambda بالامتيازات الممنوحة لها من خلال دور التنفيذ الذي تم إنشاؤه لها. إذا كنت تقوم بالوصول إلى موارد AWS أخرى ، فستحتاج إلى منحها الإذن للقيام بذلك في وحدة تحكم إدارة IAM.