Důležité informace o úložišti pro Azure Functions

Když v Azure vytvoříte instanci aplikace funkcí, musíte poskytnout přístup k výchozímu účtu Azure Storage. Následující diagram a tabulka podrobně popisuje, jak Azure Functions používá služby ve výchozím účtu úložiště:

Diagram ukazující, jak Azure Functions používá různé služby úložiště v rámci účtu Azure Storage, včetně úložiště objektů blob, sdílené složky souborů, služby Queue Storage a Table Storage.

Služba úložiště Využití funkcí
Azure Blob Storage Udržování stavu vazeb a funkčních klíčů1
Zdroj nasazení pro aplikace, které běží v plánu Flex Consumption.
Ve výchozím nastavení se používá pro centra úloh v Durable Functions.
Dá se použít k ukládání kódu aplikace funkcí pro Linux Consumption pro vzdálené sestavení nebo jako součást nasazení externího balíčku prostřednictvím URL.
Azure Files2 Souborové úložiště použité k ukládání a spouštění kódu vaší funkční aplikace v Consumption Plánu a Premium Plánu.
Udržujte sady rozšíření.
Ukládat protokoly nasazení.
Podporuje spravované závislosti v PowerShellu.
Azure Queue Storage Ve výchozím nastavení se používá pro centra úloh v Durable Functions. Používá se pro zpracování chyb a opakované spuštění ve specifických triggerech Azure Functions. Používá se ke sledování objektů spuštěných triggerem úložiště objektů blob .
Azure úložiště tabulek Ve výchozím nastavení se používá pro centra úloh v Durable Functions.
Používá se ke sledování diagnostických událostí.
  1. Úložiště objektů blob je výchozím úložištěm pro klíče funkcí, ale můžete nakonfigurovat alternativní úložiště.
  2. Azure Files je ve výchozím nastavení nastavená, ale za určitých podmínek můžete vytvořit aplikaci bez Azure Files.

Důležitá poznámka

Musíte zvážit následující fakta týkající se účtů úložiště používaných vašimi aplikacemi funkcí:

  • Pokud je vaše funkční aplikace hostovaná v plánu spotřeby nebo prémiového plánu, kód funkce a konfigurační soubory jsou uloženy v Azure Files v propojeném účtu úložiště. Když odstraníte tento účet úložiště, obsah se odstraní a nedá se obnovit. Další informace najdete v tématu Účet úložiště byl smazán.

  • Důležitá data, jako je kód funkce, přístupové klíče a další důležitá data související se službou, se uchovávají v účtu úložiště. Přístup k účtům úložiště používaným aplikacemi funkcí musíte pečlivě spravovat následujícími způsoby:

    • Auditujte a omezte přístup aplikací a uživatelů k účtu úložiště na základě modelu s nejnižšími oprávněními. Oprávnění k účtu úložiště mohou pocházet z datových akcí v přiřazené roli nebo prostřednictvím oprávnění k provedení operace listKeys.

    • Monitorujte jak aktivitu řídicí roviny (například načítání klíčů), tak operace roviny dat (například zápis do objektu blob) v účtu úložiště. Zvažte údržbu protokolů úložiště v jiném umístění než v Azure Storage. Další informace najdete v tématu Logy úložiště.

Požadavky na účet úložiště

Účty úložiště, které vytvoříte během procesu vytváření aplikace funkcí na portálu Azure, pracují s novou aplikací funkcí. Pokud se rozhodnete použít existující účet úložiště, uvedený seznam neobsahuje některé nepodporované účty úložiště. Následující omezení platí pro účty úložiště používané vaší aplikací funkcí. Ujistěte se, že existující účet úložiště splňuje tyto požadavky:

  • Typ účtu musí podporovat službu Blob, Queue a Table Storage. Některé účty úložiště nepodporují fronty a tabulky. Mezi tyto účty patří účty úložiště pouze pro objekty blob a Azure Premium Storage. Další informace o typech účtů úložiště najdete v tématu Přehled účtu úložiště.

  • Účet úložiště zajištěného sítí nemůžete použít, když je vaše aplikace funkcí hostovaná v Consumption plan.

  • Když vytvoříte aplikaci funkcí na portálu Azure, můžete zvolit jenom existující účet úložiště ve stejné oblasti jako aplikace funkcí, kterou vytvoříte. Tento požadavek je optimalizace výkonu, nikoli striktní omezení. Další informace najdete v tématu Umístění účtu úložiště.

  • Když vytvoříte aplikaci funkcí v plánu s povolenou podporou zóny dostupnosti , podporují se jenom účty zónově redundantního úložiště .

