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 c:\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

Spouštění funkcí 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).
  • Ověří soubory spuštěné v aplikaci.
  • Zlepšuje výkon nasazení Azure Resource Manageru.
  • Zkracuje dobu studeného startu, zejména u funkcí 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 aplikace funkcí nastavení aplikace. Nastavení WEBSITE_RUN_FROM_PACKAGE aplikace 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 c:\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 hodnoty pro 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.
Oddaný 1 se doporučuje. 1 se doporučuje.

Obecné aspekty

  • Soubor balíčku musí být .zip formátovaný. Formáty Tar a gzip nejsou podporované.
  • Doporučuje se nasazení souboru ZIP.
  • Při nasazování aplikace funkcí do Windows byste měli nastavit WEBSITE_RUN_FROM_PACKAGE 1 a publikovat pomocí nasazení zip.
  • Když spustíte balíček, wwwroot složka je 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 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 naleznete v tématu Vzdálené sestavení.

Poznámka:

Nastavení WEBSITE_RUN_FROM_PACKAGE aplikace nefunguje s MSDeploy, jak je popsáno ve VS MSDeploy. ZipDeploy. Během nasazení se zobrazí chyba, například ARM-MSDeploy Deploy Failed. Chcete-li tuto chybu vyřešit, zablokovat /MSDeploy na /ZipDeploy.

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

Vytvoření archivu zip

Archiv zip, který nasadíte, musí obsahovat všechny soubory potřebné ke spuštění vaší aplikace funkcí. Archiv zip můžete vytvořit ručně z obsahu složky projektu Functions pomocí integrovaných funkcí komprese .zip nebo nástrojů třetích stran.

Archiv musí obsahovat soubor host.json v kořenovém adresáři extrahované složky. Vybraný zásobník jazyků pro aplikaci funkcí vytvoří další požadavky:

Důležité

Pro jazyky, které generují kompilovaný výstup pro nasazení, nezapomeňte zkomprimovat obsah výstupní složky, kterou plánujete publikovat, a ne celou složku projektu. Když Functions extrahuje obsah archivu zip, host.json soubor musí existovat v kořenovém adresáři balíčku.

Použít 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 pro spuštění z balíčku pro nasazení, s výjimkou případů, kdy běží v Linuxu hostované 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 c:\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 c:\home\data\SitePackages složky (Windows) nebo /home/data/SitePackages (Linux).

Když nastavíte WEBSITE_RUN_FROM_PACKAGE hodnotu 1nastavení aplikace na , rozhraní API pro nasazení zip zkopírují balíček do c:\home\data\SitePackages složky (Windows) nebo /home/data/SitePackages (Linux) místo extrahování souborů do c:\home\site\wwwroot (Windows) nebo /home/site/wwwroot (Linux). Vytvoří také packagename.txt soubor. Po automatickém restartování aplikace funkcí 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čí. Informace o tom, jak psát bezstavové a obranné funkce, nastavte funkce zápisu na bezstavové.

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 hostovaného v Linuxu s plánem Consumption.

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

  • Aplikace funkcí spuštěné ve Windows se při nasazení balíčku aplikace do koncového bodu adresy URL do koncového bodu WEBSITE_RUN_FROM_PACKAGE = <URL>adresy URL mírně zvýší.
  • 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.
  • Nenasazujte balíček 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.
  • Pokud používáte plán Dedicated, ujistěte se, že povolíte funkci AlwaysOn.
  • K nahrání souborů balíčků do kontejnerů objektů blob v účtu úložiště můžete použít Průzkumník služby Azure Storage.

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 .zip komprimovaný balíček nasazení a nahrát ho do cíle. Následující postup 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 seznamu účtů ú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ň anonymního přístupu je soukromá, a pak 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 pomocí projektu, a pak vyberte Nahrát.

  7. Po dokončení nahrávání zvolte nahraný soubor objektu blob a zkopírujte adresu URL. Pokud nepoužíváte spravovanou 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í rozbalte Nastavení a pak vyberte Proměnné prostředí.

  10. Na kartě Nastavení aplikace vyberte + Přidat.

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

  12. Vyberte Použít a pak výběrem možnosti Použít a Potvrdit uložte nastavení a restartujte aplikaci funkcí.

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

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

Službu Azure Blob Storage můžete nakonfigurovat tak, aby autorizovala požadavky s ID Microsoft Entra. Tato konfigurace 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žívá 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, která odpovídá vynechání nastavení.

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. Tato adresa URL je obvykle formuláře https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package} nebo podobná.