Danas ćemo kreirati tzv. Yandex funkcija (službeni naziv
Također sam protivnik (ali bez fanatizma) tradicionalnih servera, te pobornik tzv. serverless (bez servera) rješenja, jer ne volim (i ne znam baš kako) administrirati poslužitelje, a još više plaćati vrijeme kada nisu učitani. Druga stvar su funkcije. Netko ih servisira bez mene, a ja plaćam samo pozive. Početkom listopada 2019. Yandex je predstavio svoj Yandex Cloud funkcije - čini se da je prvi u Ruskoj Federaciji serverless. A ono što je posebno lijepo je da su za Aliceine vještine uglavnom besplatne, pa su od tada u mom perifernom vidu. No, počnimo već jednom.
Zamislimo ovaj scenarij. Vaša aplikacija (na primjer, Aliceina vještina
O tome kako iz Yandex funkcije napraviti unose u bazu podataka Cloud Firestore već smo to pogledali u tutorialu
1. Napravite račun u SendGridu
PrimijetitiSendGrid je samo moj izbor za koji sam se odlučio iz više razloga, a glavni je taj što imaju gotov SDK za Node.js. Možete odabrati bilo koju drugu poštansku uslugu.
Idemo dalje
U sljedećem koraku odabiremo Node.js:
Sljedeće smišljamo za naše API-naziv ključa (bit će prikazan samo u konzoli na popisu ključeva i nema nikakve veze s našim budućim kodom; upravo sam smislio neprolazni demo-api-ključ) i pritisnite gumb Kreiraj ključ:
Ključ će biti generiran, mi ćemo ga kopirati i čuvati u najvećoj tajnosti. I imat ćemo zaslon s gumbom Provjerite integraciju, kao na slici ispod, ali nećemo još kliknuti, već prijeđimo na pisanje koda:
2. Pisanje koda
Ali sam kod, kao što vidite, smiješno je mali - 22 reda!
U redu #8 Moja adresa e-pošte je tvrdo kodirana (i stoga sramežljivo skrivena) - molimo naznačite svoju. U stvarnom životu primit ćemo sve podatke (uključujući e-mail) od objekta događaj. Na primjer, ako je metoda POST objekt se šalje našoj funkciji korisnik s poljem (imovinom) e-mail, vrijednost ovog polja može se dobiti ovako:
const { user } = event;
const email = user.email;
A ako se adresa e-pošte proslijedi funkciji pomoću metode GET, na primjer: https://functions.yandexcloud.net/123abc?[email protected]
vrijednost parametra e-mail možete ga dobiti ovako:
const email = event.queryStringParameters.email;
Da biste vidjeli što je točno sadržano u objektu događaj, možete stvoriti najjednostavniji Yandex funkcija i okrećite ga upitima:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
O tome se detaljnije (ali manje jasno) govori u službenoj dokumentaciji
Dakle, stvorite direktorij projekta (na primjer, poštar), idite na njega, inicijalizirajte projekt, instalirajte ovisnosti:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Ovdje je potreban samo paket @sendgrid/mail. Plastična vrećica email-validator provjerava valjanost e-mail adrese (kako nisam odmah pogodio?), ali ako smo sigurni u nju (već je dugo provjeravana bez nas), ne moramo je instalirati (i, od naravno, ne moramo to provjeravati u kodu). Plastična vrećica dotenv dizajniran za čitanje zapisa iz datoteke .NS kao varijable vremena izvođenja. Ali u Yandex funkcije Moguće je postaviti ove varijable izravno u runtime okruženje. Kako? - Pokazat ću dolje. Stoga paket dotenv također ga ne možete instalirati i datoteku .NS - nemojte stvarati, au isto vrijeme kod je u datoteci index.js nemoj mijenjati. Ali ovdje smo instalirali ovaj paket, pa stvaramo datoteke index.js и .NS:
touch index.js
touch .env
U spisu index.js napišite 22 retka koda prikazanog na gornjoj snimci zaslona (samo u retku #8 promijenite svoju e-poštu) i u datoteci .NS - (bez navodnika ili interpunkcijskih znakova) navedite par - naziv ključa/vrijednost APIkoju smo nedavno dobili u konzoli SendGrid:
SENDGRID_API_KEY=vaš-vrlo-tajni-sendgrid-api-ključ
A ako želite manje posla, klonirajte repozitorij i instalirajte pakete:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
U spisu index.js, u redu #8 promijeni e-mail; stvoriti datoteku u korijenskom direktoriju .NS, te u njemu označiti naziv/vrijednost ključa API, kao što je prikazano gore.
3. Rasporedite
Više ili manje jasno i detaljno o Yandex.Cloud i kako ga tamo smjestiti Yandex funkcije opisano u mom članku
Mi stvaramo zip-arhiva (nazovimo je npr. mailer.zip), u koji uključujemo imenik čvorovi_moduli i datoteke .env, index.js - sve iz našeg kataloga projekata:
Stvaramo funkciju s imenom... ispravno - poštar, u lijevom navigacijskom izborniku ulazimo Urednik, ispunite potrebna polja i prijeđite na karticu ZIP arhiva preuzmite našu arhivu mailer.zip:
I ovdje je prethodno spomenuta opcija za preuzimanje API ključ izravno ovdje, umjesto stvaranja datoteke u projektu .NS, i nemojte instalirati paket dotenv. Ali sve smo to već napravili, pa prikazujem samo informativno. Odnosno, nema potrebe za dupliciranjem!
Sada u gornjem desnom kutu kliknite gumb Izradi verziju, i pričekajte nekoliko sekundi. Kada je sve spremno, automatski idemo na odjeljak Pregled. Tamo ćemo omogućiti opciju Javna funkcijatako da možete komunicirati s njim iz vanjskog svijeta.
Vidite plavu vezu nasuprot natpisa Veza poziva? Kliknite na nju. Otvorit će se prazan prozor preglednika... Ali čekaj - primio sam e-poruku:
Sada se možete vratiti na konzolu SendGrid, i pritisnite gumb Provjerite integraciju. Sustav će sve provjeriti kroz svoje kanale i kao rezultat bi trebao vratiti ovakav zaslon:
To je to, dečki (i cure, naravno) – sve je stvarno vrlo jednostavno i elegantno! Bit će još članaka. Ako je netko zainteresiran za čitanje ovako nečega, pretplatite se da ne propustite.
4. Donacije
Izvor: www.habr.com