Spuštění funkcí ze souboru balíčku v Azure

V Azure můžete funkce spouštět přímo ze souboru balíčku nasazení ve vaší aplikaci funkcí. Druhou možností je nasadit soubory v d:\home\site\wwwroot adresáři (Windows) nebo /home/site/wwwroot (Linux) vaší aplikace funkcí.

Tento článek popisuje výhody spouštění funkcí z balíčku. Také ukazuje, jak tuto funkci povolit ve vaší aplikaci funkcí.

Výhody spuštění ze souboru balíčku

Spuštění ze souboru balíčku má několik výhod:

  • Snižuje riziko problémů s uzamčením kopírování souborů.
  • Dá se nasadit do produkční aplikace (s restartováním).
  • Můžete si být jistí, které soubory běží ve vaší aplikaci.
  • Zlepšuje výkon nasazení Azure Resource Manageru.
  • Může zkrátit dobu studeného spuštění, zejména pro funkce JavaScriptu s velkými stromy balíčků npm.

Další informace najdete v tomto oznámení.

Povolení spouštění funkcí z balíčku

Pokud chcete aplikaci funkcí povolit spuštění z balíčku, přidejte WEBSITE_RUN_FROM_PACKAGE do nastavení aplikace funkcí nastavení. Nastavení WEBSITE_RUN_FROM_PACKAGE může mít jednu z následujících hodnot:

Hodnota Popis
1 Označuje, že aplikace funkcí běží z místního souboru balíčku nasazeného ve d:\home\data\SitePackages složce (Windows) nebo /home/data/SitePackages (Linux) vaší aplikace funkcí.
<URL> Nastaví adresu URL, která je vzdálené umístění konkrétního souboru balíčku, který chcete spustit. Vyžaduje se pro aplikace funkcí běžící v Linuxu v plánu Consumption.

Následující tabulka uvádí doporučené WEBSITE_RUN_FROM_PACKAGE možnosti nasazení do konkrétního operačního systému a plánu hostování:

Plán hostování Windows Linux
Využití 1 důrazně se doporučuje. Podporuje se jen <URL>.
Premium 1 se doporučuje. 1 se doporučuje.
Vyhrazené 1 se doporučuje. 1 se doporučuje.

Obecné aspekty

  • Soubor balíčku musí být formátovaný .zip. Formáty Tar a gzip se v současné době nepodporují.
  • Doporučuje se nasazení souboru ZIP.
  • Při nasazování aplikace funkcí do Windows byste měli nastavit WEBSITE_RUN_FROM_PACKAGE1 a publikovat pomocí nasazení zip.
  • Když spustíte balíček, wwwroot složka se stane jen pro čtení a při zápisu souborů do tohoto adresáře se zobrazí chyba. Soubory jsou také jen pro čtení na webu Azure Portal.
  • Maximální velikost souboru balíčku pro nasazení je aktuálně 1 GB.
  • Při spuštění z balíčku pro nasazení nemůžete použít místní mezipaměť.
  • Pokud váš projekt potřebuje používat vzdálené sestavení, nepoužívejte WEBSITE_RUN_FROM_PACKAGE nastavení aplikace. Místo toho přidejte SCM_DO_BUILD_DURING_DEPLOYMENT=true nastavení aplikace pro přizpůsobení nasazení. Pro Linux přidejte ENABLE_ORYX_BUILD=true také nastavení. Další informace najdete v tématu Vzdálené sestavení.

Poznámka:

WEBSITE_RUN_FROM_PACKAGE nefunguje s MSDeploy, jak je popsáno zde. Během nasazení se zobrazí chyba, například ARM-MSDeploy Deploy Failed. Změňte /MSDeploy na /ZipDeploy a tato chyba se vyřeší.

Přidání nastavení WEBSITE_RUN_FROM_PACKAGE

Nastavení aplikace funkcí můžete přidat, aktualizovat a odstranit několika způsoby:

Změny nastavení aplikace funkcí vyžadují restartování aplikace funkcí.

Použití WEBSITE_RUN_FROM_PACKAGE = 1

Tato část obsahuje informace o tom, jak spustit aplikaci funkcí z místního souboru balíčku.

Důležité informace o nasazení z balíčku na webu

  • Použití balíčku na webu je doporučená možnost spuštění z balíčku pro nasazení s výjimkou Linuxu hostovaného v plánu Consumption.
  • Nasazení zip je doporučený způsob, jak nahrát balíček nasazení na web.
  • Pokud nepoužíváte nasazení zip, ujistěte se, že d:\home\data\SitePackages složka (Windows) nebo /home/data/SitePackages Linux má soubor s názvem packagename.txt. Tento soubor obsahuje pouze název bez prázdných znaků souboru balíčku v této složce, která je aktuálně spuštěná.

Integrace s nasazením zip

Nasazení zip je funkce služby Aplikace Azure Service, která umožňuje nasadit projekt aplikace funkcí do wwwroot adresáře. Projekt je zabalený jako soubor nasazení .zip. Stejná rozhraní API je možné použít k nasazení balíčku do d:\home\data\SitePackages složky (Windows) nebo /home/data/SitePackages (Linux).

WEBSITE_RUN_FROM_PACKAGE S hodnotou 1nastavení aplikace zkopírují rozhraní API pro nasazení zip balíček do d:\home\data\SitePackages složky (Windows) nebo /home/data/SitePackages (Linux) místo extrahování souborů do d:\home\site\wwwroot (Windows) nebo /home/site/wwwroot (Linux). Vytvoří také packagename.txt soubor. Po restartování se balíček připojí jako wwwroot systém souborů jen pro čtení. Další informace o nasazení zip naleznete v tématu Nasazení zip pro Azure Functions.

