Hoy vamos a crear un llamado. Función Yandex (nombre oficial
También soy opositor (pero sin fanatismo) de los servidores tradicionales, y partidario de los llamados. sin servidor soluciones (sin servidor), porque no me gusta (y realmente no sé cómo) administrar servidores, y más aún, pagar por el tiempo en que no están cargados. Otra cosa son las funciones. Alguien los atiende sin mi, y pago solo por llamadas. A principios de octubre de 2019, Yandex presentó su Funciones de la nube de Yandex - parece el primero en la Federación Rusa sin servidor. Y lo que es especialmente agradable: para las habilidades de Alice, generalmente son gratuitas, por lo que desde entonces han estado en mi visión periférica. Pero empecemos ya.
Imaginemos tal escenario. Su aplicación (por ejemplo, la habilidad de Alice
Acerca de cómo desde Funciones Yandex hacer entradas en la base de datos Tienda de fuego en la nube ya hemos cubierto en el tutorial
1. Crea una cuenta en SendGrid
NotaSendGrid es solo mi elección, que hice por varias razones, la principal de las cuales es que tienen un SDK listo para usar para Node.js. Puede elegir cualquier otro servicio de correo.
proceder
En el siguiente paso, elija Node.js:
A continuación, inventamos para nuestro API-nombre de la clave (se mostrará solo en la consola en la lista de claves, y no tiene nada que ver con nuestro código futuro; se me ocurrió un imperecedero clave-api-demo) y presione el botón Crear clave:
Se generará la clave, la copiaremos y la guardaremos en el más profundo secreto. Y tendremos una pantalla con un botón Verificar Integración, como en la imagen a continuación, pero aún no lo presionaremos, pero pasaremos a escribir el código:
2. Escritura de código
Y el código en sí, como puede ver, es ridículamente pequeño: ¡22 líneas!
En línea #8 mi correo está escrito en código duro (y, por lo tanto, tímidamente cubierto): usted especifica el suyo. En la vida real, recibiremos todos los datos (incluidos email) del objeto evento. Por ejemplo, si el método PUBLICAR un objeto es enviado a nuestra función usuario con campo (propiedad) email, el valor de este campo se puede obtener así:
const { user } = event;
const email = user.email;
Y si la dirección de correo electrónico se pasa a la función por el método , Por ejemplo: https://functions.yandexcloud.net/123abc?[email protected]
valor del parámetro email se puede obtener asi:
const email = event.queryStringParameters.email;
Para echar un vistazo a lo que está contenido exactamente en un objeto evento, puedes crear un simple Función Yandex y gíralo con peticiones:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Más (pero menos inteligible) sobre esto se establece en la documentación oficial.
Entonces, creamos un directorio de proyecto (por ejemplo, remitente), vaya a él, inicialice el proyecto, instale las dependencias:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Aquí solo se requiere el paquete @sendgrid/correo. Bolsa de plastico validador de correo electrónico verifica la validez de la dirección de correo electrónico (¿cómo no lo adiviné de inmediato?), pero si estamos seguros (se ha verificado durante mucho tiempo sin nosotros), no se puede instalar (y, por supuesto, el verificación no debe hacerse en el código). Bolsa de plastico dotenv diseñado para leer registros de un archivo .env como variables de tiempo de ejecución. Pero en Funciones Yandex es posible poner estas variables directamente en el entorno de tiempo de ejecución. ¿Cómo? - Lo mostraré a continuación. Por lo tanto el paquete dotenv tampoco se puede instalar, y el archivo .env - no crear, y al mismo tiempo el código en el archivo index.js no cambies. Pero aquí hemos instalado este paquete, así que creamos archivos. index.js и .env:
touch index.js
touch .env
En archivo index.js escriba 22 líneas de código que se muestran en la captura de pantalla anterior (solo en la línea #8 cambiar tu correo), y en el archivo .env - (sin comillas ni signos de puntuación) especificar un par - el nombre/valor de la clave API, que recibimos recientemente en la consola SendGrid:
SENDGRID_API_KEY=tu-muy-secreta-sendgrid-api-key
Y si quieres menos trabajo, clona el repositorio, instala los paquetes:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
En archivo index.js, en línea #8 cambiar correo; crear un archivo en el directorio raíz .env, y en él especifica el nombre/valor de la clave APIcomo se muestra justo arriba.
3. Implementar
Más o menos claro y detallado sobre Yandex.Cloud y como colocar Funciones Yandex descrito en mi artículo
Crear Código Postal-archivo (llamémoslo, por ejemplo, correo.zip), que incluye el directorio nodo_módulos y archivos .env, índice.js - todo desde nuestro directorio de proyectos:
Creamos una función con el nombre... correcto - remitente, en el menú de navegación izquierdo, seleccione editor, complete los campos obligatorios y cambie a la pestaña archivo ZIP subiendo nuestro archivo correo.zip:
Y aquí está la opción mencionada anteriormente para descargar Clave API directamente aquí en lugar de crear un archivo en el proyecto .env, y no instale el paquete dotenv. Pero ya hemos hecho todo esto, así que lo muestro solo a título informativo. Es decir, ¡no hay necesidad de duplicar!
Ahora haga clic en el botón en la esquina superior derecha Crear versióny espera un par de segundos. Cuando todo esté listo, automáticamente iremos a la sección Descripción. Allí habilitamos la opción funcion publicapara que se pueda interactuar con él desde el mundo exterior.
Ver el enlace azul al lado de la inscripción Enlace para llamar? Pinchalo. Se abrirá una ventana vacía del navegador... Pero espera, recibí un correo electrónico:
Ahora puedes volver a la consola. SendGrid, y presione el botón Verificar Integración. El sistema verificará todo a través de sus canales y, como resultado, debería devolver una pantalla de este tipo:
Entonces, chicos (y chicas, por supuesto), ¡todo es realmente muy simple y elegante! Habrá más artículos. Si te interesa leer esto, suscríbete para no perderte.
4. Donaciones
Fuente: habr.com