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 aplikace funkcí běžela z balíčku v plánech hostování Consumption, Elastic Premium a Dedicated (App Service), 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
- Nepřidávejte
WEBSITE_RUN_FROM_PACKAGE
nastavení aplikace 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
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řidejteSCM_DO_BUILD_DURING_DEPLOYMENT=true
nastavení aplikace pro přizpůsobení nasazení. Pro Linux přidejteENABLE_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, přejděte /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ázvempackagename.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 1
nastavení 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. Tato možnost není v plánu Flex Consumption podporovaná.
Důležité informace 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 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:
Vytvořte balíček .zip pro váš projekt pomocí nástroje podle vašeho výběru.
Na webu Azure Portal vyhledejte název účtu úložiště nebo ho vyhledejte v seznamu účtů úložiště.
V účtu úložiště vyberte v části Úložiště dat kontejnery.
Vyberte + Kontejner a vytvořte nový kontejner Blob Storage ve vašem účtu.
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.
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.
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.
Vyhledejte svou aplikaci funkcí nebo ji vyhledejte na stránce Aplikace funkcí.
V aplikaci funkcí rozbalte Nastavení a pak vyberte Proměnné prostředí.
Na kartě Nastavení aplikace vyberte + Přidat.
Zadejte hodnotu pro název
WEBSITE_RUN_FROM_PACKAGE
a vložte adresu URL balíčku do služby Blob Storage pro hodnotu.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:
Ujistěte se, že je objekt blob nakonfigurovaný pro privátní přístup.
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.
WEBSITE_RUN_FROM_PACKAGE
Nastavte nastavení aplikace na adresu URL objektu blob balíčku. Tato adresa URL je obvykle formulářehttps://{storage-account-name}.blob.core.windows.net/{container-name}/{path-to-package}
nebo podobná.