Poznámka:

Když dojde k nasazení, aktivuje se restartování aplikace funkcí. Provádění funkcí, které jsou aktuálně spuštěné během nasazení, se ukončí. Vylepšete výkon a spolehlivost azure Functions a zjistěte, jak psát bezstavové a obranné funkce.

Použití WEBSITE_RUN_FROM_PACKAGE = adresa URL

Tato část obsahuje informace o tom, jak spustit aplikaci funkcí z balíčku nasazeného do koncového bodu adresy URL. Tato možnost je jediná podporovaná pro spuštění z balíčku v Linuxu hostovaného v plánu Consumption.

Důležité informace o nasazení z adresy URL

  • Když spouštíte aplikaci funkcí ve Windows, nastavení WEBSITE_RUN_FROM_PACKAGE = <URL> aplikace dává horší výkon při studeném spuštění a nedoporučuje se.
  • Když zadáte adresu URL, musíte po publikování aktualizovaného balíčku také ručně synchronizovat triggery .
  • Modul runtime služby Functions musí mít oprávnění pro přístup k adrese URL balíčku.
  • Balíček byste neměli nasazovat do služby Azure Blob Storage jako veřejný objekt blob. Místo toho použijte privátní kontejner se sdíleným přístupovým podpisem (SAS) nebo pomocí spravované identity povolte modulu runtime služby Functions přístup k balíčku.
  • Musíte udržovat všechny adresy URL SAS používané k nasazení. Po vypršení platnosti sdíleného přístupového podpisu se už balíček nedá nasadit. V takovém případě musíte vygenerovat nový SAS a aktualizovat nastavení v aplikaci funkcí. Tuto zátěž správy můžete eliminovat pomocí spravované identity.
  • Při spouštění na plánu Premium nezapomeňte eliminovat studené starty.
  • Při spouštění v plánu Dedicated se ujistěte, že jste povolili funkci AlwaysOn.
  • Pomocí Průzkumník služby Azure Storage můžete nahrát soubory balíčků do kontejnerů objektů blob ve vašem účtu úložiště.

Ruční nahrání balíčku do služby Blob Storage

Pokud chcete nasadit komprimovaný balíček při použití možnosti adresy URL, musíte vytvořit komprimovaný balíček nasazení .zip a nahrát ho do cíle. Tento příklad se nasadí do kontejneru ve službě Blob Storage.

  1. Vytvořte balíček .zip pro váš projekt pomocí nástroje podle vašeho výběru.

  2. Na webu Azure Portal vyhledejte název účtu úložiště nebo ho vyhledejte v účtech úložiště.

  3. V účtu úložiště vyberte v části Úložiště dat kontejnery.

  4. Vyberte + Kontejner a vytvořte nový kontejner Blob Storage ve vašem účtu.

  5. Na stránce Nový kontejner zadejte název (například "nasazení"), ujistěte se, že úroveň veřejného přístupu je Soukromá, a vyberte Vytvořit.

  6. Vyberte kontejner, který jste vytvořili, vyberte Nahrát, přejděte do umístění souboru .zip, který jste vytvořili v projektu, a vyberte Nahrát.

  7. Po dokončení nahrávání zvolte nahraný soubor objektu blob a zkopírujte adresu URL. Pokud nepoužíváte identitu, možná budete muset vygenerovat adresu URL SAS.

  8. Vyhledejte svou aplikaci funkcí nebo ji vyhledejte na stránce Aplikace funkcí.

  9. V aplikaci funkcí vyberte v části Nastavení konfigurace.

  10. Na kartě Nastavení aplikace vyberte Nové nastavení aplikace.

  11. Zadejte hodnotu pro názevWEBSITE_RUN_FROM_PACKAGE a vložte adresu URL balíčku do služby Blob Storage jako hodnotu.

  12. Vyberte OK. Pak výběrem možnosti Uložit>pokračovat uložte nastavení a restartujte aplikaci.

Teď můžete funkci spustit v Azure a ověřit, že nasazení proběhlo úspěšně pomocí souboru .zip balíčku nasazení.

Následující příklad ukazuje aplikaci funkcí nakonfigurovanou tak, aby běžela ze souboru .zip hostovaného ve službě Azure Blob Storage:

WEBSITE_RUN_FROM_ZIP app setting

Načtení balíčku ze služby Azure Blob Storage pomocí spravované identity

Službu Azure Blob Storage je možné nakonfigurovat tak, aby autorizovala požadavky s ID Microsoft Entra. To znamená, že místo generování klíče SAS s vypršením platnosti můžete místo toho spoléhat na spravovanou identitu aplikace. Ve výchozím nastavení se použije identita přiřazená systémem aplikace. Pokud chcete zadat identitu přiřazenou uživatelem, můžete nastavit WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID nastavení aplikace na ID prostředku této identity. Nastavení může také přijmout "SystemAssigned" jako hodnotu, i když je to stejné jako vynechání nastavení úplně.

Povolení načtení balíčku pomocí identity:

  1. Ujistěte se, že je objekt blob nakonfigurovaný pro privátní přístup.

  2. Udělte identitě roli Čtenář dat objektů blob služby Storage s oborem nad objektem blob balíčku. Podrobnosti o vytvoření přiřazení role najdete v tématu Přiřazení role Azure pro přístup k datům objektů blob.

  3. WEBSITE_RUN_FROM_PACKAGE Nastavte nastavení aplikace na adresu URL objektu blob balíčku. Pravděpodobně bude mít tvar "https://{název_účtu_úložiště}.blob.core.windows.net/{název_kontejneru}/{path-to-package} nebo podobný.

Další kroky