Usare Funzioni di Azure per sviluppare soluzioni serverless Node.js
Funzioni di Azure offre un'infrastruttura di codice serverless che consente di creare endpoint HTTP reattivi su richiesta. Le app serverless sono costituite da codice JavaScript o TypeScript eseguito in risposta a vari eventi.
Le funzioni offrono:
Astrazione del servizio Web: si concentra sul codice, non sull'infrastruttura.
Integrazione con i servizi di Azure: attivare il funzionamento o l'esterno di un servizio di Azure con eventi
Eseguire l'integrazione con i pacchetti JavaScript: usare i pacchetti npm preferiti con il codice serverless
Che cos'è una risorsa di Funzioni?
Una risorsa di Funzioni di Azure è un'unità logica per tutte le funzioni correlate in una singola località geografica di Azure. La risorsa può contenere una singola funzione o molte funzioni, che possono essere indipendenti l'una dall'altra o correlate con associazioni di input o output. È possibile scegliere tra molte funzioni comuni o crearne una personalizzata.
Le impostazioni delle risorse di Funzioni includono le tipiche configurazioni serverless, come variabili di ambiente, autenticazione, registrazione e CORS.
Funzioni durevoli, con stato
L'estensione Durable Functions consente di scrivere funzioni che mantengono lo stato o di gestire funzioni a esecuzione prolungata in Azure. Creare la prima funzione durevole in JavaScript.
Le app Web statiche includono funzioni
Quando si sviluppa un'applicazione client front-end statica, ad esempio Angular, React o Vue, che necessita anche di API serverless, usare app Web statiche con funzioni per rispettare entrambi i requisiti.
Proxy dall'app client all'API
Se si intende distribuire l'API con l'app Web statica, non è necessario eseguire il proxy delle chiamate API dell'applicazione client. Il proxy viene stabilito per l'utente, incluso lo sviluppo locale e remoto.
Quando si sviluppa in locale con un'app Web statica e Funzioni di Azure, l'interfaccia della riga di comando dell'app Web statica di Azure fornisce il proxy locale.
Impostazioni di sicurezza comuni che è necessario configurare per la funzione di Azure
Le impostazioni comuni seguenti devono essere configurate per proteggere la funzione di Azure:
- Impostazioni di configurazione
- Impostazioni di configurazione: creare le impostazioni dell'applicazione per le impostazioni che non influiscono sulla sicurezza.
- Segreti e chiavi: per tutte le impostazioni che influisce sulla sicurezza, creare un insieme di credenziali delle chiavi di Azure ed eseguire il pull di tali impostazioni dall'insieme di credenziali delle chiavi.
- Stato FTP nelle impostazioni della piattaforma: per impostazione predefinita, sono consentiti tutti. È necessario selezionare solo FTPS o disabilitare completamente FTP per migliorare la sicurezza.
- CORS API: configurare i domini client. Non usare
*
, che indica tutti i domini. - Impostazione TLS/SSL per HTTPS: per impostazione predefinita, l'API accetta richieste HTTP e HTTPS. Abilitare HTTPS solo nelle impostazioni TLS/SSL. Poiché l'app per le funzioni è ospitata in un sottodominio sicuro, è possibile usarla immediatamente (con
https
) e ritardare l'acquisto di un nome di dominio e l'uso di un certificato per il dominio fino a quando non si è pronti. - Slot di distribuzione: creare uno slot di distribuzione, ad esempio
stage
opreflight
e eseguire il push in tale slot. Scambiare questo slot di fase in produzione quando si è pronti. Non prendere l'abitudine di eseguire manualmente il push nell'ambiente di produzione. La codebase deve essere in grado di indicare la versione o il commit che si trova in uno slot.
Prerequisiti per lo sviluppo di Funzioni di Azure
Una semplice funzione JavaScript per le richieste HTTP
Per funzione si intende una funzione asincrona esportata con informazioni su richiesta e contesto. Lo screenshot parziale seguente del portale di Azure mostra il codice della funzione.
import { app, HttpRequest, HttpResponseInit, InvocationContext } from "@azure/functions";
export async function status(request: HttpRequest, context: InvocationContext): Promise<HttpResponseInit> {
context.log(`Http function processed request for url "${request.url}"`);
return {
status: 200,
jsonBody: {
env: process.env
}
};
};
app.http('status', {
route: "status",
methods: ['GET'],
authLevel: 'anonymous',
handler: status
});
Sviluppare le funzioni in locale con Visual Studio Code ed estensioni
Creare la prima funzione con Visual Studio Code. Visual Studio Code semplifica molti dettagli con l'estensione Funzioni di Azure.
Questa estensione consente di creare funzioni JavaScript e TypeScript con modelli comuni.
Integrare il servizio con altri servizi di Azure
Le funzioni serverless rimuovono gran parte della configurazione e della gestione del server, in modo da potersi concentrare solo sul codice necessario.
- Funzioni a basso codice: con Funzioni di Azure è possibile creare funzioni attivate da altri servizi di Azure o da tale output in altri servizi di Azure usando associazioni di trigger.
- Funzioni ad alto codice: per un maggiore controllo, usare gli SDK di Azure per coordinare e controllare altri servizi di Azure.
Passaggi successivi
Usare la tabella seguente per altre informazioni sulle Funzioni di Azure con Node.js