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.
Požadavky
Účet Azure s aktivním předplatným. Pokud ho ještě nemáte, můžete si zdarma vytvořit účet.
Azure CLI: Slouží k vytváření a správě prostředků v Azure. Při použití Azure CLI na místním počítači nezapomeňte použít verzi 2.60.0 nebo novější. Můžete také použít Azure Cloud Shell, který má správnou verzi Azure CLI.
Visual Studio Code: slouží k vytváření a vývoji aplikací, vytváření prostředků Azure a nasazování projektů kódu do Azure. Při použití editoru Visual Studio Code nezapomeňte nainstalovat také nejnovější rozšíření Azure Functions. Můžete také nainstalovat balíček rozšíření Azure Tools.
I když není nutné vytvořit aplikaci plánu Flex Consumption, potřebujete projekt kódu, abyste mohli nasadit a ověřit novou aplikaci funkcí. Dokončete první část jednoho z těchto článků rychlého startu, kde vytvoříte projekt kódu s funkcí aktivovanou protokolem HTTP:
- Vytvoření projektu Azure Functions z příkazového řádku
- Vytvoření projektu Azure Functions pomocí editoru Visual Studio Code
Pokud chcete vytvořit aplikaci v novém plánu Flex Consumption během nasazení Mavenu, musíte vytvořit místní projekt aplikace a pak aktualizovat soubor pom.xml projektu. Další informace najdete v tématu Vytvoření aplikace Java Flex Consumption pomocí Mavenu.
Po vytvoření a spuštění místního projektu se vraťte k tomuto článku, ale před zobrazením výzvy k vytvoření prostředků Azure. Aplikaci funkcí a další prostředky Azure vytvoříte v další části.
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.
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.az functionapp list-flexconsumption-locations
Pomocí příkazu zkontrolujte seznam oblastí, které aktuálně podporují Flex Consumption.az functionapp list-flexconsumption-locations --output table
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ů.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ě.
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říkazaz functionapp create
vytvoří aplikaci funkcí v Azure.Tento příkaz vytvoří aplikaci funkcí spuštěnou v plánu Flex Consumption.
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.
Na paletě příkazů zadejte a pak vyberte Azure Functions: Nasadit do aplikace funkcí.
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í.
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.
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.
Vytvořte projekt kódu Java dokončením první části jednoho z těchto článků rychlého startu:
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>
na1.34.0
.<plugin>.<configuration>
V části proazure-functions-maven-plugin
, přidejte nebo odkomentujte<pricingTier>
prvek následujícím způsobem:<pricingTier>Flex Consumption</pricingTier>
(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 je2048
.<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.
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.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
Pokud jste to ještě neudělali, vytvořte virtuální síť a podsíť.
Proveďte kroky 1 až 4 v části Vytvoření aplikace Flex Consumption a vytvořte prostředky, které vaše aplikace vyžaduje.
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/<RESOURCE_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í:
- Flex Consumption: HTTP to Event Hubs s využitím integrace virtuální sítě
- Flex Consumption: Aktivované ze služby Service Bus s využitím integrace virtuální sítě
Ú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 , UserAssignedIdentity a SystemAssignedIdentity . |
--deployment-storage-auth-value |
Při použití StorageAccountConnectionString je tento parametr nastaven na název nastavení aplikace, které obsahuje připojovací řetězec do účtu úložiště nasazení. Při použití UserAssignedIdentity je 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_ACCOUNT_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_ACCOUNT_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í 4096
instance:
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 http
nebo 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í
Zobrazení seznamu oblastí, které aktuálně podporují plány Flex Consumption:
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.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í.