Å odien veidosim t.s. Yandex funkcija (oficiÄlais nosaukums
Esmu arÄ« tradicionÄlo serveru pretinieks (bet bez fanÄtisma), un piekritÄjs t.s. serverless (bez servera) risinÄjumi, jo man nepatÄ«k (un es Ä«sti nezinu, kÄ) administrÄt serverus un vÄl jo vairÄk maksÄt par laiku, kad tie netiek ielÄdÄti. Cita lieta ir funkcijas. KÄds viÅus apkalpo bez manis, un es maksÄju tikai par zvaniem. 2019. gada oktobra sÄkumÄ Yandex prezentÄja savu Yandex mÄkoÅa funkcijas - Ŕķiet pirmais Krievijas FederÄcijÄ serverless. Un Ä«paÅ”i jauki ir tas, ka Alises prasmÄm tÄs parasti ir bez maksas, tÄpÄc kopÅ” tÄ laika tÄs ir manÄ perifÄriskajÄ redzÄÅ”anÄ. Bet sÄksim jau.
IedomÄsimies Å”o scenÄriju. JÅ«su pieteikums (piemÄram, Alises prasme
Par to, kÄ no Yandex funkcijas veikt ierakstus datu bÄzÄ Cloud Firestore mÄs to jau apskatÄ«jÄm apmÄcÄ«bÄ
1. Izveidojiet kontu SendGrid
PiezÄ«meSendGrid ir tikai mana izvÄle, ko izdarÄ«ju vairÄku iemeslu dÄļ, no kuriem galvenais ir tas, ka viÅiem ir gatavs Node.js SDK. Varat izvÄlÄties jebkuru citu pasta pakalpojumu.
Ejam tÄlÄk
NÄkamajÄ solÄ« mÄs izvÄlamies Node.js:
TÄlÄk mÄs nÄkam klajÄ ar mÅ«su API-atslÄgas nosaukums (tiks parÄdÄ«ts tikai konsolÄ atslÄgu sarakstÄ, un tam nav nekÄda sakara ar mÅ«su nÄkotnes kodu; es tikko izdomÄju nezÅ«doÅ”u demo-api-key) un nospiediet pogu Izveidot atslÄgu:
AtslÄga tiks Ä£enerÄta, mÄs to kopÄsim un saglabÄsim visdziļÄkajÄ pÄrliecÄ«bÄ. Un mums bÅ«s ekrÄns ar pogu PÄrbaudiet integrÄciju, kÄ attÄlÄ zemÄk, bet mÄs vÄl nenoklikŔķinÄsim uz tÄ, bet pÄriesim pie koda rakstÄ«Å”anas:
2. Koda rakstīŔana
Bet pats kods, kÄ redzat, ir smieklÄ«gi mazs - 22 rindiÅas!
RindÄ #8 Mans e-pasts ir kodÄts (un tÄpÄc kautrÄ«gi slÄpts) ā lÅ«dzu, norÄdiet savu. ReÄlajÄ dzÄ«vÄ mÄs saÅemsim visus datus (ieskaitot e-pasts) no objekta notikums. PiemÄram, ja metode POST objekts tiek nosÅ«tÄ«ts uz mÅ«su funkciju lietotÄjs ar lauku (Ä«paÅ”umu) e-pasts, Ŕī lauka vÄrtÄ«bu var iegÅ«t Å”Ädi:
const { user } = event;
const email = user.email;
Un ja e-pasta adrese funkcijai tiek nodota, izmantojot metodi GET, piemÄram: https://functions.yandexcloud.net/123abc?[email protected]
parametra vÄrtÄ«ba e-pasts jÅ«s to varat iegÅ«t Å”Ädi:
const email = event.queryStringParameters.email;
Lai apskatÄ«tu, kas tieÅ”i ir ietverts objektÄ notikums, jÅ«s varat izveidot visvienkÄrÅ”Äko Yandex funkcija un pagrieziet to ar vaicÄjumiem:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Tas ir sÄ«kÄk (bet mazÄk skaidri) apspriests oficiÄlajÄ dokumentÄcijÄ
TÄtad, izveidojiet projekta direktoriju (piemÄram, pastnieks), dodieties uz to, inicializÄjiet projektu, instalÄjiet atkarÄ«bas:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Å eit ir nepiecieÅ”ama tikai pakete @sendgrid/mail. Plastmasas maisiÅÅ” e-pasta apstiprinÄtÄjs pÄrbauda e-pasta adreses derÄ«gumu (kÄ es uzreiz neuzminÄju?), bet, ja esam par to pÄrliecinÄti (tÄ jau ilgu laiku ir pÄrbaudÄ«ta bez mums), mums tÄ nav jÄinstalÄ (un protams, mums tas nav jÄpÄrbauda kodÄ). Plastmasas maisiÅÅ” dotenv paredzÄts ierakstu nolasÄ«Å”anai no faila .env kÄ izpildlaika mainÄ«gie. Bet iekÅ”Ä Yandex funkcijas Å os mainÄ«gos ir iespÄjams ievietot tieÅ”i izpildlaika vidÄ. KÄ? - Es to parÄdÄ«Å”u zemÄk. TÄpÄc iepakojums dotenv jÅ«s varat arÄ« neinstalÄt to un failu .env - neveidojiet, un tajÄ paÅ”Ä laikÄ kods ir failÄ index.js nemaina. Bet Å”eit mÄs esam instalÄjuÅ”i Å”o pakotni, tÄpÄc mÄs veidojam failus index.js Šø .env:
touch index.js
touch .env
FailÄ index.js ierakstiet 22 koda rindiÅas, kas parÄdÄ«tas ekrÄnuzÅÄmumÄ (tikai rindÄ #8 mainiet savu e-pastu) un failÄ .env - (bez pÄdiÅÄm un pieturzÄ«mÄm) norÄdiet pÄri - atslÄgas nosaukums/vÄrtÄ«ba APIko nesen saÅÄmÄm konsolÄ SendGrid:
SENDGRID_API_KEY=jūsu-ļoti-secret-sendgrid-api-key
Un, ja vÄlaties mazÄk darba, klonÄjiet repozitoriju un instalÄjiet pakotnes:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
FailÄ index.js, rindÄ #8 MainÄ«t e-pastu; izveidojiet failu saknes direktorijÄ .env, un tajÄ norÄdiet atslÄgas nosaukumu/vÄrtÄ«bu API, kÄ parÄdÄ«ts tieÅ”i iepriekÅ”.
3. Izvietot
VairÄk vai mazÄk skaidri un detalizÄti par Yandex.Cloud un kÄ to tur novietot Yandex funkcijas aprakstÄ«ts manÄ rakstÄ
Izveidot rÄvÄjslÄdzÄjs-arhÄ«vs (sauksim to, piemÄram, mailer.zip), kurÄ mÄs iekļaujam direktoriju mezgla_moduļi un faili .env, index.js - viss no mÅ«su projektu kataloga:
MÄs izveidojam funkciju ar nosaukumu... pareizi - pastnieks, mÄs ieejam kreisajÄ navigÄcijas izvÄlnÄ Redaktors, aizpildiet obligÄtos laukus un pÄrslÄdzieties uz cilni ZIP arhÄ«vs lejupielÄdÄjiet mÅ«su arhÄ«vu mailer.zip:
Un Å”eit ir iepriekÅ” minÄtÄ lejupielÄdes iespÄja API atslÄga tieÅ”i Å”eit, nevis izveidojot failu projektÄ .env, un neinstalÄjiet pakotni dotenv. Bet mÄs to visu jau esam izdarÄ«juÅ”i, tÄpÄc es to parÄdu tikai informÄcijai. Tas ir, nav nepiecieÅ”ams dublÄt!
Tagad augÅ”ÄjÄ labajÄ stÅ«rÄ« noklikŔķiniet uz pogas Izveidot versiju, un pagaidiet pÄris sekundes. Kad viss bÅ«s gatavs, automÄtiski dosimies uz sadaļu PÄrskatiet. Tur mÄs iespÄjosim opciju sabiedriskÄ funkcijalai jÅ«s varÄtu mijiedarboties ar to no Ärpasaules.
JÅ«s redzat zilo saiti pretÄ« uzrakstam Saite uz zvanu? NoklikŔķiniet uz tÄ. AtvÄrsies tukÅ”s pÄrlÅ«kprogrammas logs... Bet pagaidiet - es saÅÄmu e-pastu:
Tagad jÅ«s varat atgriezties konsolÄ SendGrid, un nospiediet pogu PÄrbaudiet integrÄciju. SistÄma visu pÄrbaudÄ«s caur saviem kanÄliem, un rezultÄtÄ tai vajadzÄtu atgriezt Å”Ädu ekrÄnu:
Tas tÄ, puiÅ”i (un meitenes, protams) - viss tieÅ”Äm ir ļoti vienkÄrÅ”i un eleganti! BÅ«s vÄl raksti. Ja kÄdam ir interese lasÄ«t kaut ko lÄ«dzÄ«gu, abonÄjiet, lai nepalaistu garÄm.
4. Ziedojumi
Avots: www.habr.com