Idag kommer vi att skapa den så kallade. Yandex funktion (officiellt namn
Jag är också en motståndare (men utan fanatism) till traditionella servrar, och en anhängare av den sk. Server (serverlösa) lösningar, eftersom jag inte gillar (och jag vet inte riktigt hur man) administrerar servrar, och ännu mer, betalar för tiden när de inte är laddade. En annan sak är funktioner. Någon servar dem utan mig, och jag betalar bara för samtal. I början av oktober 2019 presenterade Yandex sin Yandex molnfunktioner - verkar vara den första i Ryska federationen Server. Och det som är särskilt trevligt är att för Alices färdigheter är de generellt fria, så de har varit i min perifera syn sedan dess. Men låt oss börja redan.
Låt oss föreställa oss detta scenario. Din ansökan (till exempel Alices skicklighet
Om hur från Yandex funktioner göra inlägg i databasen Cloud Firestore vi har redan tittat på det i handledningen
1. Skapa ett konto i SendGrid
NoteraSendGrid är bara mitt val, som jag gjorde av flera anledningar, den främsta är att de har en färdig SDK för Node.js. Du kan välja vilken annan posttjänst som helst.
Låt oss gå vidare
I nästa steg väljer vi node.js:
Nästa kommer vi på för vår API-nyckelnamn (kommer bara att visas i konsolen i listan över nycklar, och har ingenting att göra med vår framtida kod; jag kom precis på en oförgänglig demo-api-nyckel) och tryck på knappen Skapa nyckel:
Nyckeln kommer att genereras, vi kommer att kopiera den och bevara den i djupaste förtroende. Och vi kommer att ha en skärm med en knapp Verifiera integrationen, som på bilden nedan, men vi kommer inte att klicka på den än, men låt oss gå vidare till att skriva koden:
2. Skriva kod
Men själva koden är, som du kan se, löjligt liten - 22 rader!
I kö #8 Min e-post är hårdkodad (och därför blygt dold) - ange din. I verkligheten kommer vi att få all data (inklusive e-mail) från objekt händelse. Till exempel om metoden POST ett objekt skickas till vår funktion användare med fält (fastighet) e-mail, kan värdet för detta fält erhållas så här:
const { user } = event;
const email = user.email;
Och om e-postadressen skickas till funktionen med metoden FÅ, till exempel: https://functions.yandexcloud.net/123abc?[email protected]
parametervärde e-mail du kan få det så här:
const email = event.queryStringParameters.email;
För att ta en titt på exakt vad som finns i ett objekt händelse, kan du skapa den enklaste Yandex funktion och vrid det med frågor:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Detta diskuteras mer detaljerat (men mindre tydligt) i den officiella dokumentationen
Så skapa en projektkatalog (till exempel, mailare), gå till det, initiera projektet, installera beroenden:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Här krävs bara paketet @sendgrid/mail. Plastpåse e-postvalidator kontrollerar e-postadressen för giltighet (hur gissade jag inte direkt?), men om vi är säkra på det (den har redan kontrollerats länge utan oss) behöver vi inte installera den (och av vi behöver naturligtvis inte kontrollera det i koden). Plastpåse dotenv utformad för att läsa poster från en fil .env som körtidsvariabler. Men i Yandex funktioner Det är möjligt att placera dessa variabler direkt i runtime-miljön. Hur? - Jag visar det nedan. Därför paketet dotenv du kan inte heller installera den och filen .env - skapa inte, och samtidigt finns koden i filen index.js ändra inte. Men här har vi installerat det här paketet, så vi skapar filer index.js и .env:
touch index.js
touch .env
I fil index.js skriv 22 rader kod som visas i skärmdumpen ovan (endast på raden #8 ändra din e-post) och i filen .env - (utan citattecken eller skiljetecken) ange paret - nyckelnamn/värde APIsom vi nyligen fick i konsolen SendGrid:
SENDGRID_API_KEY=din-mycket-hemliga-sendgrid-api-nyckel
Och om du vill ha mindre arbete, klona förvaret och installera paketen:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
I fil index.js, i kö #8 byta e-mail; skapa en fil i rotkatalogen .env, och ange nyckelns namn/värde i den API, som visas precis ovan.
3. Installera
Mer eller mindre tydligt och detaljerat om Yandex.Cloud och hur man placerar den där Yandex funktioner beskrivs i min artikel
Skapa zip-arkiv (låt oss kalla det, till exempel, mailer.zip), där vi inkluderar katalogen node_modules och filer .env, index.js - allt från vår projektkatalog:
Vi skapar en funktion med namnet... korrekt - mailare, i den vänstra navigeringsmenyn går vi in Redaktören, fyll i de obligatoriska fälten och växla till fliken ZIP-arkiv ladda ner vårt arkiv mailer.zip:
Och här är det tidigare nämnda alternativet att ladda ner API-nyckel direkt här, istället för att skapa en fil i projektet .env, och installera inte paketet dotenv. Men vi har redan gjort allt detta, så jag visar det bara för information. Det vill säga, det finns ingen anledning att duplicera!
Klicka nu på knappen i det övre högra hörnet Skapa versionoch vänta ett par sekunder. När allt är klart går vi automatiskt till avsnittet Обзор. Där kommer vi att aktivera alternativet Offentlig funktionså att du kan interagera med den från omvärlden.
Du ser den blå länken mittemot inskriptionen Ring länk? Klicka på det. Ett tomt webbläsarfönster öppnas... Men vänta - jag fick ett e-postmeddelande:
Nu kan du återgå till konsolen SendGrid, och tryck på knappen Verifiera integrationen. Systemet kommer att kontrollera allt genom sina kanaler, och som ett resultat bör det returnera en skärm så här:
Det är det, killar (och tjejer, förstås) - allt är verkligen väldigt enkelt och elegant! Det kommer fler artiklar. Om någon är intresserad av att läsa något liknande, prenumerera så att du inte missar något.
4. Donationer
Källa: will.com