Serverloze Node.js-apps ontwikkelen met Azure Functions

HTTP-API's en gebeurtenisgestuurde Node.js-apps bouwen en uitvoeren met Azure Functions. Gebruik vervolgens de rest van dit artikel om het juiste serverloze hosting- en integratiepad voor uw app te kiezen.

Wat is een resource voor een functie-app?

Een functie-app is een logische eenheid voor het implementeren en uitvoeren van uw functiecode in één Azure resource op een specifieke geografische locatie. De resource kan één functie of veel functies bevatten, die onafhankelijk van elkaar worden uitgevoerd, maar dezelfde rekenresources, connectiviteit en instellingen delen. Functions biedt een volledig scala aan sjablonen op basis van triggers om snel aan de slag te gaan. U kunt uw code en mogelijk andere uitvoer- en invoerbindingen toevoegen.

De resource-instellingen van de functie-app omvatten algemene serverloze configuraties, zoals omgevingsvariabelen, verificatie, logboekregistratie en CORS.

Duurzame, toestandsgebonden functies

Terwijl functie-uitvoeringen in Azure inherent staatloos zijn, Durable Functionsstatus behouden en langlopende functies beheren in Azure. Gebruik deze wanneer u orchestraties, opnieuw proberen of werkstromen met meerdere stappen nodig hebt die langer duren dan één aanvraag. Zie Uw eerste duurzame functie maken in JavaScript om aan de slag te gaan.

Statische web-apps bevatten functies

Wanneer u een statische front-endclienttoepassing (zoals Angular, React of Vue) ontwikkelt die ook serverloze API's nodig heeft, gebruikt u Statische web-apps met functies om beide samen te bundelen.

Proxy van client-app naar de API

Als u uw API wilt implementeren met uw statische web-app, hoeft u de API-aanroepen van uw clienttoepassing niet te proxyn. De proxy wordt voor u tot stand gebracht wanneer u de functie-app implementeert als een beheerde app.

Wanneer u uw statische web-app lokaal ontwikkelt met behulp van Azure Functions, biedt de Azure Static Web Apps CLI de lokale proxy.

Algemene beveiligingsinstellingen die u moet configureren voor uw Azure-functie

De volgende algemene instellingen moeten worden geconfigureerd om uw Azure-functie veilig te houden:

  • Verificatie en autorisatie:
    • Gebruik Microsoft Entra ID (voorheen Azure Active Directory) voor robuuste verificatie. Configureer uw functie-app om OAuth2-tokens te vereisen voor productieworkloads.
    • Vermijd het gebruik van functietoetsen voor gevoelige toepassingen. Integreer in plaats daarvan met Microsoft Entra ID of valideer JWT-tokens in uw functiecode.
    • Gebruik beheerde identiteiten om uw functie-app te verifiëren met andere Azure-resources, zodat elke functie alleen toegang krijgt die nodig is.
  • Configuratie-instellingen:
    • Toepassingsinstellingen: maak toepassingsinstellingen voor instellingen die geen invloed hebben op de beveiliging.
    • Geheimen en sleutels: gebruik deze gelaagde benadering voor instellingen die van invloed zijn op de beveiliging:
      1. Gebruik eerst De Microsoft Entra-id voor verificatie waar dit wordt ondersteund.
      2. Voor integraties die geen Ondersteuning bieden voor Entra ID, slaat u geheimen op in Azure Key Vault en haalt u deze instellingen op uit uw Key Vault.
      3. Sluit nooit geheimen in code- of configuratiebestanden in.
    • Zie Azure Functions beveiligen voor andere platformbeveiligingsinstellingen.
  • Netwerkbeveiliging:
    • CORS: configureer uw clientdomeinen. Gebruik niet *, waarmee alle domeinen worden aangegeven.
    • Integratie van virtuele netwerken: gebruik privé-eindpunten of integratie van virtuele netwerken om netwerkblootstelling te beperken en binnenkomend verkeer van vertrouwde bronnen te beperken.
  • HTTPS en versleuteling:
    • TLS/SSL-instelling voor HTTPS: uw API accepteert standaard HTTP- en HTTPS-aanvragen. Schakel HTTPS alleen in de TLS/SSL-instellingen in. Omdat uw functie-app wordt gehost op een beveiligd subdomein (*.azurewebsites.net), kunt u deze direct (met https) gebruiken en het aanschaffen van een domeinnaam vertragen en een certificaat voor het domein gebruiken totdat u klaar bent.
  • Implementatie en monitoring:
    • Deploymentslots - maak een deploymentslot, zoals stage of preflight, en push naar dat slot. Zet dit stagingslot om naar productie zodra u er klaar voor bent. Maak er geen gewoonte van om handmatig naar productie te pushen. Uw codebase moet kunnen aangeven welke versie of commit op een slot staat. Als u Flex Consumption gebruikt, gebruik dan implementaties zonder downtime in plaats van slots.
    • Schakel Application Insights in voor realtime telemetrie, waarschuwingen en anomaliedetectie om uw functies en auditlogboeken voor verdachte activiteiten te bewaken.

