Sdílet prostřednictvím


Vytváření a správa aplikací funkcí v plánu Flex Consumption

V tomto článku se dozvíte, jak vytvářet aplikace funkcí hostované v plánu Flex Consumption ve službě Azure Functions. Dozvíte se také, jak spravovat určité funkce hostované aplikace plánu Flex Consumption.

Prostředky aplikace funkcí jsou specifické pro jazyk. Nezapomeňte si vybrat upřednostňovaný vývojový jazyk kódu na začátku článku.

Důležité

Plán Flex Consumption je aktuálně ve verzi Preview.

Požadavky

Vytvoření aplikace Flex Consumption

V této části se dozvíte, jak vytvořit aplikaci funkcí v plánu Flex Consumption pomocí Azure CLI, webu Azure Portal nebo editoru Visual Studio Code. Příklad vytvoření aplikace v plánu Flex Consumption pomocí šablon Bicep/ARM najdete v úložišti Flex Consumption.

Pokud se rozhodnete místo toho vytvořit a nasadit aplikaci pomocí Mavenu, můžete tuto část přeskočit.

Pokud chcete podporovat kód funkce, musíte vytvořit tři prostředky:

  • Skupina prostředků, což je logický kontejner pro související prostředky.
  • Účet úložiště, který slouží k udržování stavu a dalších informací o vašich funkcích.
  • Aplikace funkcí v plánu Flex Consumption, která poskytuje prostředí pro spouštění kódu funkce. Aplikace funkcí se mapuje na místní projekt funkcí a umožňuje seskupit funkce jako logickou jednotku pro snadnější správu, nasazení a sdílení prostředků v plánu Flex Consumption.
  1. Pokud jste to ještě neudělali, přihlaste se k Azure:

    az login
    

    Příkaz az login vás přihlásí ke svému účtu Azure.

  2. az functionapp list-flexconsumption-locations Pomocí příkazu zkontrolujte seznam oblastí, které aktuálně podporují Flex Consumption.

    az functionapp list-flexconsumption-locations --output table
    
  1. Vytvořte skupinu prostředků v jedné z aktuálně podporovaných oblastí:

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    Ve výše uvedeném příkazu nahraďte <RESOURCE_GROUP> hodnotou jedinečnou ve vašem předplatném a <REGION> jednou z aktuálně podporovanýchoblastích Příkaz az group create vytvoří skupinu prostředků.

  2. Ve skupině prostředků a oblasti vytvořte účet úložiště pro obecné účely:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
    

    V předchozím příkladu nahraďte <STORAGE_NAME> názvem, který je pro vás a jedinečný v Azure Storage. Názvy musí obsahovat jenom číslice se třemi až 24 znaky a malými písmeny. Standard_LRS určuje účet pro obecné účely, který služba Functions podporuje. Příkaz az storage account create vytvoří účet úložiště.

    Důležité

    Účet úložiště slouží k ukládání důležitých dat aplikace, někdy včetně samotného kódu aplikace. Přístup z jiných aplikací a uživatelů byste měli omezit na účet úložiště.

  3. Vytvoření aplikace funkcí v Azure:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0 
    

    Aplikace jazyka C#, které běží v procesu , se v současné době nepodporují při spuštění v plánu Flex Consumption.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17 
    

    Pro aplikace v Javě se v současné době podporuje také Java 11.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    Pro aplikace v Pythonu se v současné době podporuje také Python 3.10.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4 
    

    V tomto příkladu nahraďte <RESOURCE_GROUP> <STORAGE_NAME> skupinu prostředků a názvem účtu, který jste použili v předchozím kroku. Nahraďte <APP_NAME> také globálně jedinečný název, který je pro vás vhodný. Jedná se <APP_NAME> také o výchozí doménu dns (domain name server) pro aplikaci funkcí. Příkaz az functionapp create vytvoří aplikaci funkcí v Azure.

    Tento příkaz vytvoří aplikaci funkcí spuštěnou v plánu Flex Consumption. Použitá konkrétní verze modulu runtime jazyka je verze, která je aktuálně podporována ve verzi Preview.

    Vzhledem k tomu, že jste aplikaci vytvořili bez zadání vždy připravených instancí, za vaši aplikaci se účtují pouze náklady při aktivním spouštění funkcí. Příkaz také vytvoří přidruženou instanci Aplikace Azure lication Insights ve stejné skupině prostředků, pomocí které můžete monitorovat aplikaci funkcí a zobrazit protokoly. Další informace najdete v tématu Monitorování azure Functions.

    
    

