Aujourd'hui, nous allons créer ce qu'on appelle. Fonction Yandex (nom officiel
Je suis aussi un adversaire (mais sans fanatisme) des serveurs traditionnels, et un partisan de ce qu'on appelle. sans serveur (sans serveur), car je n'aime pas (et je ne sais pas trop comment) administrer les serveurs, et encore plus payer le temps où ils ne sont pas chargés. Une autre chose, ce sont les fonctions. Quelqu'un les dessert sans moi et je ne paie que les appels. Début octobre 2019, Yandex a présenté son Fonctions cloud Yandex - semble être le premier en Fédération de Russie sans serveur. Et ce qui est particulièrement appréciable, c’est que les compétences d’Alice sont généralement gratuites, donc elles sont depuis dans ma vision périphérique. Mais commençons déjà.
Imaginons ce scénario. Votre candidature (par exemple, la compétence d'Alice
À propos de comment depuis Fonctions Yandex faire des entrées dans la base de données Cloud Firestore nous l'avons déjà regardé dans le tutoriel
1. Créez un compte dans SendGrid
NoterSendGrid n'est que mon choix, que j'ai fait pour plusieurs raisons, la principale étant qu'ils disposent d'un SDK prêt à l'emploi pour Node.js. Vous pouvez choisir n’importe quel autre service de messagerie.
Nous passons
À l'étape suivante, nous sélectionnons Node.js:
Ensuite, nous proposons pour notre API-nom de la clé (sera affiché uniquement dans la console dans la liste des clés, et n'a rien à voir avec notre futur code ; j'ai trouvé un impérissable clé de démonstration API) et appuyez sur le bouton Créer une clé:
La clé sera générée, nous la copierons et la conserverons dans la plus profonde confidentialité. Et nous aurons un écran avec un bouton Vérifier l'intégration, comme dans l'image ci-dessous, mais nous ne cliquerons pas encore dessus, mais passons à l'écriture du code :
2. Écrire du code
Mais le code lui-même, comme vous pouvez le voir, est ridiculement petit : 22 lignes !
En ligne #8 Mon email est codé en dur (et donc timidement caché) - merci d'indiquer le vôtre. Dans la vraie vie, nous recevrons toutes les données (y compris email) à partir de l'objet un événement. Par exemple, si la méthode POSTEZ un objet est envoyé à notre fonction utilisateur avec champ (propriété) email, la valeur de ce champ peut être obtenue comme ceci :
const { user } = event;
const email = user.email;
Et si l'adresse email est transmise à la fonction en utilisant la méthode ÉCONOMISEZ, Par exemple: https://functions.yandexcloud.net/123abc?[email protected]
valeur du paramètre email vous pouvez l'obtenir comme ceci :
const email = event.queryStringParameters.email;
Pour voir ce que contient exactement un objet un événement, vous pouvez créer le plus simple Fonction Yandex et tournez-le avec des requêtes :
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Ceci est discuté plus en détail (mais moins clairement) dans la documentation officielle
Créez donc un répertoire de projet (par exemple, courrier), allez-y, initialisez le projet, installez les dépendances :
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Ici seul le package est requis @sendgrid/mail. Sac plastique validateur d'e-mail vérifie la validité de l'adresse email (comment n'ai-je pas deviné tout de suite ?), mais si nous en sommes sûrs (elle a déjà été vérifiée depuis longtemps sans nous), nous n'avons pas besoin de l'installer (et, bien sûr, bien sûr, nous n'avons pas besoin de le vérifier dans le code). Sac plastique dotenv conçu pour lire les enregistrements d'un fichier .env comme variables d'exécution. Mais en Fonctions Yandex Il est possible de placer ces variables directement dans l'environnement d'exécution. Comment? - Je vais le montrer ci-dessous. Donc le paquet dotenv vous ne pouvez pas non plus l'installer, et le fichier .env - ne créez pas, et en même temps le code est dans le fichier index.js ne changez pas. Mais ici nous avons installé ce package, nous créons donc des fichiers index.js и .env:
touch index.js
touch .env
En fichier index.js écrivez 22 lignes de code montrées dans la capture d'écran ci-dessus (uniquement dans la ligne #8 changez votre email), et dans le fichier .env - (sans guillemets ni ponctuation) précisez la paire - nom/valeur de la clé APIque nous avons récemment reçu dans la console SendGrid:
SENDGRID_API_KEY=votre-clé-très-secret-sendgrid-api
Et si vous voulez moins de travail, clonez le référentiel et installez les packages :
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
En fichier index.js, en ligne #8 Changer l'e-mail; créer un fichier dans le répertoire racine .env, et indiquez-y le nom/valeur de la clé API, comme indiqué juste au-dessus.
3. Déployer
Plus ou moins clairement et en détail sur Yandex.Cloud et comment le placer là Fonctions Yandex décrit dans mon article
Créer Zip *: français-archive (appelons-le, par exemple, mailer.zip), dans lequel nous incluons le répertoire node_modules et des fichiers .env, index.js - tout de notre catalogue de projets :
Nous créons une fonction avec le nom... correctement - courrier, dans le menu de navigation de gauche, nous entrons éditeur, remplissez les champs obligatoires et passez à l'onglet Archive ZIP téléchargez nos archives mailer.zip:
Et voici l'option de téléchargement mentionnée précédemment Clé API directement ici, plutôt que de créer un fichier dans le projet .env, et n'installez pas le package dotenv. Mais nous avons déjà fait tout cela, donc je le montre juste à titre d’information. Autrement dit, il n'est pas nécessaire de dupliquer !
Maintenant, dans le coin supérieur droit, cliquez sur le bouton Créer une version, et attendez quelques secondes. Quand tout sera prêt, nous irons automatiquement à la section vue d'ensemble. Là, nous activerons l'option fonction publiqueafin que vous puissiez interagir avec lui depuis le monde extérieur.
Vous voyez le lien bleu en face de l'inscription Lien pour appeler? Cliquez dessus. Une fenêtre de navigateur vide s'ouvrira... Mais attendez, j'ai reçu un e-mail :
Vous pouvez maintenant revenir à la console SendGrid, et appuyez sur le bouton Vérifier l'intégration. Le système vérifiera tout via ses canaux et, par conséquent, il devrait renvoyer un écran comme celui-ci :
Ça y est, les gars (et les filles, bien sûr) - tout est vraiment très simple et élégant ! Il y aura plus d'articles. Si quelqu’un souhaite lire quelque chose comme ça, abonnez-vous pour ne rien manquer.
4. Dons
Source: habr.com