Pokud k vytvoření aplikace funkcí s síťově zabezpečeným účtem úložiště používáte automatizaci nasazení, musíte do šablony ARM nebo souboru Bicep zahrnout konkrétní síťové konfigurace. Pokud tato nastavení a prostředky nezahrnete, vaše automatizované nasazení může selhat při ověřování. Pokyny k šablonám ARM a Bicep viz Zabezpečená nasazení. Přehled konfigurace účtů úložiště se sítěmi najdete v tématu Použít zabezpečený účet úložiště s Azure Functions.

Pokyny k účtu úložiště

Každá funkční aplikace vyžaduje účet úložiště k provozu. Když tento účet odstraníte, aplikace funkcí přestane běžet. Informace o řešení potíží souvisejících s úložištěm najdete v tématu Řešení potíží souvisejících s úložištěm. Následující aspekty platí pro účet úložiště používaný aplikacemi funkcí.

Umístění účtu úložiště

Pro zajištění nejlepšího výkonu by vaše aplikace funkcí měla používat účet úložiště ve stejné oblasti, což snižuje latenci. Tento osvědčený postup vynucuje portál Azure. Pokud potřebujete použít účet úložiště v jiné oblasti než vaše aplikace funkcí, musíte aplikaci funkcí vytvořit mimo portál Azure.

Účet úložiště musí být přístupný k funkční aplikaci. Pokud potřebujete použít zabezpečený účet úložiště, zvažte omezení účtu úložiště na virtuální síť.

Nastavení připojení k účtu úložiště

Aplikace funkcí standardně konfigurují připojení AzureWebJobsStorage jako připojovací řetězec uložený v nastavení aplikace AzureWebJobsStorage. AzureWebJobsStorage můžete také nakonfigurovat tak, aby používala připojení založené na identitě bez tajného kódu.

Aplikace funkcí běžící v plánu Consumption (jenom Windows) nebo plán Elastic Premium (Windows nebo Linux) můžou používat Azure Files k ukládání imagí potřebných k povolení dynamického škálování. Pro tyto plány nastavte připojovací řetězec pro účet úložiště v nastavení WEBSITE_CONTENTAZUREFILECONNECTIONSTRING a název sdílené složky v nastavení WEBSITE_CONTENTSHARE. Tato hodnota je obvykle stejný účet, který se používá pro AzureWebJobsStorage. Můžete také vytvořit aplikaci funkcí, která nepoužívá Azure Files, ale škálování může být omezené.

Poznámka:

Když znovu vygenerujete klíče úložiště, musíte aktualizovat připojovací řetězec účtu úložiště. Další informace najdete v tématu Vytvoření účtu úložiště Azure.

Sdílené účty úložiště

Více funkčních aplikací může sdílet stejný účet úložiště bez jakýchkoli problémů. Například v Visual Studio můžete vyvíjet více aplikací pomocí emulátoru úložiště Azurite. V tomto případě emulátor funguje jako jeden účet úložiště dat. Stejný účet úložiště, který vaše aplikace funkcí používá, může také ukládat data vaší aplikace. Tento přístup ale není vždy vhodný v produkčním prostředí.

Možná budete muset použít samostatné účty úložiště, abyste se vyhnuli kolizím ID hostitele.

Aspekty zásad správy životního cyklu