Nasazení projektu kódu

Pokud se rozhodnete místo toho vytvořit a nasadit aplikaci pomocí Mavenu, můžete tuto část přeskočit.

Kód projektu můžete nasadit do existující aplikace funkcí pomocí různých nástrojů:

Důležité

Nasazení do existující aplikace funkcí vždy přepíše obsah této aplikace v Azure.

  1. Na paletě příkazů zadejte a pak vyberte Azure Functions: Nasadit do aplikace funkcí.

  2. Vyberte aplikaci funkcí, kterou jste právě vytvořili. Po zobrazení výzvy k přepsání předchozích nasazení vyberte Nasadit a nasaďte kód funkce do nového prostředku aplikace funkcí.

  3. Po dokončení nasazení vyberte Zobrazit výstup a zobrazte výsledky vytváření a nasazení, včetně prostředků Azure, které jste vytvořili. Pokud oznámení vynecháte, vyberte ikonu zvonku v pravém dolním rohu a znovu ho zobrazíte.

    Snímek obrazovky s oknem Zobrazit výstup

Vytvoření a nasazení aplikace pomocí Mavenu

Maven můžete použít k vytvoření aplikace funkcí hostované službou Flex Consumption a požadovaných prostředků během nasazování úpravou souboru pom.xml.

  1. Vytvořte projekt kódu Java dokončením první části jednoho z těchto článků rychlého startu:

  2. V projektu kódu v Javě otevřete soubor pom.xml a proveďte tyto změny a vytvořte aplikaci funkcí v plánu Flex Consumption:

    • Změňte hodnotu <properties>.<azure.functions.maven.plugin.version> na 1.34.0.

    • <plugin>.<configuration> V části pro azure-functions-maven-plugin, přidejte nebo odkomentujte <pricingTier> prvek následujícím způsobem:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (Volitelné) Přizpůsobte plán Flex Consumption v nasazení Mavenu také zahrnutím těchto prvků v <plugin>.<configuration> části: .

    • <instanceSize> – nastaví velikost paměti instance pro aplikaci funkcí. Výchozí hodnota je 2048.
    • <maximumInstances> – nastaví nejvyšší hodnotu pro maximální počet instancí aplikace funkcí.
    • <alwaysReadyInstances> – nastaví počet instancí vždy připravených s podřízenými elementy pro skupiny triggerů HTTP (<http>), skupiny Durable Functions (<durable>) a další specifické triggery (<my_function>). Když nastavíte počet instancí větší než nula, budou se vám za tyto instance účtovat poplatky bez ohledu na to, jestli se vaše funkce spustí nebo ne. Další informace najdete v tématu Fakturace.
  4. Před nasazením se přihlaste ke svému předplatnému Azure pomocí Azure CLI.

    az login
    

    Příkaz az login vás přihlásí ke svému účtu Azure.

  5. Pomocí následujícího příkazu nasaďte projekt kódu do nové aplikace funkcí ve funkci Flex Consumption.

    mvn azure-functions:deploy
    

    Maven používá nastavení v šabloně pom.xml k vytvoření aplikace funkcí v plánu Flex Consumption v Azure spolu s dalšími požadovanými prostředky. Pokud už tyto prostředky existují, kód se nasadí do vaší aplikace funkcí a přepíše všechny existující kódy.

Povolení integrace virtuální sítě

Integraci virtuální sítě pro vaši aplikaci můžete povolit v plánu Flex Consumption. Příklady v této části předpokládají, že už máte ve svém účtu vytvořenou virtuální síť s podsítí . Integraci virtuální sítě můžete povolit při vytváření aplikace nebo později.

Důležité

Plán Flex Consumption v současné době nepodporuje podsítě s názvy, které obsahují podtržítka (_).

Povolení virtuálních sítí při vytváření aplikace:

Integraci virtuální sítě můžete povolit spuštěním az functionapp create příkazu a zahrnutím --vnet parametrů.--subnet

  1. Pokud jste to ještě neudělali, vytvořte virtuální síť a podsíť.

  2. Proveďte kroky 1 až 4 v části Vytvoření aplikace Flex Consumption a vytvořte prostředky, které vaše aplikace vyžaduje.

  3. az functionapp create Spusťte příkaz, včetně parametrů--vnet, --subnet jako v tomto příkladu:

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
    

    Hodnota <VNET_RESOURCE_ID> je ID prostředku pro virtuální síť, která je ve formátu: /subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCER_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. Tento příkaz můžete použít k získání seznamu ID virtuální sítě filtrované podle <RESOURCE_GROUP>: az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.

