Vývoj bezserverových aplikací Node.js s využitím Azure Functions

Sestavte a spusťte rozhraní HTTP API a aplikace řízené událostmi Node.js pomocí Azure Functions. Pak pomocí zbytku tohoto článku zvolte správnou cestu hostování bez serveru a cesty integrace pro vaši aplikaci.

Co je prostředek aplikace funkcí?

Aplikace funkcí je logická jednotka pro nasazení a spouštění kódu funkcí v jednom prostředku Azure v konkrétní zeměpisné oblasti. Prostředek může obsahovat jednu funkci nebo mnoho funkcí, které se spouští nezávisle na sobě, ale sdílejí stejné výpočetní prostředky, připojení a nastavení. Funkce nabízí celou řadu šablon založených na triggerech, které vám pomůžou rychle začít. Můžete přidat kód a potenciálně další výstupní a vstupní vazby.

Mezi nastavení prostředků aplikace funkcí patří běžné bezserverové konfigurace, jako jsou proměnné prostředí, ověřování, protokolování a CORS.

Trvalé stavové funkce

Zatímco spouštění funkcí v Azure je ze své podstaty bezstavové, Durable Functions uchovávají stav a spravují dlouhotrvající funkce v Azure. Použijte je, když potřebujete orchestrace, opakované pokusy nebo vícekrokové pracovní postupy, které přesahují trvání jednoho požadavku. Pokud chcete začít, přečtěte si téma Vytvoření první odolné funkce v JavaScriptu.

Statické webové aplikace zahrnují funkce.

Když vyvíjíte statickou front-endovou klientskou aplikaci (například Angular, React nebo Vue), která také potřebuje bezserverová rozhraní API, použijte statické webové aplikace s funkcemi, které obě spojí dohromady.

Proxy z klientské aplikace do rozhraní API

Pokud máte v úmyslu nasadit rozhraní API se statickou webovou aplikací, nepotřebujete proxy volání rozhraní API klientské aplikace. Proxy se pro vás nastaví, když nasadíte aplikaci Function App jako spravovanou aplikaci.

Když místně vyvíjíte statickou webovou aplikaci pomocí Azure Functions, Azure Static Web Apps CLI poskytuje místní proxy server.

Běžná nastavení zabezpečení, která je potřeba nakonfigurovat pro funkci Azure Functions

Aby byla vaše funkce Azure Functions zabezpečená, měla by být nakonfigurovaná následující běžná nastavení:

  • Ověřování a autorizace:
    • K robustnímu ověřování použijte Microsoft Entra ID (dříve Azure Active Directory). Nakonfigurujte aplikaci funkcí tak, aby pro produkční úlohy vyžadovala tokeny OAuth2.
    • Nepoužívejte klíče funkcí pro citlivé aplikace. Místo toho se integrujte s Microsoft Entra ID nebo ověřte tokeny JWT v kódu funkce.
    • Pomocí spravovaných identit ověřte aplikaci funkcí s jinými prostředky Azure a zajistěte, aby každá funkce získala přístup jenom k tomu, co potřebuje.
  • Nastavení konfigurace:
    • Nastavení aplikace – vytvořte nastavení aplikace pro nastavení, která nemají vliv na zabezpečení.
    • Tajné kódy a klíče – pro všechna nastavení, která mají vliv na zabezpečení, použijte tento vrstvený přístup:
      1. Nejprve použijte ID Microsoft Entra pro ověřování, kde je podporováno.
      2. Pro integrace, které nepodporují ID Entra, ukládejte tajné kódy ve službě Azure Key Vault a načítejte tato nastavení ze služby Key Vault.
      3. Nikdy nevkládejte tajné kódy do kódu nebo konfiguračních souborů.
    • Další nastavení zabezpečení platformy najdete v tématu Zabezpečení azure Functions.
  • Zabezpečení sítě:
    • CORS – nakonfigurujte své klientské domény. Nepoužívejte *, označující všechny domény.
    • Integrace virtuální sítě – použití privátních koncových bodů nebo integrace virtuální sítě k omezení ohrožení sítě a omezení příchozího provozu z důvěryhodných zdrojů
  • HTTPS a šifrování:
    • Nastavení PROTOKOLU TLS/SSL pro PROTOKOL HTTPS – ve výchozím nastavení vaše rozhraní API přijímá požadavky HTTP a HTTPS. Povolte https pouze v nastavení PROTOKOLU TLS/SSL. Protože je vaše aplikace Function App hostovaná v zabezpečené subdoméně (*.azurewebsites.net), můžete ji začít ihned používat (s https) a odložit nákup názvu domény i použití certifikátu pro danou doménu, dokud nebudete připraveni.
  • Nasazení a monitorování:
    • Sloty pro nasazení – vytvořte slot pro nasazení, například stage nebo preflight, a nasaďte do tohoto slotu. Jakmile budete připraveni, prohodíte tento slot fáze do produkčního prostředí. Nezvykněte si ručně nasazovat do produkce. Vaše kódová základna by měla být schopna udávat verzi nebo commit, který je na slotu. Pokud používáte Flex Consumption, místo slotů používejte nasazení s nulovými výpadky .
    • Povolte Application Insights pro telemetrii, upozorňování a detekci anomálií v reálném čase, abyste mohli monitorovat funkce a protokoly auditu pro podezřelé aktivity.