Nepoužívejte zásady správy životního cyklu na účet Blob Storage používaný vaší funkcemi aplikace. Služba Functions používá úložiště objektů blob k zachování důležitých informací, jako jsou přístupové klíče funkce. Zásady můžou odebrat objekty blob, jako jsou klíče, které potřebuje hostitel funkcí. Pokud musíte použít zásady, vylučte kontejnery používané funkcí, které mají předponu azure-webjobs nebo scm.

Protokoly úložiště

Vzhledem k tomu, že kód funkce a klíče můžou být v účtu úložiště trvalé, je protokolování aktivity vůči účtu úložiště dobrým způsobem, jak monitorovat neoprávněný přístup. Azure Monitor záznamy prostředků je možné použít ke sledování událostí na datové rovině úložiště. Podrobnosti o konfiguraci a kontrole těchto protokolů najdete v tématu Monitoring Azure Storage.

Protokol aktivit Azure Monitor zobrazuje události řídicí roviny, včetně operace „listKeys“. Měli byste však také nakonfigurovat logy prostředků pro účet úložiště, abyste mohli sledovat následné použití klíčů nebo jiných operací datové roviny na základě identity. Měli byste mít alespoň povolenou kategorii protokolu StorageWrite, abyste mohli identifikovat změny dat mimo normální operace funkcí.

Pokud chcete omezit potenciální dopad široce pojatých oprávnění k úložišti, zvažte použití cíle mimo úložiště pro tyto záznamy, jako je například Log Analytics. Další informace najdete v tématu Monitoring Azure Blob Storage.

Optimalizace výkonu úložiště

Pokud chcete maximalizovat výkon, použijte pro každou aplikaci funkcí samostatný účet úložiště. Tento přístup je zvlášť důležitý, pokud máte aktivované funkce Durable Functions nebo Event Hubs, které generují velký objem transakcí úložiště. Pokud logika aplikace komunikuje s Azure Storage, ať už přímo (pomocí sady SDK služby Storage), nebo prostřednictvím jedné z vazeb úložiště, měli byste použít vyhrazený účet úložiště. Pokud máte například funkci aktivovanou centrem událostí, která zapisuje některá data do úložiště objektů blob, použijte dva účty úložiště: jeden pro aplikaci funkcí a druhý pro objekty blob, které funkce ukládá.

Konzistentní směrování prostřednictvím virtuálních sítí

Více funkčních aplikací hostovaných ve stejném plánu může také použít stejný úložný účet pro sdílenou složku obsahu Azure Files definovanou WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. Když tento účet úložiště zabezpečíte pomocí virtuální sítě, měly by všechny tyto aplikace (včetně slotů) používat stejnou hodnotu pro vnetContentShareEnabled (dříve WEBSITE_CONTENTOVERVNET) a stejnou konfiguraci integrace virtuální sítě, aby se zajistilo, že provoz bude konzistentně směrovat přes zamýšlenou virtuální síť. Neshoda v tomto nastavení mezi aplikacemi, které používají stejný účet úložiště Azure Files, může vést ke směrování provozu přes veřejné sítě. V této konfiguraci pravidla sítě účtu úložiště blokují přístup.

Práce s blobem

Klíčovým scénářem služby Functions je zpracování souborů v kontejneru objektů blob, jako je zpracování obrázků nebo analýza mínění. Další informace najdete v tématu Zpracování nahrávání souborů.

Aktivace v kontejneru objektů blob

Kód funkce můžete spustit několika způsoby na základě změn objektů blob v úložném kontejneru, jak je znázorněno v diagramu:

Diagram, který zobrazuje různé možnosti aktivace funkce při přidání nebo aktualizaci položek v kontejneru Blob Storage Azure.

Pomocí následující tabulky určete, který spouštěč funkce nejlépe vyhovuje vašim potřebám zpracování přidaných nebo aktualizovaných objektů blob v kontejneru.

