Šiandien kursime vadinamąjį. Yandex funkcija (oficialus pavadinimas
Taip pat esu tradicinių serverių priešininkas (bet be fanatizmo), taip pat vadinamųjų šalininkas. be serverio (be serverio) sprendimus, nes nemėgstu (ir nelabai moku) administruoti serverius, o tuo labiau mokėti už laiką, kai jie nėra įkeliami. Kitas dalykas – funkcijos. Kažkas juos aptarnauja be manęs, o aš moku tik už skambučius. 2019 m. spalio pradžioje „Yandex“ pristatė savo „Yandex“ debesies funkcijos - atrodo, pirmasis Rusijos Federacijoje be serverio. Ir ypač malonu, kad Alisos įgūdžiams jie paprastai yra nemokami, todėl nuo to laiko jie buvo mano periferiniame regėjime. Bet jau pradėkime.
Įsivaizduokime tokį scenarijų. Jūsų paraiška (pavyzdžiui, Alisos įgūdžiai
Apie tai, kaip iš Yandex funkcijos padaryti įrašus duomenų bazėje Debesų užkarda mes jau pažvelgėme į tai mokymo programoje
1. Sukurkite paskyrą SendGrid
Atkreipti dėmesį„SendGrid“ yra tik mano pasirinkimas, kurį padariau dėl kelių priežasčių, kurių pagrindinė yra ta, kad jie turi paruoštą Node.js SDK. Galite pasirinkti bet kurią kitą pašto paslaugą.
Eikime toliau
Kitame žingsnyje pasirenkame Node.js:
Toliau mes sugalvojame savo API-rakto pavadinimas (bus rodomas tik konsolėje raktų sąraše ir neturi nieko bendra su mūsų būsimu kodu; aš sugalvojau neišnykstantį demo-api-key) ir paspauskite mygtuką Sukurti raktą:
Raktas bus sugeneruotas, mes jį nukopijuosime ir saugosime su didžiausiu pasitikėjimu. Ir turėsime ekraną su mygtuku Patikrinkite integraciją, kaip žemiau esančiame paveikslėlyje, bet dar nespustelėsime, o pereikime prie kodo rašymo:
2. Kodo rašymas
Tačiau pats kodas, kaip matote, yra juokingai mažas - 22 eilutės!
Eilėje #8 Mano el. pašto adresas yra užkoduotas (todėl nedrąsiai paslėptas) – nurodykite savo. Realiame gyvenime gausime visus duomenis (įskaitant email) nuo objekto renginys. Pavyzdžiui, jei metodas POST objektas siunčiamas į mūsų funkciją vartotojas su lauku (nuosavybe) email, šio lauko reikšmę galima gauti taip:
const { user } = event;
const email = user.email;
Ir jei el. pašto adresas perduodamas funkcijai naudojant metodą GET, pavyzdžiui: https://functions.yandexcloud.net/123abc?[email protected]
parametro vertė email galite gauti taip:
const email = event.queryStringParameters.email;
Norėdami pažvelgti į tai, kas tiksliai yra objekte renginys, galite sukurti paprasčiausią Yandex funkcija ir pasukite jį su užklausomis:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Tai išsamiau (bet ne taip aiškiai) aptariama oficialiuose dokumentuose
Taigi sukurkite projekto katalogą (pvz. pašto siuntėjas), eikite į jį, inicijuokite projektą, įdiekite priklausomybes:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Čia reikalingas tik paketas @sendgrid/mail. Plastikinis maišelis pašto patvirtinimo priemonė patikrina el. pašto adreso galiojimą (kaip iš karto neatspėjau?), bet jei esame tuo tikri (jis jau seniai tikrintas be mūsų), mums jo diegti nereikia (ir Žinoma, mes neturime to tikrinti kode). Plastikinis maišelis dotenv skirta skaityti įrašus iš failo .NS kaip vykdymo laiko kintamieji. Bet į Yandex funkcijos Šiuos kintamuosius galima įdėti tiesiai į vykdymo aplinką. Kaip? - Parodysiu žemiau. Todėl pakuotė dotenv taip pat galite neįdiegti ir failo .NS - nekurti, o tuo pačiu kodas yra faile rodyklė.js nekeisti. Bet čia mes įdiegėme šį paketą, todėl kuriame failus rodyklė.js и .NS:
touch index.js
touch .env
Byloje rodyklė.js parašykite 22 kodo eilutes, parodytas aukščiau esančioje ekrano kopijoje (tik eilutėje #8 pakeisti el. pašto adresą) ir faile .NS - (be jokių kabučių ar skyrybos ženklų) nurodykite porą - rakto pavadinimas/reikšmė APIkurį neseniai gavome pulte SendGrid:
SENDGRID_API_KEY=jūsų-labai-slaptas-sendgrid-api-key
Ir jei norite mažiau darbo, klonuokite saugyklą ir įdiekite paketus:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Byloje rodyklė.js, eilėje #8 pakeisti el. paštą; sukurti failą šakniniame kataloge .NS, ir jame nurodykite rakto pavadinimą / reikšmę API, kaip parodyta aukščiau.
3. Dislokuoti
Daugiau ar mažiau aiškiai ir išsamiai apie Yandex.Cloud ir kaip jį ten patalpinti Yandex funkcijos aprašyta mano straipsnyje
Sukurti užtrauktukas-archyvas (pavadinkime jį, pavyzdžiui, paštas.zip), į kurį įtraukiame katalogą mazgo_moduliai ir failus .env, index.js - viskas iš mūsų projektų katalogo:
Sukuriame funkciją pavadinimu... teisingai - pašto siuntėjas, kairiajame naršymo meniu įeiname Redaktorius, užpildykite reikiamus laukus ir perjunkite į skirtuką ZIP archyvas atsisiųskite mūsų archyvą paštas.zip:
Ir čia yra anksčiau minėta galimybė atsisiųsti API raktas tiesiogiai čia, o ne kurti failą projekte .NS, ir neįdiekite paketo dotenv. Bet mes jau visa tai padarėme, todėl parodau tai tik dėl informacijos. Tai yra, nereikia daugintis!
Dabar viršutiniame dešiniajame kampe spustelėkite mygtuką Sukurti versiją, ir palaukite porą sekundžių. Kai viskas bus paruošta, mes automatiškai eisime į skyrių Peržiūrėti. Ten įjungsime parinktį viešoji funkcijakad galėtumėte su ja bendrauti iš išorinio pasaulio.
Matote mėlyną nuorodą priešais užrašą Nuoroda į skambutį? Spustelėkite jį. Atsidarys tuščias naršyklės langas... Bet palaukite – gavau el. laišką:
Dabar galite grįžti į konsolę SendGridir paspauskite mygtuką Patikrinkite integraciją. Sistema viską patikrins savo kanalais ir dėl to turėtų grąžinti tokį ekraną:
Tai štai, vaikinai (ir, žinoma, merginos) – viskas tikrai labai paprasta ir elegantiška! Bus daugiau straipsnių. Jei kam nors įdomu paskaityti ką nors panašaus, užsiprenumeruokite, kad nepraleistumėte.
4. Aukos
Šaltinis: www.habr.com