Heute erstellen wir das sogenannte. Yandex-Funktion (Offizieller Name
Ich bin auch ein Gegner (aber ohne Fanatismus) traditioneller Server und ein Befürworter der sogenannten. Serverlos (serverlose) Lösungen, weil ich es nicht mag (und nicht wirklich weiß, wie man Server verwaltet), und noch mehr, weil ich für die Zeit bezahle, in der sie nicht ausgelastet sind. Eine andere Sache sind Funktionen. Jemand bedient sie ohne mich und ich bezahle nur für Anrufe. Anfang Oktober 2019 stellte Yandex seine vor Yandex Cloud-Funktionen - scheint das erste in der Russischen Föderation zu sein Serverlos. Und was besonders schön ist, ist, dass sie für Alices Fähigkeiten grundsätzlich kostenlos sind und sich daher seitdem in meinem peripheren Blickfeld befinden. Aber fangen wir schon einmal an.
Stellen wir uns dieses Szenario vor. Ihre Bewerbung (zum Beispiel Alices Skill
Darüber, wie von Yandex-Funktionen Einträge in der Datenbank vornehmen Cloud-Firestore Wir haben es uns bereits im Tutorial angeschaut
1. Erstellen Sie ein Konto in SendGrid
BeachtenSendGrid ist nur meine Wahl, die ich aus mehreren Gründen getroffen habe. Der wichtigste Grund ist, dass sie ein fertiges SDK für Node.js haben. Sie können jeden anderen Versanddienst wählen.
Mach weiter
Im nächsten Schritt wählen wir aus Node.js:
Als nächstes kommen wir mit für unsere API-Schlüsselname (wird nur in der Konsole in der Liste der Schlüssel angezeigt und hat nichts mit unserem zukünftigen Code zu tun; ich habe mir gerade einen unvergänglichen Code ausgedacht Demo-API-Schlüssel) und drücken Sie die Taste Schlüssel erstellen:
Der Schlüssel wird generiert, wir werden ihn kopieren und vertraulich behandeln. Und wir werden einen Bildschirm mit einer Schaltfläche haben Überprüfen Sie die Integration, wie im Bild unten, aber wir werden noch nicht darauf klicken, sondern mit dem Schreiben des Codes fortfahren:
2. Code schreiben
Aber der Code selbst ist, wie Sie sehen können, lächerlich klein – 22 Zeilen!
In der Reihe #8 Meine E-Mail-Adresse ist fest codiert (und daher schüchtern versteckt) – bitte geben Sie Ihre an. Im wirklichen Leben erhalten wir alle Daten (inkl E-Mail) vom Objekt Event. Wenn beispielsweise die Methode jetzt lesen Ein Objekt wird an unsere Funktion gesendet Benutzer mit Feld (Eigenschaft) E-Mail, der Wert dieses Feldes kann wie folgt ermittelt werden:
const { user } = event;
const email = user.email;
Und wenn die E-Mail-Adresse mithilfe der Methode an die Funktion übergeben wird BESTELLEzum Beispiel: https://functions.yandexcloud.net/123abc?[email protected]
Parameterwert E-Mail Du kannst es so bekommen:
const email = event.queryStringParameters.email;
Einen Blick darauf werfen, was genau in einem Objekt enthalten ist Event, können Sie am einfachsten erstellen Yandex-Funktion und verdrehen Sie es mit Abfragen:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Dies wird in der offiziellen Dokumentation ausführlicher (aber weniger klar) besprochen
Erstellen Sie also ein Projektverzeichnis (z. B. Mailer), gehen Sie dorthin, initialisieren Sie das Projekt, installieren Sie Abhängigkeiten:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Hier wird lediglich das Paket benötigt @sendgrid/mail. Plastiktüte E-Mail-Validator prüft die E-Mail-Adresse auf Gültigkeit (wie konnte ich das nicht gleich erraten?), aber wenn wir uns dessen sicher sind (sie wurde schon lange ohne uns überprüft), müssen wir sie nicht installieren (und natürlich Natürlich müssen wir es nicht im Code überprüfen). Plastiktüte dotenv Entwickelt, um Datensätze aus einer Datei zu lesen .env als Laufzeitvariablen. Aber in Yandex-Funktionen Es ist möglich, diese Variablen direkt in der Laufzeitumgebung zu platzieren. Wie? - Ich zeige es unten. Daher das Paket dotenv Sie können es auch nicht installieren, und zwar die Datei .env - nicht erstellen, und gleichzeitig befindet sich der Code in der Datei index.js verändere dich nicht. Aber hier haben wir dieses Paket installiert, also erstellen wir Dateien index.js и .env:
touch index.js
touch .env
Im Ordner index.js Schreiben Sie 22 Zeilen Code, wie im Screenshot oben gezeigt (nur in der Zeile #8 Ändern Sie Ihre E-Mail-Adresse) und in der Datei .env - (ohne Anführungszeichen oder Satzzeichen) Geben Sie das Paar an – Schlüsselname/-wert APIdie wir kürzlich in der Konsole erhalten haben SendGrid:
SENDGRID_API_KEY=Ihr-sehr-geheimer-Sendgrid-API-Schlüssel
Und wenn Sie weniger Arbeit haben möchten, klonen Sie das Repository und installieren Sie die Pakete:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Im Ordner index.js, in der Reihe #8 Ändern Sie die E-Mail; Erstellen Sie eine Datei im Stammverzeichnis .env, und geben Sie darin den Namen/Wert des Schlüssels an API, wie oben gezeigt.
3. Bereitstellen
Mehr oder weniger klar und detailliert darüber Yandex.Cloud und wie man es dort platziert Yandex-Funktionen in meinem Artikel beschrieben
Schaffen Reißverschluss-archive (nennen wir es zum Beispiel mailer.zip), in die wir das Verzeichnis einbinden node_modules und Dateien .env, index.js - alles aus unserem Projektkatalog:
Wir erstellen eine Funktion mit dem Namen... richtig - Mailer, im linken Navigationsmenü geben wir ein Editor, füllen Sie die erforderlichen Felder aus und wechseln Sie zur Registerkarte ZIP-Archiv Laden Sie unser Archiv herunter mailer.zip:
Und hier ist die zuvor erwähnte Option zum Herunterladen API-Schlüssel direkt hier, anstatt eine Datei im Projekt zu erstellen .env, und installieren Sie das Paket nicht dotenv. Da wir das alles aber schon gemacht haben, zeige ich es nur zur Information. Das heißt, es besteht keine Notwendigkeit zum Duplizieren!
Klicken Sie nun in der oberen rechten Ecke auf die Schaltfläche Version erstellen, und warten Sie ein paar Sekunden. Wenn alles fertig ist, gehen wir automatisch zum Abschnitt Beschreibung. Dort werden wir die Option aktivieren öffentliche Funktiondamit Sie von außen mit ihm interagieren können.
Sie sehen den blauen Link gegenüber der Aufschrift Link zum Anruf? Klick es. Es öffnet sich ein leeres Browserfenster... Aber warten Sie – ich habe eine E-Mail erhalten:
Jetzt können Sie zur Konsole zurückkehren SendGrid, und drücken Sie die Taste Überprüfen Sie die Integration. Das System überprüft alles über seine Kanäle und sollte als Ergebnis einen Bildschirm wie diesen zurückgeben:
Das war’s, Jungs (und Mädels natürlich) – alles ist wirklich sehr schlicht und elegant! Es wird noch weitere Artikel geben. Wenn jemand daran interessiert ist, so etwas zu lesen, abonnieren Sie ihn, damit Sie nichts verpassen.
4. Spenden
Source: habr.com