Strategie Blob trigger (periodické dotazování) Trigger objektu blob (řízený událostmi) Aktivační událost fronty Spouštěč Event Gridu
Latence Vysoká (až 10 minut) Nízká Střední Nízká
Omezení účtu úložiště Účty určené pouze pro objekty blob nejsou podporovány¹ Obecné účely verze 1 nejsou podporovány. Žádná Obecné účely verze 1 nejsou podporovány.
Typ aktivační události úložiště blobů úložiště blobů Queue Storage Event Grid
Verze rozšíření Jakýkoli Úložiště v5.x+ Jakýkoli Jakýkoli
Zpracovává existující objekty blob. Ano Ne Ne Ne
Filtry Vzor názvu Blob Filtry událostí Není k dispozici Filtry událostí
Vyžaduje odběr události. Ne Ano Ne Ano
Podporuje plán Flex Consumption. Ne Ano Ano Ano
Podporuje high-scale² Ne Ano Ano Ano
Funguje s omezeními příchozího přístupu Ano Ne Ano Ano3
Popis Výchozí chování triggeru, které spoléhá na dotazování kontejneru na aktualizace. Další informace najdete v příkladech v referenčních informacích pro spouštěč úložiště objektů blob. Zpracovává události úložiště blobů z odběru událostí. Vyžaduje hodnotu parametru SourceEventGrid. Další informace najdete v tématu Tutorial: Aktivace Azure Functions u kontejnerů objektů blob pomocí odběru událostí. Řetězec názvu objektu blob je ručně přidán do fronty úložiště, když je objekt blob přidán do kontejneru. Trigger služby Queue Storage předá tuto hodnotu přímo do vstupního připojení (bindingu) úložiště objektů Blob ve stejné funkci. Poskytuje flexibilitu aktivace událostí kromě událostí, které pocházejí z kontejneru úložiště. Použijte, když potřebujete, aby také události jiného než úložiště spouštěly vaši funkci. Další informace naleznete v tématu Jak pracovat s triggery a vazbami v Event Gridu v Azure Functions.
  1. Vstupní a výstupní vazby blob storage podporují účty jen pro objekty blob.
  2. Vysoké škálování je možné volně definovat jako kontejnery, které mají více než 100 000 objektů blob nebo účty úložiště, které mají více než 100 aktualizací objektů blob za sekundu.
  3. Omezení příchozího přístupu můžete obejít tak, že odběr událostí doručuje události přes šifrovaný kanál ve veřejném prostoru IP adres pomocí známé identity uživatele. Další informace najdete v tématu Bezpečné doručování událostí pomocí spravovaných identit.

Šifrování dat úložiště

Azure Storage šifruje všechna neaktivní uložená data v účtu úložiště. Další informace najdete v tématu Azure Storage šifrování neaktivních uložených dat.

Ve výchozím nastavení se data šifrují pomocí Microsoft spravovaných klíčů. Pokud chcete mít větší kontrolu nad šifrovacími klíči, můžete zadat klíče spravované zákazníkem pro šifrování dat objektů blob a souborů. Tyto klíče musí být k dispozici v Azure Key Vault, aby služba Functions mohla získat přístup k účtu úložiště. Další informace najdete v tématu Šifrování neaktivních uložených dat aplikace pomocí klíčů spravovaných zákazníkem.

Uložení dat v regionu

Pokud všechna zákaznická data musí zůstat v jedné oblasti, musí být účet úložiště přiřazený k aplikaci funkcí takový, který má redundanci v rámci oblasti. Pro Azure Durable Functions je potřeba použít také účet redundantního úložiště v oblasti.

Jiná zákaznická data spravovaná platformou se ukládají pouze v rámci oblasti při hostování v App Service Environment s interním vyrovnáváním zatížení (ASE). Další informace najdete v tématu Redundance zón ASE.

Důležité informace o ID hostitele

Poznámka:

Úvahy o ID hostitele v této části se nevztahují při běhu vaší aplikace v „Flex Consumption plan“. V tomto plánu hostování se hodnota ID hostitele vytvoří způsobem, který zabrání těmto potenciálním problémům.

