Avui crearem l'anomenat. Funció Yandex (nom oficial
També sóc opositor (però sense fanatisme) dels servidors tradicionals, i partidari dels anomenats. sense servidor solucions (sense servidor), perquè no m'agrada (i no sé molt bé com) administrar servidors, i encara més, pagar pel temps que no es carreguen. Una altra cosa són les funcions. Algú els dóna servei sense jo i jo només pago les trucades. A principis d'octubre de 2019, Yandex va presentar el seu Funcions Yandex Cloud - sembla ser el primer a la Federació Russa sense servidor. I el que és especialment agradable és que per a les habilitats de l'Alice són generalment gratuïtes, de manera que han estat a la meva visió perifèrica des d'aleshores. Però comencem ja.
Imaginem aquest escenari. La vostra aplicació (per exemple, l'habilitat d'Alice
Sobre com a partir Funcions Yandex fer entrades a la base de dades Cloud Firestore ja ho hem mirat al tutorial
1. Creeu un compte a SendGrid
NotaSendGrid és només la meva elecció, que vaig fer per diversos motius, el principal és que tenen un SDK preparat per a Node.js. Podeu triar qualsevol altre servei de correu.
Posem-nos en marxa
En el següent pas seleccionem NODE.JS:
A continuació, ens presentem per al nostre API-nom de la clau (només es mostrarà a la consola a la llista de claus, i no té res a veure amb el nostre codi futur; acabo de trobar un imperible demo-api-key) i premeu el botó Crea clau:
Es generarà la clau, la copiarem i la guardarem amb la màxima confiança. I tindrem una pantalla amb un botó Verifica la integració, com a la imatge següent, però encara no hi farem clic, però anem a escriure el codi:
2. Escriptura del codi
Però el codi en si, com podeu veure, és ridículament petit: 22 línies!
En linia #8 El meu correu electrònic està codificat (i, per tant, tímidament amagat); si us plau, indiqueu el vostre. A la vida real, rebrem totes les dades (inclòs correu electrònic) de l'objecte esdeveniment. Per exemple, si el mètode PAL s'envia un objecte a la nostra funció user amb camp (propietat) correu electrònic, el valor d'aquest camp es pot obtenir així:
const { user } = event;
const email = user.email;
I si l'adreça de correu electrònic es passa a la funció mitjançant el mètode GET, per exemple: https://functions.yandexcloud.net/123abc?[email protected]
valor del paràmetre correu electrònic pots aconseguir-ho així:
const email = event.queryStringParameters.email;
Per fer una ullada a què hi ha exactament en un objecte esdeveniment, pots crear el més senzill Funció Yandex i gira-ho amb consultes:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Això es parla amb més detall (però amb menys claredat) a la documentació oficial
Per tant, creeu un directori de projecte (per exemple, correu), aneu-hi, inicialitzeu el projecte, instal·leu dependències:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Aquí només cal el paquet @sendgrid/mail. Bossa de plàstic validador de correu electrònic comprova la validesa de l'adreça de correu electrònic (com no ho vaig endevinar de seguida?), però si n'estem segurs (ja fa temps que està comprovat sense nosaltres), no l'hem d'instal·lar (i, de per descomptat, no hem de comprovar-ho al codi). Bossa de plàstic dotenv dissenyat per llegir registres d'un fitxer .NS com a variables d'execució. Però en Funcions Yandex És possible col·locar aquestes variables directament a l'entorn d'execució. Com? - Ho ensenyaré a continuació. Per tant el paquet dotenv tampoc podeu instal·lar-lo, i el fitxer .NS - no creeu, i al mateix temps el codi està al fitxer index.js no canviis. Però aquí hem instal·lat aquest paquet, així que creem fitxers index.js и .NS:
touch index.js
touch .env
A l'arxiu index.js escriviu 22 línies de codi que es mostren a la captura de pantalla anterior (només a la línia #8 canvieu el vostre correu electrònic) i al fitxer .NS - (sense cometes ni signes de puntuació) especifiqueu la parella - nom/valor de la clau APIque hem rebut recentment a la consola SendGrid:
SENDGRID_API_KEY=la teva-clau-api-sendgrid-molt-secreta
I si voleu menys feina, cloneu el repositori i instal·leu els paquets:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
A l'arxiu index.js, en linia #8 Canviar e-mail; crear un fitxer al directori arrel .NS, i en ell indiqueu el nom/valor de la clau API, com es mostra just a dalt.
3. Desplega
De manera més o menys clara i detallada sobre Yandex.Cloud i com posar-lo allà Funcions Yandex descrit al meu article
Creem cremallera-arxiu (anomenarem-lo, per exemple, mailer.zip), en què incloem el directori mòduls_node i fitxers .env, index.js - tot del nostre catàleg de projectes:
Creem una funció amb el nom... correctament - correu, al menú de navegació esquerre entrem L'editor, ompliu els camps obligatoris i canvieu a la pestanya Arxiu ZIP descarregar el nostre arxiu mailer.zip:
I aquí teniu l'opció esmentada anteriorment per descarregar Clau de l'API directament aquí, en lloc de crear un fitxer al projecte .NS, i no instal·leu el paquet dotenv. Però tot això ja ho hem fet, així que ho mostro només per informació. És a dir, no cal duplicar!
Ara, a la cantonada superior dreta, feu clic al botó Crea una versió, i espera un parell de segons. Quan tot estigui llest, automàticament anirem a la secció visió de conjunt. Allà habilitarem l'opció funció públicaperquè pugueu interactuar amb ell des del món exterior.
Veu l'enllaç blau davant de la inscripció Enllaç per trucar? Feu-hi clic. S'obrirà una finestra buida del navegador... Però espera, he rebut un correu electrònic:
Ara podeu tornar a la consola SendGrid, i premeu el botó Verifica la integració. El sistema ho comprovarà tot a través dels seus canals i, com a resultat, hauria de tornar una pantalla com aquesta:
Això és tot, nois (i noies, és clar) - tot és realment molt senzill i elegant! Hi haurà més articles. Si algú està interessat en llegir alguna cosa com aquesta, subscriviu-vos perquè no us ho perdeu.
4. Donacions
Font: www.habr.com