Sdílet prostřednictvím


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

Aplikace funkcí v plánu hostování Flex Consumption se ve výchozím nastavení spouštějí z balíčku. Není potřeba provádět žádnou zvláštní konfiguraci.

Pokud chcete, aby vaše funkční aplikace běžela z balíčku v plánech hostování Consumption, Elastic Premium a Dedicated (App Service), přidejte nastavení aplikace WEBSITE_RUN_FROM_PACKAGE do vaší funkční 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 Operační systém Linux
Využití 1 důrazně se doporučuje. Podporuje se jen <URL>.
Prémie 1 se doporučuje. 1 se doporučuje.
Oddaný 1 se doporučuje. 1 se doporučuje.

Obecné aspekty

  • Nepřidávejte nastavení aplikace WEBSITE_RUN_FROM_PACKAGE do aplikací v plánu Flex Consumption.
  • 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 a 1 a publikovat pomocí nasazení pomocí 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 také nastavení ENABLE_ORYX_BUILD=true. Další informace naleznete v tématu Vzdálené sestavení.

Poznámka:

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

Přidejte 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ů jiných společností než Microsoft.

Archiv musí obsahovat soubor host.json v kořenovém adresáři extrahované složky. Sada vybraných 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žijte WEBSITE_RUN_FROM_PACKAGE = 1

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

Úvahy o nasazení z balíčku na místě

  • Použití lokálního balíčku je doporučenou možností pro spuštění z balíčku pro nasazení, s výjimkou případů, kdy je Linux hostován v plánech Consumption.
  • Zip nasazení 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 archivu

Nasazení zipu je funkce Azure App Service, která umožňuje nasadit projekt aplikační funkce do adresáře wwwroot. Projekt je zabalen jako nasazovací soubor ve formátu .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í funkční aplikace. 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žijte 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. Tato možnost není v plánu Flex Consumption podporovaná.

Úvahy o nasazení z adresy URL

  • Nenastavujte WEBSITE_RUN_FROM_PACKAGE = <URL> v aplikacích v plánu Flex Consumption . Tato možnost není podporována.
  • Aplikace funkcí spuštěné ve Windows zaznamenávají mírné zvýšení času studeného startu, když je balíček aplikace nasazen do koncového bodu adresy URL prostřednictvím .
  • 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í balíčkových souborů do blob kontejnerů ve vašem úložišti 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 projděte 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 WEBSITE_RUN_FROM_PACKAGE a vložte adresu URL balíčku do služby Blob Storage pro hodnotu.

  12. Vyberte Použít, pak znovu vyberte Použít a Potvrdit, abyste uložili nastavení a restartovali funkční aplikaci.

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 identifikátor prostředku této identity. Nastavení může také přijmout SystemAssigned jako hodnotu, která odpovídá vynechání nastavení.

Pro umožnění 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 tom, jak vytvořit přiřazení role pro přístup k datům objektů BLOB, najdete v 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 má obvykle tvar https://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package} nebo podobný.

  4. Pokud chcete zadat identitu přiřazenou uživatelem, můžete nastavit WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID nastavení aplikace na identifikátor prostředku této identity. Nastavení může také přijmout "SystemAssigned" jako hodnotu, i když je to stejné jako vynechání nastavení úplně. ID prostředku je standardní reprezentace prostředku v Azure. Pro spravovanou identitu přiřazenou uživatelem to bude /subscriptions/subid/resourcegroups/rg-name/providers/Microsoft.ManagedIdentity/userAssignedIdentities/identity-name. ID prostředku spravované identity přiřazené uživatelem lze získat v nastavení ->Vlastnosti ->ID spravované identity přiřazené uživatelem.