Danas ćemo kreirati tzv. Yandex funkcija (službeni naziv
I ja sam protivnik (ali bez fanatizma) tradicionalnih servera, i pristalica tzv. bez servera (bez serverskih) rješenja, jer ne volim (a baš i ne znam kako da) administriram servere, a još više plaćam vrijeme kada nisu učitani. Druga stvar su funkcije. Neko ih servisira bez mene, a ja plaćam samo pozive. Početkom oktobra 2019. Yandex je predstavio svoj Yandex Cloud funkcije - izgleda prvi u Ruskoj Federaciji bez servera. A ono što je posebno lijepo je da su za Alisine vještine uglavnom besplatne, pa su od tada u mom perifernom vidu. Ali hajde da počnemo.
Zamislimo ovaj scenario. Vaša aplikacija (na primjer, Alisina vještina
O tome kako od Yandex funkcije unose u bazu podataka Cloud Firestore već smo to pogledali u tutorijalu
1. Kreirajte nalog u SendGrid
primjedbaSendGrid je samo moj izbor, koji sam napravio iz nekoliko razloga, a glavni je taj što imaju gotov SDK za Node.js. Možete odabrati bilo koju drugu uslugu slanja pošte.
Idemo dalje
U sljedećem koraku biramo node.js:
Sljedeće ćemo smisliti za naše API-naziv ključa (prikazuje se samo u konzoli na listi ključeva i nema nikakve veze sa našim budućim kodom; smislio sam nepropadljiv demo-api-ključ) i pritisnite dugme Kreiraj ključ:
Ključ će biti generiran, mi ćemo ga kopirati i čuvati u najdubljem povjerenju. I imaćemo ekran sa dugmetom Potvrdite integraciju, kao na slici ispod, ali nećemo još kliknuti, nego prijeđimo na pisanje koda:
2. Pisanje koda
Ali sam kod, kao što vidite, je smiješno mali - 22 reda!
U redu #8 Moja e-pošta je tvrdo kodirana (i stoga stidljivo skrivena) - navedite svoju. U stvarnom životu ćemo primiti sve podatke (uključujući E-mail) od objekta događaj. Na primjer, ako je metoda POST objekt se šalje našoj funkciji korisnik sa poljem (imovinom) E-mail, vrijednost ovog polja se može dobiti ovako:
const { user } = event;
const email = user.email;
I ako se email adresa prosljeđuje funkciji pomoću metode GET, na primjer: https://functions.yandexcloud.net/123abc?[email protected]
vrijednost parametra E-mail možete dobiti ovako:
const email = event.queryStringParameters.email;
Da pogledamo šta je tačno sadržano u objektu događaj, možete kreirati najjednostavniji Yandex funkcija i iskrivi 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, kreirajte direktorij projekta (na primjer, poštar), idite na njega, inicijalizirajte projekat, instalirajte zavisnosti:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Ovdje je potreban samo paket @sendgrid/mail. Paket email-validator provjerava validnost adrese e-pošte (kako nisam odmah pogodio?), ali ako smo sigurni u nju (već je provjeravana bez nas), ne moramo je instalirati (i, od naravno, ne moramo to provjeravati u kodu). Plasticna kesa dotenv dizajniran za čitanje zapisa iz datoteke .NS kao runtime varijable. Ali unutra Yandex funkcije Moguće je postaviti ove varijable direktno u runtime okruženje. Kako? - Pokazaću to ispod. Stoga paket dotenv ne možete ga instalirati i datoteku .NS - ne kreirajte, a istovremeno je kod u datoteci index.js ne mijenjaj. Ali ovdje smo instalirali ovaj paket, pa kreiramo fajlove index.js и .NS:
touch index.js
touch .env
U fajlu index.js napišite 22 reda koda prikazanog na slici iznad (samo u liniji #8 promijenite svoju e-poštu) i u datoteci .NS - (bez navodnika ili interpunkcije) navedite par - ključ ime/vrijednost APIkoju smo nedavno dobili u konzoli SendGrid:
SENDGRID_API_KEY=vaš-veoma-tajni-sendgrid-api-ključ
A ako želite manje posla, klonirajte spremište i instalirajte pakete:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
U fajlu index.js, U redu #8 promijeni e-mail; kreirajte datoteku u korijenskom direktoriju .NS, a u njemu naznačite ime/vrijednost ključa API, kao što je prikazano malo iznad.
3. Deploy
Više-manje jasno i detaljno o Yandex.Cloud i kako ga tamo postaviti Yandex funkcije opisano u mom članku
Mi stvaramo zip-arhiva (nazovimo je npr. mailer.zip), u koji uključujemo direktorij node_modules i fajlove .env, index.js - sve iz našeg kataloga projekata:
Kreiramo funkciju sa imenom... ispravno - poštar, u lijevom navigacijskom meniju ulazimo Urednik, popunite potrebna polja i pređite na karticu ZIP arhiva preuzmite našu arhivu mailer.zip:
A evo i prethodno spomenute opcije za preuzimanje API ključ direktno ovdje, umjesto da kreirate datoteku u projektu .NS, i nemojte instalirati paket dotenv. Ali sve smo to već uradili, pa vam pokazujem samo za informaciju. Odnosno, nema potrebe za dupliranjem!
Sada u gornjem desnom uglu kliknite na dugme Kreiraj verziju, i sačekajte nekoliko sekundi. Kada sve bude spremno, automatski prelazimo na sekciju pregled. Tamo ćemo omogućiti opciju javna funkcijatako da možete komunicirati s njim iz vanjskog svijeta.
Nasuprot natpisa vidite plavu vezu Link za poziv? Kliknite na njega. Otvoriće se prazan prozor pretraživača... Ali sačekajte - primio sam e-poštu:
Sada se možete vratiti na konzolu SendGrid, i pritisnite dugme Potvrdite integraciju. Sistem će sve provjeriti kroz svoje kanale i kao rezultat bi trebao vratiti ekran ovako:
To je to, momci (i devojke, naravno) - sve je zaista vrlo jednostavno i elegantno! Biće još članaka. Ako neko želi da pročita nešto poput ovoga, pretplatite se da ne propustite.
4. Donacije
izvor: www.habr.com