Kompletní příklady vytváření aplikací ve službě Flex Consumption s integrací virtuální sítě najdete v těchto zdrojích informací:

Úprava nebo odstranění integrace virtuální sítě v existující aplikaci:

az functionapp vnet-integration add Pomocí příkazu povolte integraci virtuální sítě do existující aplikace funkcí:

az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>

az functionapp vnet-integration remove Pomocí příkazu zakažte integraci virtuální sítě v aplikaci:

az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>

az functionapp vnet-integration list Pomocí příkazu zobrazte seznam aktuálních integrací virtuálních sítí pro vaši aplikaci:

az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Při výběru podsítě platí tyto aspekty:

  • Zvolená podsíť se už nedá použít pro jiné účely, například s privátními koncovými body nebo koncovými body služby, ani delegovat na jiný plán hostování nebo službu.
  • Stejnou podsíť můžete sdílet s více než jednou aplikací spuštěnou v plánu Flex Consumption. Vzhledem k tomu, že síťové prostředky jsou sdíleny napříč všemi aplikacemi, může jedna aplikace funkcí ovlivnit výkon ostatních ve stejné podsíti.
  • V plánu Flex Consumption může jedna aplikace funkcí používat až 40 IP adres, i když se aplikace škáluje nad 40 instancí. I když je toto pravidlo užitečné při odhadu velikosti podsítě, kterou potřebujete, přísně se nevynucuje.

Konfigurace nastavení nasazení

V plánu Flex Consumption se balíček pro nasazení, který obsahuje kód vaší aplikace, udržuje v kontejneru Azure Blob Storage. Nasazení ve výchozím nastavení používají stejný účet úložiště (AzureWebJobsStorage) a připojovací řetězec hodnotu používanou modulem runtime služby Functions k údržbě aplikace. Připojovací řetězec se uloží v DEPLOYMENT_STORAGE_CONNECTION_STRING nastavení aplikace. Místo toho ale můžete jako zdroj nasazení pro váš kód určit kontejner objektů blob v samostatném účtu úložiště. Můžete také změnit metodu ověřování použitou pro přístup k kontejneru.

Přizpůsobený zdroj nasazení by měl splňovat tato kritéria:

  • Účet úložiště už musí existovat.
  • Kontejner, který se má použít pro nasazení, musí existovat také.
  • Pokud více než jedna aplikace používá stejný účet úložiště, měl by mít každý vlastní kontejner nasazení. Použití jedinečného kontejneru pro každou aplikaci zabraňuje přepsání balíčků nasazení, což by se stalo v případě, že aplikace sdílejí stejný kontejner.

Při konfiguraci ověřování úložiště nasazení mějte na paměti tyto aspekty:

  • Když použijete připojovací řetězec pro připojení k účtu úložiště nasazení, musí už existovat nastavení aplikace obsahující připojovací řetězec.
  • Když použijete spravovanou identitu přiřazenou uživatelem, zadaná identita se propojila s aplikací funkcí. Role Storage Blob Data Contributor vymezená na účet úložiště nasazení se také přiřadí identitě.
  • Když používáte spravovanou identitu přiřazenou systémem, vytvoří se identita, když v aplikaci ještě neexistuje platná identita přiřazená systémem. Pokud existuje identita přiřazená systémem, Storage Blob Data Contributor role vymezená na účet úložiště nasazení se také přiřadí k identitě.

Konfigurace nastavení nasazení při vytváření aplikace funkcí v plánu Flex Consumption:

az functionapp create Použijte příkaz a zadejte tyto další možnosti, které přizpůsobují úložiště nasazení:

Parametr Popis
--deployment-storage-name Název účtu úložiště pro nasazení.
--deployment-storage-container-name Název kontejneru v účtu, který bude obsahovat balíček nasazení vaší aplikace.
--deployment-storage-auth-type Typ ověřování, který se má použít pro připojení k účtu úložiště nasazení. Mezi přijaté hodnoty patří StorageAccountConnectionString, UserAssignedIdentitya SystemAssignedIdentity.
--deployment-storage-auth-value Při použití StorageAccountConnectionStringje tento parametr nastaven na název nastavení aplikace, které obsahuje připojovací řetězec do účtu úložiště nasazení. Při použití UserAssignedIdentityje tento parametr nastaven na název ID prostředku identity, kterou chcete použít.

Tento příklad vytvoří aplikaci funkcí v plánu Flex Consumption s odděleným účtem úložiště nasazení a identitou přiřazenou uživatelem:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>

