الانتقال بدون خادم: كيفية تشغيل أول وظيفة AWS Lambda في السحابة

منذ عقد مضى ، استخلصت الخوادم السحابية الخوادم المادية. والآن ، "Serverless" يستخرج الخوادم السحابية بعيدًا.

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

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

في حالة وظائف AWS لامدا ، وهذا ما يسمى الزناد. يمكن تشغيل وظائف Lambda بطرق مختلفة: طلب HTTP ، أو تحميل مستند جديد إلى S3 ، أو وظيفة مجدولة ، أو دفق بيانات AWS Kinesis ، أو إشعار من AWS Simple Notification Service (SNS).

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

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

أولاً ، ستحتاج إلى حساب AWS. إذا لم يكن لديك حساب بعد ، فابدأ بفتح حساب AWS مجاني هنا. تمتلك AWS مستوى مجانيًا أكثر من كافٍ لما ستحتاج إليه في هذا البرنامج التعليمي.

سنقوم بكتابة الوظيفة isPalindrome ، والتي تتحقق مما إذا كانت السلسلة التي تم تمريرها عبارة عن palindrome أم لا.

أعلاه تطبيق مثال في JavaScript. هنا هو الرابط للجيست على جيثب.

palindrome هي كلمة أو عبارة أو تسلسل يقرأ نفس الشيء للخلف للأمام ، من أجل البساطة سنحصر الوظيفة على الكلمات فقط.

كما نرى في المقتطف أعلاه ، نأخذ السلسلة ونقسمها ونعكسها ثم ننضم إليها. إذا كانت السلسلة وعكسها متساوية ، تكون السلسلة Palindrome وإلا فإن السلسلة ليست Palindrome.

إنشاء وظيفة ispalalindrome لامدا

في هذه الخطوة ، سنتجه إلى وحدة التحكم AWS لإنشاء وظيفة Lambda:

في AWS Console ، انتقل إلى Lambda.

ثم اضغط على "البدء الآن".

وقت التشغيل ، حدد Node.js 6.10 ، ثم اضغط على "وظيفة فارغة".

تخطي هذه الخطوة واضغط على "التالي".

لنوع الاسم في isPalindrome ، لنوع الوصف في وصف وظيفة Lambda الجديدة ، أو اتركه فارغًا.

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

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

حرك الفأرة لأسفل. بالنسبة للوظيفة ، اختر "إنشاء دور جديد من القالب" ، وبالنسبة لاسم الدور ، استخدم isPalindromeRole أو أي اسم تريده.

بالنسبة لقوالب السياسة ، اختر أذونات "خدمة Microservice البسيطة".

للذاكرة ، 128 ميغابايت أكثر من كافية لوظيفة بسيطة لدينا.

بالنسبة إلى مهلة 3 ثوانٍ ، فهذا يعني أنه - في حالة عدم عودة الوظيفة خلال 3 ثوانٍ - ستقوم AWS بإغلاقها وإرجاع خطأ. ثلاث ثوان هي أيضا أكثر من كافية.

اترك باقي الإعدادات المتقدمة دون تغيير.

اضغط على "إنشاء وظيفة".

تهانينا - لقد أنشأت أول وظيفة Lambda. لاختباره ، اضغط على "اختبار".

كما ترون ، ترجع الدالة Lambda استجابة مشفرة ثابتة من "Hello from Lambda."

أضف الآن الكود من isPalindrome.js إلى وظيفة Lambda الخاصة بك ، ولكن بدلاً من نتيجة الإرجاع ، استخدم رد الاتصال (لاغٍ ، نتيجة). ثم أضف قيمة سلسلة ثابتة مشفرة من abcd على السطر 3 واضغط على "Test".

يجب أن ترجع الدالة Lambda "abcd ليست Palindrome."

بالنسبة لقيمة السلسلة ذات الترميز الثابت لـ "racecar" ، تقوم دالة Lambda بإرجاع "racecar is Palindrome."

حتى الآن ، تتصرف وظيفة Lambda التي أنشأناها كما هو متوقع.

في الخطوات التالية ، سأوضح لك كيفية تشغيله وتمرير وسيطة سلسلة باستخدام طلب HTTP.