Funkce používá hodnotu ID hostitele jako způsob, jak jedinečně identifikovat konkrétní aplikaci funkcí v uložených artefaktech. Ve výchozím nastavení se toto ID automaticky vygeneruje z názvu aplikace funkcí a zkrátí se na prvních 32 znaků. Toto ID se pak použije při ukládání informací o korelaci a sledování jednotlivých aplikací v propojeném účtu úložiště. Pokud máte aplikace funkcí s názvy delšími než 32 znaky a pokud jsou prvních 32 znaků identické, může toto zkrácení vést k duplicitním hodnotám ID hostitele. Když dvě funkční aplikace se stejnými ID hostitelů používají tentýž účet pro ukládání dat, dochází ke kolizi ID hostitele, protože uložená data nelze jednoznačně přiřadit ke správné funkční aplikaci.

Poznámka:

Tento druh kolize ID hostitele může nastat mezi funkční aplikací v produkčním slotu a stejnou funkční aplikací v přípravném slotu, když oba sloty používají stejný účet úložiště.

Ve verzi 4.x modulu runtime funkce se zaprotokoluje chyba a host se zastaví, což vede k fatálnímu selhání. Další informace naleznete v tématu HostID Truncation může způsobit kolize.

Předcházení kolizím ID hostitele

Pomocí následujících strategií se můžete vyhnout kolizím ID hostitele:

  • Pro každou funkční aplikaci nebo slot zapojený do kolize použijte samostatný účet úložiště.
  • Přejmenujte jednu z funkčních aplikací na jméno kratší než 32 znaků, čímž změníte ID vypočítaného hostitele aplikace a tím odstraníte konflikt.
  • Nastavte explicitní ID hostitele pro jednu nebo více kolísajících aplikací. Další informace najdete v tématu Přepsání ID hostitele.

Důležité

Změna účtu úložiště přidruženého k existující aplikaci funkcí nebo změna ID hostitele aplikace může ovlivnit chování existujících funkcí. Trigger úložiště Blob například sleduje, zda byly zpracovány jednotlivé objekty blob tím, že zapisuje záznamy pod konkrétní cestou ID hostitele v úložišti. Když se změní ID hostitele nebo když nasměrujete na nový účet úložiště, může být dříve zpracované objekty blob možné znovu zpracovat.

Přepište ID hostitele

Pomocí nastavení AzureFunctionsWebHost__hostid můžete explicitně nastavit konkrétní ID hostitele pro vaši funkční aplikaci v nastavení aplikace. Další informace najdete v tématu AzureFunctionsWebHost__hostid.

Když dojde ke kolizi mezi sloty, musíte pro každý slot nastavit konkrétní ID hostitele, včetně produkčního slotu. Tato nastavení musíte také označit jako nastavení nasazení, aby nedošlo k jejich prohození. Informace o vytváření nastavení aplikace najdete v tématu Práce s nastavením aplikace.

Vytvoření aplikace bez Azure Files

Služba Azure Files poskytuje sdílený systém souborů, který podporuje scénáře ve velkém měřítku. Když vaše aplikace funkcí běží v plánu Elastic Premium nebo v Windows v plánu Consumption, ve výchozím nastavení se ve vašem účtu úložiště vytvoří sdílená složka Azure Files. Tuto sdílenou složku používá služba Functions k povolení určitých funkcí, jako je streamování protokolů. Používá se také jako umístění pro nasazení sdíleného balíčku, které zaručuje konzistenci nasazeného kódu funkce napříč všemi instancemi.

Aplikace funkcí hostované v plánech Premium a Consumption ve výchozím nastavení používají nasazení prostřednictvím zip, přičemž balíčky nasazení jsou uložené v této sdílené složce Azure. Tato část je relevantní pouze pro tyto plány hostování.

Použití Azure Files vyžaduje použití připojovací řetězec, který je uložený v nastavení aplikace jako WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. Azure Files aktuálně nepodporuje připojení založená na identitách. Pokud váš scénář vyžaduje, abyste v nastavení aplikace neukládali žádné tajné kódy, musíte odebrat závislost aplikace na Azure Files. Této závislosti se můžete vyhnout vytvořením aplikace bez výchozí Azure Files závislosti.

