Oggi creeremo il cosiddetto. Funzione Yandex (nome ufficiale
Sono anche un avversario (ma senza fanatismo) dei server tradizionali, e un sostenitore dei cosiddetti. serverless soluzioni (serverless), perché non mi piace (e non so davvero come) amministrare i server e, a maggior ragione, pagare per il tempo in cui non vengono caricati. Un'altra cosa sono le funzioni. Qualcuno li assiste senza di me e pago solo le chiamate. All'inizio di ottobre 2019, Yandex ha presentato il suo Funzioni cloud di Yandex - sembra essere il primo nella Federazione Russa serverless. E la cosa particolarmente bella è che per le abilità di Alice sono generalmente gratuite, quindi da allora sono state nella mia visione periferica. Ma cominciamo già.
Immaginiamo questo scenario. La tua candidatura (ad esempio, la competenza di Alice
Informazioni su come da Funzioni Yandex inserire voci nel database CloudFirestore l'abbiamo già visto nel tutorial
1. Crea un account in SendGrid
NotaSendGrid è solo una mia scelta, che ho fatto per diversi motivi, il principale è che hanno un SDK già pronto per Node.js. Puoi scegliere qualsiasi altro servizio di spedizione.
Andare avanti
Nel passaggio successivo selezioniamo Node.js:
Successivamente ci viene in mente il nostro API-nome della chiave (verrà visualizzato solo nella console nell'elenco delle chiavi e non ha nulla a che fare con il nostro codice futuro; mi è venuta in mente una parola imperitura chiave-api-demo) e premere il pulsante Crea chiave:
La chiave verrà generata, la copieremo e la conserveremo nella più profonda riservatezza. E avremo uno schermo con un pulsante Verifica l'integrazione, come nell'immagine qui sotto, ma non lo cliccheremo ancora, ma passiamo alla scrittura del codice:
2. Scrittura del codice
Ma il codice stesso, come puoi vedere, è ridicolmente piccolo: 22 righe!
In linea #8 La mia email è codificata (e quindi timidamente nascosta): indica la tua. Nella vita reale, riceveremo tutti i dati (compresi email) dall'oggetto evento. Ad esempio, se il metodo POST un oggetto viene inviato alla nostra funzione Utente con campo (proprietà) email, il valore di questo campo può essere ottenuto in questo modo:
const { user } = event;
const email = user.email;
E se l'indirizzo email viene passato alla funzione utilizzando il metodo GET, ad esempio: https://functions.yandexcloud.net/123abc?[email protected]
valore del parametro email puoi ottenerlo in questo modo:
const email = event.queryStringParameters.email;
Per dare un'occhiata a cosa è contenuto esattamente in un oggetto evento, puoi creare il più semplice Funzione Yandex e stravolgilo con le query:
module.exports.handler = async function (event) {
return {
'statusCode': 200,
'body': JSON.stringify(event)
};
};
Questo è discusso in modo più dettagliato (ma meno chiaramente) nella documentazione ufficiale
Quindi, crea una directory di progetto (ad esempio, postale), vai lì, inizializza il progetto, installa le dipendenze:
mkdir mailer
cd mailer
npm init -y
npm i @sendgrid/mail email-validator dotenv
Qui è richiesto solo il pacchetto @sendgrid/mail. Sacchetto di plastica validatore di posta elettronica controlla la validità dell'indirizzo email (come ho fatto a non indovinare subito?), ma se ne siamo sicuri (è già stato controllato a lungo senza di noi), non dobbiamo installarlo (e, naturalmente, ovviamente non dobbiamo controllarlo nel codice). Sacchetto di plastica dotenv progettato per leggere i record da un file .env come variabili di runtime. Ma in Funzioni Yandex È possibile inserire queste variabili direttamente nell'ambiente runtime. Come? - Lo mostrerò qui sotto. Quindi il pacchetto dotenv puoi anche non installarlo e il file .env - non creare e allo stesso tempo il codice è nel file index.js non cambiare. Ma qui abbiamo installato questo pacchetto, quindi creiamo file index.js и .env:
touch index.js
touch .env
In archivio index.js scrivi 22 righe di codice mostrato nello screenshot qui sopra (solo nella riga #8 cambia la tua email) e nel file .env - (senza virgolette o segni di punteggiatura) specificare la coppia - nome/valore della chiave APIche abbiamo recentemente ricevuto nella console SendGrid:
SENDGRID_API_KEY=la tua chiave API sendgrid molto segreta
E se vuoi meno lavoro, clona il repository e installa i pacchetti:
git clone https://github.com/stmike/ycf-sendgrid-mailer-tutorial.git
cd ycf-sendgrid-mailer-tutorial
npm i
In archivio index.js, in linea #8 cambia email; creare un file nella directory principale .env, e in esso indicare il nome/valore della chiave API, come mostrato appena sopra.
3. Distribuire
Più o meno chiaramente e in dettaglio Yandex.Cloud e come posizionarlo lì Funzioni Yandex descritto nel mio articolo
Noi creiamo chiusura-archivio (chiamiamolo, ad esempio, mailer.zip), in cui includiamo la directory nodi_moduli e file .env, indice.js - tutto dal nostro catalogo di progetti:
Creiamo una funzione con il nome... correttamente - postale, nel menu di navigazione a sinistra entriamo editore, compila i campi richiesti e passa alla scheda Archivio ZIP scarica il nostro archivio mailer.zip:
Ed ecco l'opzione di download menzionata in precedenza Chiave API direttamente qui, anziché creare un file nel progetto .enve non installare il pacchetto dotenv. Ma tutto questo lo abbiamo già fatto, quindi lo mostro solo a titolo informativo. Cioè, non è necessario duplicare!
Ora nell'angolo in alto a destra fai clic sul pulsante Crea versionee attendi un paio di secondi. Quando tutto sarà pronto, andremo automaticamente alla sezione panoramica. Lì abiliteremo l'opzione funzione pubblicain modo che tu possa interagire con esso dal mondo esterno.
Vedi il collegamento blu di fronte all'iscrizione Link alla chiamata? Cliccalo. Si aprirà una finestra del browser vuota... Ma aspetta: ho ricevuto un'e-mail:
Ora puoi tornare alla console SendGride premere il pulsante Verifica l'integrazione. Il sistema controllerà il tutto attraverso i suoi canali, e di conseguenza dovrebbe restituire una schermata come questa:
Questo è tutto, ragazzi (e ragazze, ovviamente): tutto è davvero molto semplice ed elegante! Ci saranno più articoli. Se qualcuno è interessato a leggere qualcosa del genere, iscriviti per non perderlo.
4. Donazioni
Fonte: habr.com