Ngayon ay lilikha tayo ng tinatawag na. Pag-andar ng Yandex (opisyal na pangalan
Isa rin akong kalaban (ngunit walang panatismo) ng mga tradisyunal na server, at isang tagasuporta ng tinatawag na. walang server (walang server) na mga solusyon, dahil hindi ko gusto (at hindi ko talaga alam kung paano) mangasiwa ng mga server, at higit pa, magbayad para sa oras kapag hindi sila na-load. Ang isa pang bagay ay mga pag-andar. May nagseserbisyo sa kanila nang wala ako, at nagbabayad lang ako para sa mga tawag. Sa simula ng Oktubre 2019, ipinakita ng Yandex ang nito Yandex Cloud Functions - tila ang una sa Russian Federation walang server. At ang mas maganda ay para sa mga kasanayan ni Alice sila ay karaniwang libre, kaya sila ay nasa aking peripheral vision mula noon. Ngunit magsimula na tayo.
Isipin natin ang senaryo na ito. Ang iyong aplikasyon (halimbawa, ang kakayahan ni Alice
Tungkol sa kung paano mula sa Mga function ng Yandex gumawa ng mga entry sa database Cloud Firestore tiningnan na namin ito sa tutorial
1. Gumawa ng account sa SendGrid
NotaAng SendGrid ay pinili ko lang, na ginawa ko para sa ilang kadahilanan, ang pangunahing isa ay mayroon silang isang handa na SDK para sa Node.js. Maaari kang pumili ng anumang iba pang serbisyo sa pagkoreo.
Mag-move on na tayo
Sa susunod na hakbang pipiliin namin node.js:
Susunod na makabuo kami para sa aming API-key name (ipapakita lamang sa console sa listahan ng mga key, at walang kinalaman sa aming code sa hinaharap; Nakaisip ako ng isang hindi masisira demo-api-key) at pindutin ang pindutan Lumikha ng Key:
Ang susi ay mabubuo, kokopyahin namin ito at itago ito sa pinakamalalim na kumpiyansa. At magkakaroon kami ng isang screen na may isang pindutan I-verify ang Pagsasama, tulad ng nasa larawan sa ibaba, ngunit hindi pa namin ito iki-click, ngunit magpatuloy tayo sa pagsulat ng code:
2. Pagsulat ng code
Ngunit ang code mismo, tulad ng nakikita mo, ay katawa-tawa na maliit - 22 linya!
Nasa linya #8 Ang aking email ay hardcoded (at samakatuwid ay nahihiyang nakatago) - mangyaring ipahiwatig ang sa iyo. Sa totoong buhay, matatanggap namin ang lahat ng data (kabilang ang email) mula sa bagay pangyayari. Halimbawa, kung ang pamamaraan POST isang bagay ay ipinadala sa aming function gumagamit may field (property) email, ang halaga ng field na ito ay maaaring makuha tulad nito:
const { user } = event;
const email = user.email;
At kung ang email address ay naipasa sa function gamit ang pamamaraan GET, halimbawa: https://functions.yandexcloud.net/123abc?[email protected]
halaga ng parameter email maaari mong makuha ito tulad nito:
const email = event.queryStringParameters.email;
Upang tingnan kung ano ang eksaktong nilalaman ng isang bagay pangyayari, maaari kang lumikha ng pinakasimpleng Pag-andar ng Yandex at i-twist ito ng mga query:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Ito ay tinalakay nang mas detalyado (ngunit hindi gaanong malinaw) sa opisyal na dokumentasyon
Kaya, lumikha ng isang direktoryo ng proyekto (halimbawa, mga mailers), pumunta dito, simulan ang proyekto, i-install ang mga dependency:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Dito lang kailangan ang package @sendgrid/mail. Plastik na bag email-validator sinusuri ang email address para sa validity (paano ko hindi nahulaan kaagad?), ngunit kung sigurado tayo dito (matagal na itong nasuri nang wala tayo), hindi natin kailangang i-install ito (at, ng siyempre, hindi namin kailangang suriin ito sa code). Plastik na bag dotenv idinisenyo upang basahin ang mga talaan mula sa isang file .env bilang mga variable ng runtime. Ngunit sa Mga function ng Yandex Posibleng ilagay ang mga variable na ito nang direkta sa runtime na kapaligiran. Paano? - Ipapakita ko ito sa ibaba. Samakatuwid ang pakete dotenv hindi mo rin mai-install ito, at ang file .env - huwag lumikha, at sa parehong oras ang code ay nasa file index.js huwag magbago. Ngunit dito namin na-install ang package na ito, kaya gumawa kami ng mga file index.js ΠΈ .env:
touch index.js
touch .env
Nasa file index.js sumulat ng 22 linya ng code na ipinapakita sa screenshot sa itaas (sa linya lamang #8 baguhin ang iyong email), at sa file .env - (nang walang anumang mga panipi o bantas) tukuyin ang pares - pangalan/halaga ng key APIna natanggap namin kamakailan sa console SendGrid:
SENDGRID_API_KEY=your-very-secret-sendgrid-api-key
At kung gusto mo ng mas kaunting trabaho, i-clone ang repositoryo at i-install ang mga pakete:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Nasa file index.js, nasa linya #8 magpalit ng e-mail; lumikha ng isang file sa root directory .env, at sa loob nito ay nagpapahiwatig ng pangalan/halaga ng susi API, gaya ng ipinapakita sa itaas.
3. I-deploy
Higit pa o hindi gaanong malinaw at detalyado tungkol sa Yandex.Cloud at kung paano ilagay ito doon Mga function ng Yandex inilarawan sa aking artikulo
Lumikha sigla-archive (tawagin natin ito, halimbawa, mailer.zip), kung saan kasama namin ang direktoryo node_modules at mga file .env, index.js - lahat mula sa aming katalogo ng proyekto:
Lumilikha kami ng isang function na may pangalan... tama - mga mailers, sa kaliwang menu ng nabigasyon kami ay pumapasok Ang editor, punan ang mga kinakailangang field, at lumipat sa tab ZIP archive i-download ang aming archive mailer.zip:
At narito ang naunang nabanggit na opsyon upang i-download API key direkta dito, sa halip na lumikha ng isang file sa proyekto .env, at huwag i-install ang package dotenv. Ngunit nagawa na natin ang lahat ng ito, kaya ipinapakita ko ito para lamang sa impormasyon. Ibig sabihin, hindi na kailangang duplicate!
Ngayon sa kanang sulok sa itaas i-click ang pindutan Lumikha ng bersyon, at maghintay ng ilang segundo. Kapag handa na ang lahat, awtomatiko kaming pupunta sa seksyon Repasuhin. Doon namin paganahin ang opsyon Pampublikong tungkulinupang maaari kang makipag-ugnayan dito mula sa labas ng mundo.
Nakikita mo ang asul na link sa tapat ng inskripsiyon Link ng tawag? I-click ito. Magbubukas ang isang walang laman na window ng browser... Ngunit teka - Nakatanggap ako ng email:
Ngayon ay maaari kang bumalik sa console SendGrid, at pindutin ang button I-verify ang Pagsasama. Susuriin ng system ang lahat sa pamamagitan ng mga channel nito, at bilang resulta, dapat itong magbalik ng screen na tulad nito:
Iyon lang, mga lalaki (at mga babae, siyempre) - ang lahat ay talagang napaka-simple at eleganteng! Magkakaroon ng higit pang mga artikulo. Kung may interesadong magbasa ng ganito, mag-subscribe para hindi ka makaligtaan.
4. Mga donasyon
Pinagmulan: www.habr.com