Poznámka:

Měli byste také zvážit spuštění aplikace funkcí v plánu Flex Consumption, který poskytuje větší kontrolu nad balíčkem nasazení, včetně možnosti používat připojení spravovaných identit. Další informace naleznete v tématu Konfigurace nastavení nasazení.

Pokud chcete aplikaci spustit bez sdílené složky Azure, musíte splňovat následující požadavky:

Balíček nasazení musíte aktualizovat ručně a udržovat adresu URL balíčku nasazení, která pravděpodobně obsahuje sdílený přístupový podpis (SAS).

Měli byste si také uvědomit následující aspekty:

  • Aplikace nemůže použít verzi 1.x funkčního runtime.
  • Vaše aplikace se nemůže spoléhat na sdílený zapisovatelný systém souborů.
  • Úpravy portálu se nepodporují.
  • Výchozím nastavením prostředí streamování protokolů v klientech, jako je portál Azure, je použití protokolů souborových systémů. Místo toho byste měli spoléhat na protokoly Application Insights.

Pokud předchozí požadavky vyhovují vašemu scénáři, můžete pokračovat vytvořením aplikace funkcí bez Azure Files. Vytvořte aplikaci bez nastavení aplikací WEBSITE_CONTENTAZUREFILECONNECTIONSTRING a WEBSITE_CONTENTSHARE jedním z těchto způsobů:

  • Bicep/šablony ARM: Odeberte dvě nastavení aplikace ze šablony ARM nebo ze souboru Bicep a pak aplikaci nasaďte pomocí upravené šablony.
  • Portál Azure: Zrušte výběr připojení Azure Files v kartě Storage při vytváření aplikace v Azure portálu.

Azure Files slouží k povolení dynamického škálování pro Azure Functions. Škálování může být omezené, když spustíte aplikaci bez Azure Files v plánu Elastic Premium a plánech Consumption spuštěných na Windows.

Připojení sdílených souborů

Tato funkce je aktuálně dostupná jenom v případě, že běží v Linuxu.

Sdílené složky Azure Files můžete připojit k aplikacím funkcí Linuxu, které vám umožní přistupovat k existujícím souborům, modelům strojového učení nebo velkým binárním souborům ve vašich funkcích. Připojení úložiště nejsou v plánu Consumption podporována. Koncepční pokyny k volbě mezi úložišti, připojeními a externími databázemi najdete v tématu Zvolte strategii přístupu k souborům pro Azure Functions.

Důležité

Aplikace funkcí stále spouštějí modul runtime verze v3 s ukončenou podporou na Linuxu v plánu spotřeby přestanou běžet po 30. září 2026. Pokud se chcete vyhnout přerušení služeb, migrujte aplikaci do modulu runtime v4.

Možnost hostovat funkční aplikace na Linuxu v plánu Consumption bude vyřazena z provozu 30. září 2028. Plán spotřeby pro Linux již nedostává žádné nové funkce ani jazykové verze. Aplikace spuštěné na Windows v plánu Consumption nejsou aktuálně ovlivněné. Migrujte své aplikace do plánu Flex Consumption před datem vyřazení.

Pomocí následujícího příkazu můžete připojit existující sdílenou složku k vaší aplikaci funkcí pro Linux.

az webapp config storage-account add - Příkaz pro přidání účtu úložiště k webové aplikaci

V tomto příkazu share-name je název existující sdílené složky Azure Files. custom-id může být jakýkoli řetězec, který jednoznačně definuje sdílení při připojení k funkční aplikaci. Je to také cesta, mount-path, ze které je přístup k sdílení ve vaší funkční aplikaci. mount-path musí být ve formátu /dir-namea nemůže začínat na /home.

Úplný příklad najdete v tématu Vytvoření aplikace funkcí Python a připojení sdílené složky Azure Files.

Související článek

Přečtěte si další informace o možnostech hostování Azure Functions.