اليوم سنقوم بإنشاء ما يسمى ب. دالة Yandex (اسم رسمي
أنا أيضًا أعارض الخوادم التقليدية (ولكن بدون تعصب) ، وداعمًا لما يسمى. serverless حلول (بدون خادم) ، لأنني لا أحب (ولا أعرف حقًا كيف) إدارة الخوادم ، وأكثر من ذلك - للدفع مقابل الوقت الذي لا يتم فيه تحميلها. شيء آخر هو الوظائف. شخص ما يخدمهم بدوني ، وأنا أدفع فقط للمكالمات. في بداية أكتوبر 2019 ، قدمت Yandex ملف وظائف سحابة Yandex - يبدو الأول في الاتحاد الروسي serverless. وما هو لطيف بشكل خاص - فهي عمومًا مجانية لمهارات أليس ، لذا فقد ظلوا في رؤيتي المحيطية منذ ذلك الحين. لكن دعنا نبدأ بالفعل.
دعونا نتخيل مثل هذا السيناريو. تطبيقك (على سبيل المثال ، مهارة أليس
حول كيف من وظائف ياندكس عمل إدخالات في قاعدة البيانات سحابة Firestore لقد غطينا بالفعل في البرنامج التعليمي
1. إنشاء حساب في SendGrid
لاحظSendGrid هو خياري فقط ، والذي قمت به لعدة أسباب ، أهمها أن لديهم SDK جاهزًا لـ Node.js. يمكنك اختيار أي خدمة بريدية أخرى.
هيا لنذهب
في الخطوة التالية ، اختر نود.جي إس:
بعد ذلك ، نخترع من أجل API-اسم المفتاح (سيتم عرضه فقط في وحدة التحكم في قائمة المفاتيح ، وليس له علاقة بكودنا المستقبلي ؛ لقد توصلت إلى كلمة غير قابلة للتلف مفتاح API التجريبي) واضغط على الزر إنشاء مفتاح:
سيتم إنشاء المفتاح ، وسنقوم بنسخه والاحتفاظ به في سرية تامة. وسيكون لدينا شاشة بها زر تحقق من التكامل، كما في الصورة أدناه ، لكننا لن نضغط عليها بعد ، لكن ننتقل إلى كتابة الكود:
2. كتابة التعليمات البرمجية
والشفرة نفسها ، كما ترى ، صغيرة للغاية - 22 سطرًا!
في النسق #8 بريدي مكتوب برمز صلب (وبالتالي مغطى بخجل) - أنت تحدد لك. في الحياة الواقعية ، سوف نتلقى جميع البيانات (بما في ذلك البريد الإلكتروني) من الكائن حدث. على سبيل المثال ، إذا كانت الطريقة سأعين يتم إرسال كائن إلى وظيفتنا المستخدم مع حقل (خاصية) البريد الإلكتروني، يمكن الحصول على قيمة هذا الحقل على النحو التالي:
const { user } = event;
const email = user.email;
وإذا تم تمرير عنوان البريد الإلكتروني إلى الوظيفة عن طريق الطريقة للحصول علىعلى سبيل المثال: https://functions.yandexcloud.net/123abc?[email protected]
قيمة المعلمة البريد الإلكتروني يمكن الحصول عليها على النحو التالي:
const email = event.queryStringParameters.email;
لإلقاء نظرة على ما هو موجود بالضبط في كائن ما حدث، يمكنك إنشاء ملف دالة Yandex ولفها بالطلبات:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
تم ذكر المزيد (ولكن بشكل أقل وضوحًا) حول هذا الأمر في الوثائق الرسمية.
لذلك ، ننشئ دليل مشروع (على سبيل المثال ، الارسال) ، انتقل إليه ، قم بتهيئة المشروع ، قم بتثبيت التبعيات:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
فقط الحزمة المطلوبة هنا @ sendgrid / mail. حقيبة بلاستيكية مدقق البريد الإلكتروني يتحقق من صحة عنوان البريد (كيف لم أخمن على الفور؟) ، ولكن إذا كنا متأكدين منه (تم التحقق منه لفترة طويلة بدوننا) ، فلا يمكن تثبيته (وبالطبع ، لا ينبغي أن يتم التحقق في الكود). حقيبة بلاستيكية دوتنف مصمم لقراءة السجلات من ملف .env كمتغيرات وقت التشغيل. ولكن في وظائف ياندكس من الممكن وضع هذه المتغيرات مباشرة في بيئة وقت التشغيل. كيف؟ - سأريها أدناه. لذلك الحزمة دوتنف لا يمكنك أيضا تثبيت ، والملف .env - لا تنشئ ، وفي نفس الوقت الكود في الملف index.js لا تغير. ولكن هنا قمنا بتثبيت هذه الحزمة ، لذلك نقوم بإنشاء الملفات index.js и .env:
touch index.js
touch .env
في ملف index.js اكتب 22 سطرًا من التعليمات البرمجية الموضحة في لقطة الشاشة أعلاه (فقط في السطر #8 تغيير البريد الخاص بك) ، وفي الملف .env - (بدون أي علامات اقتباس وعلامات ترقيم) حدد زوجًا - اسم / قيمة المفتاح API، والتي تلقيناها مؤخرًا في وحدة التحكم SendGrid:
SENDGRID_API_KEY = مفتاح واجهة برمجة التطبيقات الخاص بك للغاية
وإذا كنت تريد عملًا أقل ، فقم باستنساخ المستودع ، وقم بتثبيت الحزم:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
في ملف index.js، في النسق #8 تغيير البريد إنشاء ملف في الدليل الجذر .env، وفيه حدد اسم / قيمة المفتاح APIكما هو موضح أعلاه.
3. النشر
أكثر أو أقل وضوحًا وتفصيلًا عن ياندكس كلاود وكيفية وضعها وظائف ياندكس الموصوفة في مقالتي
خلق الرمز البريدي-أرشيف (دعنا نسميها ، على سبيل المثال ، mailer.zip) ، والذي يتضمن الدليل node_modules والملفات env ، index.js - كل شيء من دليل مشروعنا:
نقوم بإنشاء دالة باسم ... حق - الارسال، في قائمة التنقل اليمنى ، حدد محرر، املأ الحقول المطلوبة ، وانتقل إلى علامة التبويب أرشيف مضغوط تحميل أرشيفنا mailer.zip:
وهنا الخيار المذكور سابقًا للتنزيل مفتاح API مباشرة هنا بدلاً من إنشاء ملف في المشروع .env، ولا تقم بتثبيت الحزمة دوتنف. لكننا فعلنا كل هذا بالفعل ، لذلك أعرضه للعلم فقط. هذا هو - لا حاجة للتكرار!
انقر الآن على الزر في الزاوية اليمنى العليا إنشاء نسخةوانتظر بضع ثوان. عندما يكون كل شيء جاهزًا ، سننتقل تلقائيًا إلى القسم مراجعة. هناك نقوم بتمكين الخيار الوظيفة العامةبحيث يمكن التفاعل معها من العالم الخارجي.
انظر الرابط الأزرق بجانب النقش رابط للاتصال؟ انقر فوقه. ستفتح نافذة متصفح فارغة ... ولكن انتظر ، تلقيت بريدًا إلكترونيًا:
الآن يمكنك العودة إلى وحدة التحكم SendGrid، واضغط على الزر تحقق من التكامل. سيقوم النظام بفحص كل شيء من خلال قنواته ، ونتيجة لذلك يجب إعادة هذه الشاشة:
لذا ، أيها الرجال (والفتيات ، بالطبع) - كل شيء بسيط جدًا وأنيق حقًا! سيكون هناك المزيد من المقالات. إذا كنت مهتمًا بقراءة هذا ، فقم بالاشتراك حتى لا تفوتك.
4. التبرعات
المصدر: www.habr.com