Tänään luomme ns. Yandex-toiminto (virallinen nimi
Olen myös perinteisten palvelimien vastustaja (mutta ilman fanaattista) ja ns. serverless (palvelimettomat) ratkaisut, koska en pidä (enkä todellakaan tiedä miten) hallita palvelimia, ja vielä enemmän, maksan ajasta, kun niitä ei ladata. Toinen asia on toiminnot. Joku palvelee heitä ilman minua, ja minä maksan vain puheluista. Lokakuun 2019 alussa Yandex esitteli sen Yandex Cloud Functions - näyttää olevan ensimmäinen Venäjän federaatiossa serverless. Ja mikä on erityisen mukavaa, on se, että Alicen taidoista ne ovat yleensä ilmaisia, joten ne ovat olleet perifeerisissä näkemissäni siitä lähtien. Mutta aloitetaan jo.
Kuvitellaanpa tämä skenaario. Hakemuksesi (esimerkiksi Alicen taidot
Tietoja siitä, kuinka alkaen Yandex-toiminnot tehdä merkintöjä tietokantaan Pilvi Firestore katsoimme sen jo opetusohjelmassa
1. Luo tili SendGridissä
HuomataSendGrid on vain minun valintani, jonka tein useista syistä, joista tärkein on, että heillä on valmis SDK Node.js:lle. Voit valita minkä tahansa muun postituspalvelun.
Ohitamme
Seuraavassa vaiheessa valitsemme Node.js:
Seuraavaksi keksimme omamme API-avaimen nimi (näkyy vain konsolissa avainluettelossa, eikä sillä ole mitään tekemistä tulevan koodimme kanssa; keksin katoamattoman demo-api-avain) ja paina -painiketta Luo avain:
Avain luodaan, kopioimme sen ja säilytämme sen syvimmässä luottamuksessa. Ja meillä on näyttö, jossa on painike Tarkista integraatio, kuten alla olevassa kuvassa, mutta emme vielä napsauta sitä, vaan siirrytään koodin kirjoittamiseen:
2. Koodin kirjoittaminen
Mutta itse koodi, kuten näet, on naurettavan pieni - 22 riviä!
Linjassa #8 Sähköpostini on kovakoodattu (ja siksi ujosti piilotettu) - ilmoita omasi. Tosielämässä saamme kaikki tiedot (mukaan lukien email) kohteesta tapahtumaa varten. Esimerkiksi jos menetelmä POST kohde lähetetään toimintoomme lähettämä pellolla (kiinteistö) email, tämän kentän arvo voidaan saada seuraavasti:
const { user } = event;
const email = user.email;
Ja jos sähköpostiosoite välitetään funktiolle menetelmällä SAA, esimerkiksi: https://functions.yandexcloud.net/123abc?[email protected]
parametrin arvo email saat sen näin:
const email = event.queryStringParameters.email;
Tarkastellaksesi, mitä esine tarkalleen sisältää tapahtumaa varten, voit luoda yksinkertaisimman Yandex-toiminto ja kierrä sitä kyselyillä:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Tätä käsitellään yksityiskohtaisemmin (mutta vähemmän selvästi) virallisessa dokumentaatiossa
Luo siis projektihakemisto (esim. Mailer), mene siihen, alusta projekti, asenna riippuvuudet:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Tässä tarvitaan vain paketti @sendgrid/mail. Muovipussi sähköpostin vahvistaja tarkistaa sähköpostiosoitteen oikeellisuuden (miten en heti arvannut?), mutta jos olemme siitä varmoja (se on jo tarkastettu pitkään ilman meitä), meidän ei tarvitse asentaa sitä (ja meidän ei tietenkään tarvitse tarkistaa sitä koodista). Muovipussi dotenv suunniteltu lukemaan tietueita tiedostosta .env ajonaikaisina muuttujina. Mutta sisään Yandex-toiminnot Nämä muuttujat on mahdollista sijoittaa suoraan ajonaikaiseen ympäristöön. Miten? - Näytän sen alla. Siksi paketti dotenv et myöskään voi asentaa sitä ja tiedostoa .env - älä luo, ja samalla koodi on tiedostossa index.js Älä vaihda. Mutta täällä olemme asentaneet tämän paketin, joten luomme tiedostoja index.js и .env:
touch index.js
touch .env
Tiedostossa index.js kirjoita 22 riviä koodia, jotka näkyvät yllä olevassa kuvakaappauksessa (vain riville #8 vaihda sähköpostiosoitteesi) ja tiedostossa .env - (ilman lainausmerkkejä tai välimerkkejä) määritä pari - avaimen nimi/arvo APIjonka saimme äskettäin konsoliin SendGrid:
SENDGRID_API_KEY=hyvin-salainen-sendgrid-api-avain
Ja jos haluat vähemmän työtä, kloonaa arkisto ja asenna paketit:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
Tiedostossa index.js, linjassa #8 Vaihda sähköposti; luo tiedosto juurihakemistoon .env, ja osoita siinä avaimen nimi/arvo API, kuten yllä näkyy.
3. Ota käyttöön
Enemmän tai vähemmän selkeästi ja yksityiskohtaisesti aiheesta Yandex.Cloud ja kuinka se laitetaan sinne Yandex-toiminnot kuvattu artikkelissani
Luoda vetoketju-arkisto (kutsutaanko sitä esim. mailer.zip), johon sisällytämme hakemiston solmu_moduulit ja tiedostot .env, index.js - kaikki projektiluettelostamme:
Luomme funktion nimellä... oikein - Mailer, siirrymme vasemmanpuoleiseen navigointivalikkoon Toimittaja, täytä vaaditut kentät ja siirry välilehteen ZIP-arkisto lataa arkistomme mailer.zip:
Ja tässä on aiemmin mainittu latausvaihtoehto API-avain suoraan tänne tiedoston luomisen sijaan projektissa .env, äläkä asenna pakettia dotenv. Mutta olemme jo tehneet tämän kaiken, joten näytän sen vain tiedoksi. Eli ei ole tarvetta monistaa!
Napsauta nyt oikeassa yläkulmassa olevaa painiketta Luo versio, ja odota pari sekuntia. Kun kaikki on valmis, siirrymme automaattisesti osioon Arvostelu. Siellä otamme vaihtoehdon käyttöön julkinen tehtäväjotta voit olla vuorovaikutuksessa sen kanssa ulkomaailmasta.
Näet sinisen linkin kirjoitusta vastapäätä Linkki puheluun? Klikkaa sitä. Tyhjä selainikkuna avautuu... Mutta odota - sain sähköpostin:
Nyt voit palata konsoliin SendGrid, ja paina -painiketta Tarkista integraatio. Järjestelmä tarkistaa kaiken kanaviensa kautta, ja sen seurauksena sen pitäisi palauttaa seuraavanlainen näyttö:
Siinä kaikki, pojat (ja tytöt tietysti) - kaikki on todella yksinkertaista ja tyylikästä! Artikkeleita tulee lisää. Jos joku on kiinnostunut lukemaan jotain tällaista, niin tilaakaa, ettet jää paitsi.
4. Lahjoitukset
Lähde: will.com