Můžete také upravit konfiguraci úložiště nasazení pro existující aplikaci.

az functionapp deployment config set Pomocí příkazu upravte konfiguraci úložiště nasazení:

az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>

Konfigurace paměti instance

Velikost paměti instance, kterou používá váš plán Flex Consumption, se dá explicitně nastavit při vytváření aplikace. Další informace opodporovaných

Nastavení velikosti paměti instance, která se při vytváření aplikace liší od výchozího nastavení:

--instance-memory Zadejte parametr v az functionapp create příkazu. Tento příklad vytvoří aplikaci v jazyce C# s velikostí 4096instance:

az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0

Kdykoli můžete změnit nastavení velikosti paměti instance používané vaší aplikací.

Tento příklad používá az functionapp scale config set příkaz ke změně nastavení velikosti paměti instance na 4 096 MB:

az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 4096

Nastavení vždy připravených počtů instancí

Můžete nastavit řadu vždy připravených instancí pro skupiny škálování pro jednotlivé funkce nebo jednotlivé funkce, aby se vaše funkce načetly a byly připravené ke spuštění. Existují tři speciální skupiny, jak je znázorněno ve škálování jednotlivých funkcí:

  • http – všechny funkce aktivované protokolem HTTP v aplikaci se škálují společně do vlastních instancí.
  • durable – všechny funkce aktivované durable (Orchestration, Activity, Entity) v aplikaci se škálují společně do vlastních instancí.
  • blob – všechny funkce aktivované objektem blob (Event Grid) v aplikaci se škálují společně do vlastních instancí.

Použijte httpnebo durable blob jako název nastavení páru hodnot názvů ke konfiguraci vždy připravených počtů pro tyto skupiny. Pro všechny ostatní funkce v aplikaci musíte nakonfigurovat vždy připravené pro každou jednotlivou funkci pomocí formátu function:<FUNCTION_NAME>=n.

Pomocí parametru --always-ready-instances s příkazem az functionapp create definujte jedno nebo více vždy připravených označení instancí. Tento příklad nastaví počet instancí vždy připravených pro všechny funkce aktivované protokolem HTTP na 5:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10

Tento příklad nastaví počet instancí vždy připravených pro všechny funkce 3 triggeru Durable a nastaví počet instancí vždy připravených na 2 funkci aktivovanou službou Service Bus s názvem function5:

az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2

Můžete také upravit vždy připravené instance v existující aplikaci přidáním nebo odebráním označení instancí nebo změnou počtu označení existujících instancí.

V tomto příkladu se az functionapp scale config always-ready set pomocí příkazu změní počet instancí vždy připravených pro skupinu triggerů HTTP na 10:

az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10

Pokud chcete odebrat vždy připravené instance, použijte az functionapp scale config always-ready delete příkaz, jako v tomto příkladu, který odebere všechny vždy připravené instance ze skupiny triggerů HTTP i funkci s názvem hello_world:

az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world

Nastavení limitů souběžnosti HTTP

Pokud nenastavíte konkrétní omezení, výchozí hodnoty souběžnosti HTTP pro aplikace plánu Flex Consumption se určují na základě nastavení velikosti instance. Další informace najdete v tématu Souběžnost triggeru HTTP.

Tady je postup, jak nastavit limity souběžnosti HTTP pro existující aplikaci:

az functionapp scale config set Pomocí příkazu můžete nastavit konkrétní limity souběžnosti HTTP pro vaši aplikaci bez ohledu na velikost instance.

az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10

Tento příklad nastaví úroveň souběžnosti triggeru HTTP na 10. Jakmile konkrétně nastavíte hodnotu souběžnosti HTTP, tato hodnota se zachová i přes všechny změny v nastavení velikosti instance vaší aplikace.

Zobrazení aktuálně podporovaných oblastí

Ve verzi Preview můžete spustit pouze v plánu Flex Consumption ve vybraných oblastech. Zobrazení seznamu oblastí, které aktuálně podporují plány Flex Consumption:

  1. Pokud jste to ještě neudělali, přihlaste se k Azure:

    az login
    

    Příkaz az login vás přihlásí ke svému účtu Azure.

  2. az functionapp list-flexconsumption-locations Pomocí příkazu zkontrolujte seznam oblastí, které aktuálně podporují Flex Consumption.

    az functionapp list-flexconsumption-locations --output table
    

Při vytváření aplikace na webu Azure Portal nebo pomocí editoru Visual Studio Code se aktuálně nepodporované oblasti vyfiltrují ze seznamu oblastí.