Hoxe imos crear o chamado. función Yandex (nome oficial
Tamén son opositor (pero sen fanatismo) dos servidores tradicionais, e partidario dos chamados. sen servidor solucións (sen servidor), porque non me gusta (e non sei moi ben como) administrar servidores, e máis aínda, pagar polo tempo que non se cargan. Outra cousa son as funcións. Alguén as presta sen min, e eu só pago polas chamadas. A principios de outubro de 2019, Yandex presentou o seu Funcións de Yandex Cloud - parece ser o primeiro da Federación Rusa sen servidor. E o que é especialmente agradable é que as habilidades de Alice son xeralmente gratuítas, polo que están na miña visión periférica desde entón. Pero empecemos xa.
Imaxinemos este escenario. A túa aplicación (por exemplo, a habilidade de Alice
Sobre como dende Funcións de Yandex facer entradas na base de datos Cloud Firestore xa o miramos no tutorial
1. Crea unha conta en SendGrid
NotaSendGrid é só a miña elección, que fixen por varias razóns, a principal é que teñen un SDK preparado para Node.js. Podes escoller calquera outro servizo de correo.
Sigamos adiante
No seguinte paso seleccionamos Nodo.js:
A continuación vemos para o noso API-key name (só aparecerá na consola na lista de claves, e non ten nada que ver co noso futuro código; ocorréuseme un imperecedoiro clave demo-api) e prema o botón Crear clave:
Xerarase a clave, copiarémola e gardarémola na máis profunda confianza. E teremos unha pantalla cun botón Verificar a integración, como na imaxe de abaixo, pero aínda non faremos clic nel, pero imos escribir o código:
2. Código de escritura
Pero o código en si, como podes ver, é ridículamente pequeno: 22 liñas!
En liña #8 O meu correo electrónico está codificado (e polo tanto oculto tímidamente) - indica o teu. Na vida real, recibiremos todos os datos (incluíndo correo electrónico) do obxecto evento. Por exemplo, se o método POST envíase un obxecto á nosa función usuario con campo (propiedade) correo electrónico, o valor deste campo pódese obter así:
const { user } = event;
const email = user.email;
E se o enderezo de correo electrónico se pasa á función mediante o método GET, por exemplo: https://functions.yandexcloud.net/123abc?[email protected]
valor do parámetro correo electrónico podes obtelo así:
const email = event.queryStringParameters.email;
Para botar unha ollada ao que contén exactamente un obxecto evento, podes crear o máis sinxelo función Yandex e torceo con consultas:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Isto é discutido con máis detalle (pero con menos claridade) na documentación oficial
Entón, cree un directorio do proxecto (por exemplo, correo), vai a el, inicializa o proxecto, instala dependencias:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Aquí só se require o paquete @sendgrid/mail. Bolsa de plástico validador de correo electrónico comproba a validez do enderezo de correo electrónico (como non o adivinei de inmediato?), pero se estamos seguros diso (xa está comprobado durante moito tempo sen nós), non temos que instalalo (e, de por suposto, non temos que verificalo no código). Bolsa de plástico dotenv deseñado para ler rexistros dun ficheiro .env como variables de tempo de execución. Pero en Funcións de Yandex É posible colocar estas variables directamente no ambiente de execución. Como? - Mostrareino a continuación. Polo tanto o paquete dotenv tampouco pode instalalo, e o ficheiro .env - non cree, e ao mesmo tempo o código está no ficheiro índice.js non cambiar. Pero aquí instalamos este paquete, así que creamos ficheiros índice.js и .env:
touch index.js
touch .env
En arquivo índice.js escribe 22 liñas de código que se mostran na captura de pantalla anterior (só na liña #8 cambiar o seu correo electrónico) e no ficheiro .env - (sen comiñas nin signos de puntuación) especifique o par - nome/valor da chave APIque recibimos recentemente na consola SendGrid:
SENDGRID_API_KEY=a túa-chave-api-de-sendgrid-moi-secreta
E se queres menos traballo, clona o repositorio e instala os paquetes:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
En arquivo índice.js, en liña #8 cambiar correo electrónico; crear un ficheiro no directorio raíz .env, e nel indica o nome/valor da chave API, como se mostra xusto arriba.
3. Despregar
De forma máis ou menos clara e detallada sobre Yandex.Cloud e como colocalo alí Funcións de Yandex descrito no meu artigo
Nós creamos enerxía-arquivo (chamémoslle, por exemplo, mailer.zip), no que incluímos o directorio módulos_nodo e arquivos .env, index.js - todo do noso catálogo de proxectos:
Creamos unha función co nome... correctamente - correo, no menú de navegación da esquerda entramos O editor, enche os campos obrigatorios e cambia á pestana Arquivo ZIP descarga o noso arquivo mailer.zip:
E aquí está a opción mencionada anteriormente para descargar Chave API directamente aquí, en lugar de crear un ficheiro no proxecto .env, e non instale o paquete dotenv. Pero xa fixemos todo isto, así que o amoso só para información. É dicir, non hai que duplicar!
Agora, na esquina superior dereita, fai clic no botón Crear versión, e agarda un par de segundos. Cando estea todo listo, iremos automaticamente á sección Comentar. Alí habilitaremos a opción Función públicapara que poidas interactuar con el desde o mundo exterior.
Ve o enlace azul fronte á inscrición Ligazón de chamada? Fai clic nel. Abrirase unha xanela baleira do navegador... Pero espera, recibín un correo electrónico:
Agora podes volver á consola SendGrid, e prema o botón Verificar a integración. O sistema comprobará todo a través das súas canles e, como resultado, debería devolver unha pantalla como esta:
Iso é todo, rapaces (e nenas, por suposto) - todo é moi sinxelo e elegante! Haberá máis artigos. Se alguén está interesado en ler algo así, subscríbase para non perder.
4. Doazóns
Fonte: www.habr.com