Dnes si vytvoríme tzv. Funkcia Yandex (oficiálny názov
Som tiež odporcom (ale bez fanatizmu) tradičných serverov a zástancom tzv. bez servera (bezserverové) riešenia, pretože nemám rád (a vlastne ani neviem ako) spravovať servery a ešte viac platím za čas, keď nie sú načítané. Ďalšia vec sú funkcie. Niekto ich obsluhuje bezo mňa a ja platím len za hovory. Začiatkom októbra 2019 Yandex predstavil svoje Funkcie cloudu Yandex - zdá sa byť prvým v Ruskej federácii bez servera. A čo je obzvlášť pekné, že pre Alicine schopnosti sú vo všeobecnosti zadarmo, takže odvtedy sú v mojom periférnom videní. Ale poďme už začať.
Predstavme si tento scenár. Vaša aplikácia (napríklad Alicina zručnosť
O tom, ako od Funkcie Yandex robiť záznamy v databáze Cloud Firestore už sme sa na to pozreli v návode
1. Vytvorte si účet v SendGrid
PoznámkaSendGrid je len moja voľba, ktorú som si vybral z viacerých dôvodov, tým hlavným je, že majú hotové SDK pre Node.js. Môžete si vybrať akúkoľvek inú poštovú službu.
Poďme ďalej
V ďalšom kroku vyberieme Node.js:
Ďalej prídeme na naše API-názov kľúča (zobrazí sa iba v konzole v zozname kľúčov a nemá nič spoločné s naším budúcim kódom; práve som prišiel s nehynúcim demo-api-key) a stlačte tlačidlo Vytvoriť kľúč:
Kľúč sa vygeneruje, skopírujeme ho a uchovávame v najhlbšej dôvernosti. A budeme mať obrazovku s tlačidlom Overte integráciu, ako na obrázku nižšie, ale zatiaľ naň neklikneme, ale prejdime k písaniu kódu:
2. Písanie kódu
Ale samotný kód, ako vidíte, je smiešne malý - 22 riadkov!
V rade #8 Môj e-mail je pevne zakódovaný (a preto je hanblivo skrytý) - uveďte prosím svoj. V reálnom živote dostaneme všetky údaje (vrátane e-mail) z objektu udalosť. Napríklad, ak metóda POST objekt sa odošle našej funkcii užívateľ s poľom (vlastníctvom) e-mail, hodnotu tohto poľa možno získať takto:
const { user } = event;
const email = user.email;
A ak je e-mailová adresa odovzdaná funkcii pomocou metódy GET, napríklad: https://functions.yandexcloud.net/123abc?[email protected]
hodnota parametra e-mail môžete to získať takto:
const email = event.queryStringParameters.email;
Aby ste sa pozreli na to, čo presne obsahuje predmet udalosť, môžete vytvoriť najjednoduchšie Funkcia Yandex a otočte to otázkami:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Podrobnejšie (ale menej zrozumiteľne) sa o tom hovorí v oficiálnej dokumentácii
Vytvorte si teda adresár projektu (napr. mailový klient), prejdite naň, inicializujte projekt, nainštalujte závislosti:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Tu je potrebný iba balík @sendgrid/mail. Plastový sáčok email-validátor skontroluje platnosť emailovej adresy (ako som to hneď neuhádol?), ale ak sme si ňou istí (už bola dlho kontrolovaná bez nás), nemusíme ju inštalovať (a resp. samozrejme, nemusíme to kontrolovať v kóde). Plastový sáčok dotenv určený na čítanie záznamov zo súboru .env ako runtime premenné. Ale v Funkcie Yandex Tieto premenné je možné umiestniť priamo do runtime prostredia. Ako? - Ukážem to nižšie. Preto balík dotenv tiež ho nemôžete nainštalovať a súbor .env - nevytvárajte a zároveň je kód v súbore index.js nemeň. Ale tu sme nainštalovali tento balík, takže vytvárame súbory index.js и .env:
touch index.js
touch .env
V súbore index.js napíšte 22 riadkov kódu zobrazeného na obrázku vyššie (iba do riadku #8 zmeniť svoj e-mail) a v súbore .env - (bez úvodzoviek alebo interpunkcie) uveďte pár - názov kľúča/hodnota APIktorý sme nedávno dostali do konzoly SendGrid:
SENDGRID_API_KEY=váš-veľmi tajný-sendgrid-api-key
A ak chcete menej práce, naklonujte úložisko a nainštalujte balíčky:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
V súbore index.js, v rade #8 zmeniť e-mail; vytvorte súbor v koreňovom adresári .enva v ňom uveďte názov/hodnotu kľúča API, ako je znázornené vyššie.
3. Nasadiť
Viac-menej jasne a podrobne o Yandex.Cloud a ako to tam umiestniť Funkcie Yandex popísané v mojom článku
Tvoríme zips- archív (nazvime to napr. mailer.zip), do ktorého zaraďujeme adresár node_modules a súbory .env, index.js - všetko z nášho katalógu projektov:
Vytvoríme funkciu s názvom... správne - mailový klient, v ľavom navigačnom menu vstúpime editor, vyplňte požadované polia a prejdite na kartu ZIP archív stiahnite si náš archív mailer.zip:
A tu je už spomínaná možnosť na stiahnutie API kľúč priamo tu, namiesto vytvárania súboru v projekte .enva balík neinštalujte dotenv. Ale toto všetko sme už urobili, takže to uvádzam len pre informáciu. To znamená, že nie je potrebné duplikovať!
Teraz v pravom hornom rohu kliknite na tlačidlo Vytvoriť verziua počkajte niekoľko sekúnd. Keď je všetko pripravené, automaticky prejdeme do sekcie Recenzia. Tam túto možnosť povolíme Verejná funkciaaby ste s ním mohli komunikovať z vonkajšieho sveta.
Modrý odkaz vidíte oproti nápisu Odkaz na volanie? Kliknite naň. Otvorí sa prázdne okno prehliadača... Ale počkajte – dostal som e-mail:
Teraz sa môžete vrátiť do konzoly SendGrida stlačte tlačidlo Overte integráciu. Systém všetko skontroluje prostredníctvom svojich kanálov a v dôsledku toho by mal vrátiť takúto obrazovku:
To je všetko, chlapci (a dievčatá, samozrejme) - všetko je naozaj veľmi jednoduché a elegantné! Článkov bude viac. Ak má niekto záujem si niečo podobné prečítať, prihláste sa na odber, aby ste to nezmeškali.
4. Dary
Zdroj: hab.com