إذا كنت قد أنشأت REST APIs من البداية قبل استخدام أداة مثل Express.js ، فيجب أن يكون المقتطف أعلاه منطقيًا بالنسبة لك. عليك أولاً إنشاء خادم ، ثم تحديد جميع مساراتك واحدًا تلو الآخر.

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

إنشاء بوابة API

انتقل إلى AWS Console واضغط على "بوابة API".

ثم اضغط على "البدء".

في إنشاء لوحة معلومات API جديدة ، حدد "واجهة برمجة تطبيقات جديدة".

بالنسبة لاسم واجهة برمجة التطبيقات ، استخدم "palindromeAPI". للحصول على وصف ، اكتب وصفًا لواجهة برمجة التطبيقات الجديدة أو اتركه فارغًا.

ستكون واجهة برمجة التطبيقات لدينا بسيطة ، وستحتوي فقط على طريقة GET التي سيتم استخدامها للتواصل مع وظيفة Lambda.

في قائمة "إجراءات" ، حدد "إنشاء طريقة". ستظهر قائمة فرعية صغيرة. المضي قدما وحدد GET ، وانقر على علامة اختيار على اليمين.

لنوع التكامل ، حدد وظيفة لامدا.

ثم اضغط على "موافق".

في شاشة GET - تنفيذ الأسلوب ، اضغط على "طلب تكامل".

بالنسبة لنوع التكامل ، تأكد من تحديد وظيفة Lambda.

بالنسبة لمرور نص الطلب ، حدد "عند عدم وجود قوالب محددة" ، ثم أدخل "application / json" بالنسبة إلى Content-Type.

في المساحة الفارغة ، أضف كائن JSON الموضح أدناه. يعرّف كائن JSON هذا المعلمة "string" التي ستسمح لنا بالمرور عبر قيم السلسلة إلى دالة Lambda باستخدام طلب HTTP GET. هذا مشابه لاستخدام req.params في Express.js.

في الخطوات التالية ، سننظر في كيفية تمرير قيمة السلسلة إلى وظيفة Lambda ، وكيفية الوصول إلى القيمة التي تم تمريرها من داخل الوظيفة.

واجهة برمجة التطبيقات جاهزة الآن للنشر. في قائمة "إجراءات" ، انقر فوق "نشر واجهة برمجة التطبيقات".

بالنسبة إلى مرحلة النشر ، حدد "[مرحلة جديدة]".

وبالنسبة للمرحلة الاسم ، استخدم كلمة "prod" (وهي اختصار لـ "الإنتاج").

تم نشر واجهة برمجة التطبيقات الآن ، وسيتم استخدام عنوان URL الخاص بالاتصال للتواصل عبر طلب HTTP مع Lambda. إذا كنت تتذكر ، بالإضافة إلى رد الاتصال ، تأخذ Lambda معلمتين: الحدث والسياق.

لإرسال قيمة سلسلة إلى Lambda ، فإنك تأخذ عنوان URL لاستدعاء وظيفتك وتضيف إليه؟ string = someValue ومن ثم يمكن الوصول إلى القيمة التي تم تمريرها من داخل الوظيفة باستخدام event.string.

تعديل التعليمات البرمجية عن طريق إزالة قيمة السلسلة الثابت ترميز واستبدالها بـ event.string كما هو موضح أدناه.

الآن في المتصفح ، خذ عنوان URL لاستدعاء وظيفتك وأضف؟ string = abcd لاختبار وظيفتك عبر المتصفح.

كما ترون Lambda يرد أن abcd ليس Palindrome. الآن تفعل الشيء نفسه لسباق السيارات.

إذا كنت تفضل ذلك ، يمكنك استخدام Postman أيضًا لاختبار وظيفة isPalindrome Lambda الجديدة. يعد Postman أداة رائعة لاختبار نقاط النهاية لواجهة برمجة التطبيقات ، يمكنك معرفة المزيد عنها هنا.

للتحقق من نجاحه ، إليك Palindrome:

وإليكم غير متناظرة:

تهانينا - لقد قمت للتو بإعداد ونشر وظيفة Lambda الخاصة بك!

شكرا للقراءة!