امروز ما به اصطلاح ایجاد خواهیم کرد. تابع Yandex (نام رسمی
من هم مخالف (اما بدون تعصب) سرورهای سنتی هستم و طرفدار به اصطلاح. بدون سرور راه حل های (بدون سرور)، زیرا من دوست ندارم (و واقعاً نمی دانم چگونه) سرورها را مدیریت کنم و حتی بیشتر از آن - برای زمانی که بارگذاری نمی شوند هزینه کنم. چیز دیگر توابع است. کسی بدون من به آنها خدمات می دهد و من فقط هزینه تماس را پرداخت می کنم. در ابتدای اکتبر 2019، Yandex خود را ارائه کرد توابع ابر یاندکس - به نظر می رسد اولین در فدراسیون روسیه است بدون سرور. و چیزی که به خصوص خوب است این است که برای مهارت های آلیس، آنها به طور کلی آزاد هستند، بنابراین از آن زمان تاکنون در دید پیرامونی من بوده اند. اما بیایید از قبل شروع کنیم.
بیایید این سناریو را تصور کنیم. درخواست شما (به عنوان مثال، مهارت آلیس
در مورد چگونگی از توابع Yandex در پایگاه داده وارد کنید Cloud Firestore قبلاً در آموزش به آن نگاه کردیم
1. یک حساب کاربری در SendGrid ایجاد کنید
یادداشتSendGrid فقط انتخاب من است که به چند دلیل انجام دادم، اصلی ترین دلیل این است که آنها یک SDK آماده برای Node.js دارند. شما می توانید هر سرویس پستی دیگری را انتخاب کنید.
بیایید ادامه دهیم
در مرحله بعد انتخاب می کنیم Node.js و:
بعد ما برای خودمان می آییم 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. کیسه پلاستیکی اعتبار سنجی ایمیل آدرس ایمیل را از نظر اعتبار بررسی می کند (چطور من بلافاصله حدس نمی زدم؟)، اما اگر از آن مطمئن باشیم (قبلاً بدون ما برای مدت طولانی بررسی شده است)، نیازی به نصب آن نداریم (و البته، ما مجبور نیستیم آن را در کد بررسی کنیم). کیسه پلاستیکی dotenv طراحی شده برای خواندن سوابق از یک فایل .NS به عنوان متغیرهای زمان اجرا ولی در توابع Yandex امکان قرار دادن این متغیرها به طور مستقیم در محیط زمان اجرا وجود دارد. چگونه؟ - من آن را در زیر نشان می دهم. بنابراین بسته dotenv شما همچنین نمی توانید آن را نصب کنید، و فایل .NS - ایجاد نکنید و در عین حال کد در فایل موجود است index.js تغییر نده. اما در اینجا ما این بسته را نصب کرده ایم، بنابراین فایل ها را ایجاد می کنیم index.js и .NS:
touch index.js
touch .env
در پرونده index.js 22 خط کد نشان داده شده در تصویر بالا بنویسید (فقط در خط #8 ایمیل خود را تغییر دهید)، و در فایل .NS - (بدون هیچ گونه نقل قول یا نقطه گذاری) جفت - نام/مقدار کلید را مشخص کنید APIکه اخیرا در کنسول دریافت کردیم SendGrid:
SENDGRID_API_KEY=خیلی-مخفی-sendgrid-api-key
و اگر کار کمتری می خواهید، مخزن را کلون کنید و بسته ها را نصب کنید:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
در پرونده index.js، در صف #8 تغییر ایمیل؛ یک فایل در دایرکتوری ریشه ایجاد کنید .NSو در آن نام/مقدار کلید را مشخص کنید API، همانطور که در بالا نشان داده شده است.
3. مستقر کنید
کم و بیش واضح و با جزئیات در مورد Yandex.Cloud و نحوه قرار دادن آن در آنجا توابع Yandex در مقاله من شرح داده شده است
ما ایجاد می کنیم زیپ-بایگانی (مثلاً آن را بنامیم، mailer.zip) که در آن دایرکتوری را قرار می دهیم node_modules و فایل ها .env، index.js - همه چیز از کاتالوگ پروژه ما:
ما یک تابع با نام ... درست می کنیم - پستچی، در منوی ناوبری سمت چپ وارد می شویم سردبیر، فیلدهای مورد نیاز را پر کنید و به برگه بروید آرشیو ZIP آرشیو ما را دانلود کنید mailer.zip:
و در اینجا گزینه ای که قبلا ذکر شد برای دانلود وجود دارد کلید ای پی ای بهجای ایجاد فایل در پروژه، مستقیماً در اینجا .NS، و بسته را نصب نکنید dotenv. اما ما قبلاً همه این کارها را انجام دادهایم، بنابراین فقط برای اطلاعات آن را نشان میدهم. یعنی نیازی به کپی نیست!
حالا در گوشه بالا سمت راست روی دکمه کلیک کنید ایجاد نسخهو چند ثانیه صبر کنید. وقتی همه چیز آماده شد، به طور خودکار به بخش خواهیم رفت مرور. در آنجا گزینه را فعال خواهیم کرد عملکرد عمومیتا بتوانید از دنیای بیرون با آن تعامل داشته باشید.
لینک آبی رنگ روبروی کتیبه را می بینید لینک تماس? روی آن کلیک کنید. یک پنجره خالی مرورگر باز می شود ... اما صبر کنید - یک ایمیل دریافت کردم:
اکنون می توانید به کنسول بازگردید SendGrid، و دکمه را فشار دهید یکپارچگی را تأیید کنید. سیستم همه چیز را از طریق کانال های خود بررسی می کند و در نتیجه باید صفحه ای مانند این را برگرداند:
همین است، بچه ها (البته دختران) - همه چیز واقعاً بسیار ساده و ظریف است! مقالات بیشتری وجود خواهد داشت. اگر کسی علاقه مند به خواندن چنین چیزی است، مشترک شوید تا فرصت را از دست ندهید.
4. کمک های مالی
منبع: www.habr.com