Zie Azure Functions beveiligen voor uitgebreide beveiligingsrichtlijnen.

Hostopties voor Azure Functions

U kunt Azure Functions op verschillende manieren hosten, afhankelijk van uw vereisten:

Hostingplannen voor Azure Functions-resources

Wanneer u een function app-resource maakt, kiest u een van deze hostingabonnementen voor Functions:

  • Verbruiksplan (verouderd): Betaal alleen voor de tijd dat uw functies worden uitgevoerd met automatisch schalen.
  • Flex Consumption-abonnement: biedt verbeterde controle met altijd gereede instanties om koude startbewerkingen, integratie van virtuele netwerken en configureerbare instantiegrootten (512 MB tot 4 GB) te verminderen. Dit plan wordt aanbevolen voor nieuwe linux-workloads waarvoor bedrijfsbeveiligings- en prestatiefuncties zijn vereist. Dit plan maakt gebruik van facturering op basis van uitvoering, vergelijkbaar met het Verbruiksplan, maar brengt extra kosten met zich mee voor functies zoals altijd beschikbare exemplaren.
  • Premium-abonnement: biedt verbeterde prestaties met vooraf opgewarmde exemplaren, connectiviteit van virtuele netwerken en langere uitvoeringsduur.
  • Toegewezen (App Service)-plan: voer functies uit op toegewezen virtuele machines voor voorspelbare kosten en volledige controle over de runtime-omgeving.

Zie Azure Functions-hostingopties voor meer informatie over het kiezen van het juiste hostingabonnement.

Azure Container Apps-resource

U kunt Azure Functions ook implementeren in een Azure Container Apps resource als container workloads. Deze optie biedt volledige controle over de containeromgeving en is ideaal wanneer u aangepaste afhankelijkheden, langlopende processen nodig hebt of functies wilt combineren met andere gecontaineriseerde microservices. Zie Azure Functions in Azure Container Apps overzicht voor meer informatie.

Vereisten voor het ontwikkelen van Azure Functions

  • Node.js LTS : gebruik de nieuwste versie van Long Term Support (LTS) voor de beste compatibiliteit en beveiligingsupdates met Azure Functions.
  • Azure Functions Core Tools : gebruik de huidige primaire versie voor lokale ontwikkeling en foutopsporing.

Een eenvoudige JavaScript-functie voor HTTP-aanvragen

Een functie is een geëxporteerde asynchrone functie met aanvraag- en contextinformatie. In de volgende gedeeltelijke schermopname van Azure Portal ziet u de functiecode.

Gebruik een van de volgende v4-programmeermodelvoorbeelden als uitgangspunt voor uw functieproject.

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
});

Nadat de app is opgestart, gaat u naar http://localhost:7071/api/status om het eindpunt lokaal te testen.

Functies lokaal ontwikkelen met Visual Studio Code en extensies

Maak uw eerste functie met Visual Studio Code. Visual Studio Code vereenvoudigt veel van de details met de Azure Functions-extensie.

Deze extensie helpt u bij het maken van JavaScript- en TypeScript-functies met algemene sjablonen.

Integreren met andere Azure-services

Serverloze functies verwijderen veel van de serverconfiguratie en -beheer, zodat u zich kunt richten op alleen de code die u nodig hebt.

  • Functies met weinig code: Met Azure Functions maakt u functies die worden geactiveerd door andere Azure-services of die worden uitgevoerd naar andere Azure-services met behulp van triggerbindingen. Het v4-programmeermodel registreert alle triggers en bindingen rechtstreeks in uw code, waardoor het configuratietype veilig en intuïtief is.
  • Functies met hoge code: Voor meer controle gebruikt u de Azure SDK's om andere Azure-services te coördineren en te beheren. Gebruik beheerde identiteiten om uw functies veilig te verifiëren met andere Azure-resources zonder referenties te beheren.

Volgende stappen