Vandag sal ons die sg. Yandex funksie (amptelike naam
Ek is ook 'n teenstander (maar sonder fanatisme) van tradisionele bedieners, en 'n voorstander van die sg. serverless (bedienerlose) oplossings, want ek hou nie van (en ek weet nie regtig hoe om) bedieners te administreer nie, en selfs meer nog, betaal vir die tyd wanneer hulle nie gelaai is nie. Nog iets is funksies. Iemand bedien hulle sonder my, en ek betaal net vir oproepe. Aan die begin van Oktober 2019 het Yandex sy Yandex Wolk Funksies - blyk die eerste in die Russiese Federasie te wees serverless. En wat veral lekker is, is dat vir Alice se vaardighede hulle oor die algemeen gratis is, so hulle is sedertdien in my perifere visie. Maar kom ons begin reeds.
Kom ons stel ons hierdie scenario voor. Jou toepassing (byvoorbeeld, Alice se vaardigheid
Oor hoe van Yandex funksies maak inskrywings in die databasis Wolk Firestore ons het reeds daarna in die tutoriaal gekyk
1. Skep 'n rekening in SendGrid
Let daaropSendGrid is net my keuse, wat ek om verskeie redes gemaak het, die belangrikste is dat hulle 'n klaargemaakte SDK vir Node.js het. Jy kan enige ander posdiens kies.
Kom ons gaan aan
In die volgende stap kies ons Node.js:
Volgende kom ons met vir ons API-sleutelnaam (sal slegs in die konsole in die lys sleutels vertoon word, en het niks met ons toekomstige kode te doen nie; ek het pas met 'n onverganklike vorendag gekom demo-api-sleutel) en druk die knoppie Skep sleutel:
Die sleutel sal gegenereer word, ons sal dit kopieer en dit in die diepste vertroue hou. En ons sal 'n skerm met 'n knoppie hê Verifieer integrasie, soos in die prentjie hieronder, maar ons sal nog nie daarop klik nie, maar kom ons gaan voort om die kode te skryf:
2. Skryf kode
Maar die kode self, soos jy kan sien, is belaglik klein - 22 reëls!
In lyn #8 My e-pos is hardkodeer (en dus skaam weggesteek) - dui asseblief joune aan. In die werklike lewe sal ons al die data ontvang (insluitend e-pos) vanaf voorwerp gebeurtenis. Byvoorbeeld, as die metode POS 'n voorwerp word na ons funksie gestuur gebruiker met veld (eiendom) e-pos, kan die waarde van hierdie veld soos volg verkry word:
const { user } = event;
const email = user.email;
En as die e-posadres na die funksie oorgedra word met behulp van die metode KRY, byvoorbeeld: https://functions.yandexcloud.net/123abc?[email protected]
parameter waarde e-pos jy kan dit so kry:
const email = event.queryStringParameters.email;
Om te kyk na wat presies in 'n voorwerp vervat is gebeurtenis, kan jy die eenvoudigste skep Yandex funksie en draai dit met navrae:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Dit word in meer besonderhede (maar minder duidelik) in die amptelike dokumentasie bespreek
Skep dus 'n projekgids (byvoorbeeld, posseerder), gaan daarna, inisialiseer die projek, installeer afhanklikhede:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Hier word slegs die pakket benodig @sendgrid/pos. Plastiese sak e-pos-valideerder kontroleer die e-posadres vir geldigheid (hoe het ek nie dadelik geraai nie?), maar as ons seker is daarvan (dit is al lankal sonder ons nagegaan), hoef ons dit nie te installeer nie (en, van ons hoef dit natuurlik nie in die kode na te gaan nie). Plastiese sak dotenv ontwerp om rekords van 'n lêer te lees .a V as looptydveranderlikes. Maar in Yandex funksies Dit is moontlik om hierdie veranderlikes direk in die runtime-omgewing te plaas. Hoe? - Ek sal dit hieronder wys. Daarom die pakket dotenv jy kan dit ook nie installeer nie, en die lêer .a V - moenie skep nie, en terselfdertyd is die kode in die lêer index.js Moenie verander nie. Maar hier het ons hierdie pakket geïnstalleer, so ons skep lêers index.js и .a V:
touch index.js
touch .env
In lêer index.js skryf 22 reëls kode wat in die skermkiekie hierbo gewys word (slegs in die reël #8 verander jou e-pos), en in die lêer .a V - (sonder enige aanhalingstekens of leestekens) spesifiseer die paar - sleutelnaam/waarde APIwat ons onlangs in die konsole ontvang het SendGrid:
SENDGRID_API_KEY=jou-baie-geheime-sendgrid-api-sleutel
En as jy minder werk wil hê, kloon die bewaarplek en installeer die pakkette:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
In lêer index.js, in lyn #8 Verander e-pos; skep 'n lêer in die wortelgids .a V, en dui daarin die naam/waarde van die sleutel aan API, soos net hierbo getoon.
3. Ontplooi
Min of meer duidelik en in detail oor Yandex.Wolk en hoe om dit daar te plaas Yandex funksies beskryf in my artikel
Ons skep ritssluiter-argief (kom ons noem dit, byvoorbeeld, mailer.zip), waarin ons die gids insluit node_modules en lêers .env, indeks.js - alles uit ons projekkatalogus:
Ons skep 'n funksie met die naam... korrek - posseerder, in die linker navigasie kieslys gaan ons in Die redakteur, vul die vereiste velde in en skakel oor na die oortjie zip argief laai ons argief af mailer.zip:
En hier is die voorheen genoemde opsie om af te laai API sleutel direk hierheen, eerder as om 'n lêer in die projek te skep .a V, en moenie die pakket installeer nie dotenv. Maar ons het dit al gedoen, so ek wys dit net vir inligting. Dit wil sê, dit is nie nodig om te dupliseer nie!
Klik nou op die knoppie in die regter boonste hoek Skep weergawe, en wag 'n paar sekondes. Wanneer alles gereed is, sal ons outomaties na die afdeling gaan Hersien. Daar sal ons die opsie aktiveer openbare funksiesodat jy van die buitewêreld daarmee kan omgaan.
Jy sien die blou skakel oorkant die inskripsie Skakel na oproep? Klik daarop. 'n Leë blaaiervenster sal oopmaak... Maar wag - ek het 'n e-pos ontvang:
Nou kan jy terugkeer na die konsole SendGrid, en druk die knoppie Verifieer integrasie. Die stelsel sal alles deur sy kanale nagaan, en gevolglik behoort dit 'n skerm soos hierdie terug te gee:
Dit is dit, ouens (en meisies, natuurlik) - alles is regtig baie eenvoudig en elegant! Daar sal meer artikels wees. As iemand belangstel om so iets te lees, teken in sodat jy nie uitmis nie.
4. Skenkings
Bron: will.com