Dnes si vytvoříme tzv. Funkce Yandex (oficiální jméno
Jsem také odpůrcem (ale bez fanatismu) tradičních serverů a zastáncem tzv. serverless (bezserverová) řešení, protože mě nebaví (a vlastně ani neumím) spravovat servery a ještě víc platím za dobu, kdy nejsou načteny. Další věcí jsou funkce. Někdo je obsluhuje beze mě a já platím jen za hovory. Na začátku října 2019 představil Yandex svůj Funkce cloudu Yandex - zdá se být první v Ruské federaci serverless. A co je obzvláště pěkné, že pro Aliciny dovednosti jsou obecně zdarma, takže jsou od té doby v mém periferním vidění. Ale pojďme už začít.
Představme si tento scénář. Vaše aplikace (například Alicina dovednost
O tom, jak od Funkce Yandex dělat záznamy v databázi Cloud Firestore už jsme se na to podívali v tutoriálu
1. Vytvořte si účet v SendGrid
PoznámkaSendGrid je jen moje volba, kterou jsem udělal z několika důvodů, hlavní je, že mají hotové SDK pro Node.js. Můžete si vybrat jakoukoli jinou poštovní službu.
Pokračujte dál
V dalším kroku vybíráme Node.js:
Dále přicházíme na naše API-název klíče (bude zobrazen pouze v konzole v seznamu klíčů a nemá nic společného s naším budoucím kódem; přišel jsem s nehynoucím demo-api-key) a stiskněte tlačítko Vytvořit klíč:
Klíč bude vygenerován, zkopírujeme jej a uchováme v nejhlubší důvěře. A budeme mít obrazovku s tlačítkem Ověřte integraci, jako na obrázku níže, ale ještě na to neklikneme, ale přejděme k psaní kódu:
2. Psaní kódu
Ale samotný kód, jak vidíte, je směšně malý - 22 řádků!
V souladu #8 Můj e-mail je pevně zakódován (a proto stydlivě skrytý) - uveďte prosím svůj. V reálném životě obdržíme všechna data (včetně e-mail) z objektu událost. Například pokud metoda POST naší funkci je odeslán objekt uživatel s polem (majetkem) e-mail, hodnotu tohoto pole lze získat takto:
const { user } = event;
const email = user.email;
A pokud je e-mailová adresa předána funkci pomocí metody GET, Například: https://functions.yandexcloud.net/123abc?[email protected]
hodnota parametru e-mail můžete to získat takto:
const email = event.queryStringParameters.email;
Abychom se podívali, co přesně je v objektu obsaženo událost, můžete vytvořit nejjednodušší Funkce Yandex a překrucujte to dotazy:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Podrobněji (ale méně jasně) je to popsáno v oficiální dokumentaci
Vytvořte tedy adresář projektu (např. poštovní zásilka), přejděte na něj, inicializujte projekt, nainstalujte závislosti:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Zde je vyžadován pouze balíček @sendgrid/mail. Igelitová taška e-mailový validátor zkontroluje platnost e-mailové adresy (jak jsem to hned neuhodl?), ale pokud jsme si tím jisti (už je dlouho kontrolována bez nás), nemusíme ji instalovat (a popř. samozřejmě to nemusíme kontrolovat v kódu). Igelitová taška dotenv navržený pro čtení záznamů ze souboru .env jako runtime proměnné. Ale v Funkce Yandex Tyto proměnné je možné umístit přímo do běhového prostředí. Jak? - Ukážu to níže. Proto balíček dotenv také jej nelze nainstalovat a soubor .env - nevytvářejte a zároveň je kód v souboru index.js neměň. Zde jsme ale nainstalovali tento balíček, takže vytváříme soubory index.js и .env:
touch index.js
touch .env
V souboru index.js napište 22 řádků kódu zobrazeného na snímku obrazovky výše (pouze do řádku #8 změnit svůj e-mail) a v souboru .env - (bez uvozovek nebo interpunkce) uveďte pár - název klíče/hodnota APIkterý jsme nedávno dostali do konzole SendGrid:
SENDGRID_API_KEY=váš-velmi tajný-sendgrid-api-key
A pokud chcete méně práce, naklonujte úložiště a nainstalujte balíčky:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
V souboru index.js, v souladu #8 změnit e-mail; vytvořit soubor v kořenovém adresáři .enva v něm uveďte název/hodnotu klíče API, jak je uvedeno výše.
3. Nasadit
Víceméně jasně a podrobně o Yandex.Cloud a jak to tam umístit Funkce Yandex popsané v mém článku
Vytvořit zip-archiv (říkejme tomu např. mailer.zip), do kterého zařadíme adresář node_modules a soubory .env, index.js - vše z našeho katalogu projektů:
Vytvoříme funkci s názvem... správně - poštovní zásilka, v levém navigačním menu vstoupíme Editor, vyplňte požadovaná pole a přejděte na kartu ZIP archiv stáhněte si náš archiv mailer.zip:
A zde je již zmíněná možnost stažení API klíč přímo zde, místo vytváření souboru v projektu .enva balíček neinstalujte dotenv. Ale to vše jsme již udělali, takže to ukazuji jen pro informaci. To znamená, že není třeba duplikovat!
Nyní v pravém horním rohu klikněte na tlačítko Vytvořit verzia počkejte několik sekund. Když je vše připraveno, automaticky přejdeme do sekce Recenze. Tam volbu povolíme veřejná funkceabyste s ním mohli komunikovat z vnějšího světa.
Naproti nápisu vidíte modrý odkaz Odkaz na volání? Klikněte na něj. Otevře se prázdné okno prohlížeče... Ale počkejte – obdržel jsem e-mail:
Nyní se můžete vrátit do konzole SendGrida stiskněte tlačítko Ověřte integraci. Systém vše zkontroluje prostřednictvím svých kanálů a v důsledku toho by měl vrátit obrazovku jako je tato:
To je vše, chlapci (a dívky, samozřejmě) - všechno je opravdu velmi jednoduché a elegantní! Článků bude více. Pokud má někdo zájem si něco takového přečíst, přihlaste se k odběru, ať o nic nepřijdete.
4. Dary
Zdroj: www.habr.com