Podrobné pokyny k zabezpečení najdete v tématu Zabezpečení služby Azure Functions.

Možnosti hostitele pro Azure Functions

Azure Functions můžete hostovat různými způsoby v závislosti na vašich požadavcích:

Plány hostování prostředků pro Azure Functions

Když vytvoříte prostředek aplikace funkcí, vyberte si z těchto plánů hostování pro Functions:

  • Plán Consumption (starší verze):Platíte jenom za čas, kdy vaše funkce běží s automatickým škálováním.
  • Plán Flex Consumption: Poskytuje vylepšenou kontrolu s instancemi, které jsou vždy připravené k omezení studených startů, integrace virtuální sítě a konfigurovatelných velikostí instancí (512 MB až 4 GB). Tento plán se doporučuje pro nové linuxové úlohy vyžadující funkce podnikového zabezpečení a výkonu. Tento plán používá fakturaci založenou na provádění, která je podobná plánu Consumption, ale s dalšími náklady na funkce, jako jsou vždy připravené instance.
  • Plán Premium: Poskytuje vylepšený výkon s předem připravenými instancemi, připojením k virtuální síti a delší dobou provádění.
  • Vyhrazený plán (App Service): Spouštění funkcí na vyhrazených virtuálních strojích pro předvídatelné náklady a úplnou kontrolu nad běhovým prostředím.

Další informace o výběru správného plánu hostování najdete v tématu Možnosti hostování azure Functions.

Prostředek Azure Container Apps

Alternativně můžete službu Azure Functions nasadit do prostředku Azure Container Apps jako kontejnerizované úlohy. Tato možnost poskytuje úplnou kontrolu nad prostředím kontejneru a je ideální v případě, že potřebujete vlastní závislosti, dlouhotrvající procesy nebo chcete kombinovat funkce s jinými kontejnerizovanými mikroslužbami. Další informace najdete v článku Přehled Azure Functions v Azure Container Apps.

Předpoklady pro vývoj azure Functions

  • Node.js LTS – Pro zajištění nejlepší kompatibility a aktualizací zabezpečení pomocí azure Functions použijte nejnovější verzi dlouhodobé podpory (LTS).
  • Azure Functions Core Tools – Použijte aktuální hlavní verzi pro místní vývoj a ladění.

Jednoduchá funkce JavaScriptu pro požadavky HTTP

Funkce je exportovaná asynchronní funkce s informacemi o požadavku a kontextu. Následující částečný snímek obrazovky webu Azure Portal ukazuje kód funkce.

Jako výchozí bod projektu funkcí použijte jeden z následujících příkladů programovacího modelu v4.

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

Po spuštění aplikace přejděte na http://localhost:7071/api/status a otestujte endpoint lokálně.

Místní vývoj funkcí pomocí editoru Visual Studio Code a rozšíření

Vytvořte první funkci pomocí editoru Visual Studio Code. Visual Studio Code zjednodušuje mnoho podrobností pomocí rozšíření Azure Functions.

Toto rozšíření vám pomůže vytvářet funkce JavaScriptu a TypeScriptu s běžnými šablonami.

Integrace s ostatními službami Azure

Bezserverové funkce odeberou většinu konfigurace a správy serveru, abyste se mohli soustředit jenom na kód, který potřebujete.

  • Funkce s nízkým kódem: Pomocí Azure Functions vytvoříte funkce aktivované jinými službami Azure nebo výstupem do jiných služeb Azure pomocí vazeb triggerů. Programovací model v4 registruje všechny triggery a vazby přímo ve vašem kódu, což zajišťuje bezpečnou a intuitivní konfiguraci typů.
  • Funkce s vysokým kódem: Pro větší kontrolu použijte sady Azure SDK ke koordinaci a řízení dalších služeb Azure. Pomocí spravovaných identit můžete bezpečně ověřovat funkce s jinými prostředky Azure bez správy přihlašovacích údajů.

Další kroky