Sdílet prostřednictvím


Vývoj bezserverových aplikací Node.js pomocí Azure Functions

Azure Functions poskytuje výkonnou bezserverovou infrastrukturu, která umožňuje snadno vyvíjet škálovatelné koncové body HTTP na vyžádání. Pomocí JavaScriptu nebo TypeScriptu můžete vytvářet bezserverové aplikace, které reagují na různé události, takže se můžete soustředit na psaní kódu, aniž byste se museli starat o správu serverů. Tato příručka vám pomůže začít s vývojem bezserverových Node.js aplikací pomocí Azure Functions a bezproblémovou integraci s dalšími službami Azure.

Co je prostředek funkce?

Prostředek funkce Azure je logická jednotka pro všechny související funkce v jednom geografickém umístění Azure. Prostředek může obsahovat jednu funkci nebo mnoho funkcí, které mohou být nezávislé na sobě nebo související se vstupními nebo výstupními vazbami. Můžete si vybrat z mnoha běžných funkcí nebo si vytvořit vlastní.

Nastavení prostředků funkce zahrnuje typické bezserverové konfigurace, včetně proměnných prostředí, ověřování, protokolování a CORS.

Odolné, stavové funkce

Durable Functions zachovává stav nebo spravuje dlouhotrvající funkce v Azure. Vytvořte svou první odolnou funkci 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í, nemusíte proxy volání rozhraní API klientské aplikace proxy. Proxy server se vytvoří za vás, když nasadíte aplikaci Azure Functions jako spravovanou aplikaci.

Když vyvíjíte místně pomocí statické webové aplikace a 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. Vzhledem k tomu, že je vaše aplikace funkcí hostovaná na zabezpečené subdoméně, můžete ji použít okamžitě (s https) a pozdržet nákup názvu domény a použít certifikát pro doménu, dokud nebudete připravení.
  • Nasazení a monitorování:
    • Sloty nasazení – vytvořte slot nasazení, například stage nebo preflight nasdílení změn do tohoto slotu. Jakmile budete připraveni, prohodíte tento slot fáze do produkčního prostředí. Nenechte se zvykem ručně tlačit do produkce. Základ kódu by měl být schopen indikovat verzi nebo potvrzení, které je v slotu.
    • 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 hostování 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

Při vytváření prostředku Azure Functions si můžete vybrat z těchto plánů hostování:

  • Plán spotřeby: Platíte pouze 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. Všimněte si, že tento plán používá fakturaci založenou na provádění, podobně jako plán Spotřeba, ale s dalšími náklady na funkce, jako jsou trvale 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 části hostování Azure Functions prostřednictvím 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.

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

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ů.