Sviluppo di app Node.js serverless con Funzioni di Azure
Funzioni di Azure offre un'infrastruttura serverless potente, che consente di sviluppare endpoint HTTP scalabili e su richiesta con facilità. Usando JavaScript o TypeScript, è possibile creare applicazioni serverless che rispondono a vari eventi, consentendo di concentrarsi sulla scrittura di codice senza doversi preoccupare della gestione dei server. Questa guida illustra come iniziare a sviluppare app serverless Node.js usando Funzioni di Azure, integrando facilmente altri servizi di Azure.
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 richiede anche API serverless, usare app Web statiche con funzioni per aggregare entrambi insieme.
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 automaticamente quando si distribuisce l'app Funzioni di Azure come app gestita.
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: 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 Azure Functions, è possibile creare funzioni attivate da altri servizi di Azure o che inviano output ad altri servizi di Azure usando le associazioni di attivazione .
- Funzioni ad alto codice: per un maggiore controllo, usare gli SDK di Azure per coordinare e controllare altri servizi di Azure.