Bu gün biz sözdə yaradacağıq. Yandex funksiyası (rəsmi adı
Mən həm də ənənəvi serverlərin rəqibiyəm (amma fanatizmsiz) və sözdə tərəfdarıyam. serversiz (serversiz) həllər, çünki serverləri idarə etməyi xoşlamıram (və həqiqətən bilmirəm) və daha çox yüklənmədiyi vaxt üçün pul ödəyirəm. Başqa bir şey funksiyalardır. Kimsə onlara mənsiz xidmət edir, mən isə ancaq zənglərə görə pul ödəyirəm. 2019-cu il oktyabrın əvvəlində Yandex öz təqdimatını təqdim etdi Yandex Bulud funksiyaları - deyəsən Rusiya Federasiyasında birincidir serversiz. Və xüsusilə gözəl olanı odur ki, Alicenin bacarıqları üçün onlar ümumiyyətlə pulsuzdurlar, ona görə də o vaxtdan bəri onlar mənim periferik baxışımdadırlar. Amma gəlin artıq başlayaq.
Bu ssenarini təsəvvür edək. Müraciətiniz (məsələn, Alisin bacarığı
Necədən haqqında Yandex funksiyaları verilənlər bazasına qeydlər etmək Cloud Firestore biz artıq dərslikdə buna baxdıq
1. SendGrid-də hesab yaradın
QeydSendGrid sadəcə mənim seçimimdir, bunu bir neçə səbəbə görə etdim, əsas odur ki, onların Node.js üçün hazır SDK var. İstənilən digər poçt xidmətini seçə bilərsiniz.
Gəlin davam edək
Növbəti mərhələdə biz seçirik Node.js:
Sonra bizim üçün gəlir API-açar adı (yalnız açarlar siyahısında konsolda göstəriləcək və gələcək kodumuzla heç bir əlaqəsi yoxdur; mən indicə köhnəlməz bir şey tapdım. demo-api açarı) və düyməni basın Açar yarat:
Açar yaradılacaq, biz onu kopyalayacağıq və ən dərin inamda saxlayacağıq. Və düyməsi olan ekranımız olacaq İnteqrasiyanı yoxlayın, aşağıdakı şəkildəki kimi, lakin biz hələ klikləməyəcəyik, amma kodu yazmağa davam edək:
2. Kodun yazılması
Ancaq kodun özü, gördüyünüz kimi, gülünc dərəcədə kiçikdir - 22 sətir!
Xətdə #8 Mənim e-poçtum kodlaşdırılıb (və buna görə də utancaq şəkildə gizlədilib) - lütfən, öz e-poçtunuzu qeyd edin. Real həyatda biz bütün məlumatları alacağıq (o cümlədən e-poçt) obyektdən hadisə. Məsələn, əgər üsul POST bir obyekt funksiyamıza göndərilir istifadəçi sahə ilə (əmlak) e-poçt, bu sahənin dəyəri belə əldə edilə bilər:
const { user } = event;
const email = user.email;
Və e-poçt ünvanı metoddan istifadə edərək funksiyaya ötürülürsə GET, məsələn: https://functions.yandexcloud.net/123abc?[email protected]
parametr dəyəri e-poçt bunu belə əldə edə bilərsiniz:
const email = event.queryStringParameters.email;
Bir obyektdə tam olaraq nə olduğuna nəzər salmaq hadisə, ən sadəini yarada bilərsiniz Yandex funksiyası və onu sorğularla çevirin:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Bu, rəsmi sənədlərdə daha ətraflı (lakin daha az aydın) müzakirə olunur
Beləliklə, bir layihə kataloqu yaradın (məsələn, poçtçu), ona gedin, layihəni işə salın, asılılıqları quraşdırın:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Burada yalnız paket tələb olunur @sendgrid/mail. Plastik torba e-poçt təsdiqləyicisi e-poçt ünvanının etibarlılığını yoxlayır (dərhal necə təxmin etmədim?), lakin buna əminiksə (bu, bizsiz uzun müddətdir yoxlanılıb), onu quraşdırmaq məcburiyyətində deyilik (və, əlbəttə, biz bunu kodda yoxlamaq məcburiyyətində deyilik). Plastik torba dotenv fayldan qeydləri oxumaq üçün nəzərdə tutulmuşdur .NS icra zamanı dəyişənləri kimi. Amma in Yandex funksiyaları Bu dəyişənləri birbaşa iş vaxtı mühitinə yerləşdirmək mümkündür. Necə? - Aşağıda göstərəcəyəm. Buna görə də paket dotenv siz də onu və faylı quraşdıra bilməzsiniz .NS - yaratmayın və eyni zamanda kod fayldadır indeks.js dəyişməyin. Amma burada biz bu paketi quraşdırmışıq, ona görə də fayllar yaradırıq indeks.js и .NS:
touch index.js
touch .env
Faylda indeks.js Yuxarıdakı ekran görüntüsündə göstərilən 22 sətir kodu yazın (yalnız sətirdə #8 e-poçtunuzu dəyişdirin) və faylda .NS - (heç bir dırnaq və durğu işarəsi olmadan) - açar adı/dəyəri cütünü göstərin APIbu yaxınlarda konsolda aldığımız SendGrid:
SENDGRID_API_KEY=sizin-çox-gizli-sendgrid-api-açariniz
Və daha az işləmək istəyirsinizsə, deponu klonlayın və paketləri quraşdırın:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Faylda indeks.js, xətdə #8 E-maili dəyişmək; kök qovluğunda bir fayl yaradın .NS, və orada açarın adını/dəyərini göstərin API, yuxarıda göstərildiyi kimi.
3. Yerləşdirin
Haqqında az-çox aydın və ətraflı Yandex.Cloud və onu orada necə yerləşdirmək olar Yandex funksiyaları məqaləmdə təsvir edilmişdir
Biz yaradırıq zip-arxiv (məsələn, deyək, mailler.zip), kataloqu daxil etdiyimiz düyün_ modulları və fayllar .env, index.js - layihə kataloqumuzdan hər şey:
Biz adı ilə funksiya yaradırıq... düzgün - poçtçu, sol naviqasiya menyusuna daxil oluruq Redaktoru, tələb olunan sahələri doldurun və nişana keçin ZIP arxivi arxivimizi yükləyin mailler.zip:
Və burada yükləmək üçün əvvəllər qeyd olunan seçimdir API açarı layihədə fayl yaratmaq əvəzinə birbaşa burada .NS, və paketi quraşdırmayın dotenv. Amma biz bütün bunları artıq etdik, ona görə də mən bunu yalnız məlumat üçün göstərirəm. Yəni dublikat etməyə ehtiyac yoxdur!
İndi yuxarı sağ küncdə düyməni basın Versiya yaradın, və bir neçə saniyə gözləyin. Hər şey hazır olduqda, biz avtomatik olaraq bölməyə keçəcəyik Review. Orada seçimi aktiv edəcəyik ictimai funksiyaxarici aləmdən onunla qarşılıqlı əlaqə qura bilməniz üçün.
Yazının qarşısındakı mavi linki görürsünüz Zəng etmək üçün keçid? Klikləyin. Boş brauzer pəncərəsi açılacaq... Amma gözləyin - e-məktub aldım:
İndi konsola qayıda bilərsiniz SendGrid, və düyməni basın İnteqrasiyanı yoxlayın. Sistem hər şeyi öz kanalları vasitəsilə yoxlayacaq və nəticədə belə bir ekranı qaytarmalıdır:
Budur, uşaqlar (və qızlar, əlbəttə ki) - hər şey həqiqətən çox sadə və zərifdir! Daha çox məqalə olacaq. Kimsə belə bir şey oxumaqda maraqlıdırsa, qaçırmamaq üçün abunə olun.
4. İanələr
Mənbə: www.habr.com