Komprimované nasazení pro službu Azure Functions

Tento článek popisuje, jak nasadit soubory projektu aplikace funkcí do Azure ze souboru .zip (komprimované). Naučíte se provádět push nasazení, a to jak pomocí Azure CLI, tak pomocí rozhraní REST API. Azure Functions Core Tools také používá tato rozhraní API pro nasazení při publikování místního projektu do Azure.

Nasazení zip je také snadný způsob, jak spouštět funkce ze souboru balíčku v Azure. Jedná se o výchozí technologii nasazení v plánech hostování Consumption, Elastic Premium a Dedicated (App Service). Plán Flex Consumption nepodporuje nasazení souboru ZIP.

Azure Functions nabízí celou řadu možností průběžného nasazování a integrace, které poskytuje služba Aplikace Azure Service. Další informace najdete v tématu Průběžné nasazování pro Azure Functions.

Pokud chcete urychlit vývoj, může být jednodušší nasadit soubory projektu aplikace funkcí přímo ze souboru .zip. Rozhraní API pro nasazení .zip přebírá obsah souboru .zip a extrahuje jej do složky wwwroot vaší funkční aplikace. Toto .zip nasazení souborů používá stejnou službu Kudu, která zajišťuje průběžné nasazování založené na integraci, včetně:

  • Odstranění souborů, které zůstaly z dřívějších nasazení.
  • Přizpůsobení nasazení, včetně spouštění skriptů nasazení
  • Protokoly nasazení
  • Synchronizace triggerů funkcí v aplikaci funkcí plánu Consumption

Další informace najdete v referenčních informacích k nasazení .zip.

Důležité

Při použití .zip nasazení se všechny soubory z předchozího nasazení buď odstraní nebo aktualizují během následného nasazení do vaší aplikace funkcí. Ostatní soubory a adresáře ve vaší aplikaci funkcí, které nebyly součástí předchozího nasazení, se zachovají.

Požadavky na soubor .zip nasazení

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.

Proces nasazení zip extrahuje soubory a složky zip archivu v adresáři wwwroot. Pokud při vytváření archivu zahrnete nadřazený adresář, systém nenajde soubory, které očekává nalézt v wwwroot.

Nasazení s využitím rozhraní příkazového řádku Azure

K vyvolání nasazení typu push můžete použít Azure CLI. Pro nasazení souboru .zip do vaší aplikace funkcí použijte příkaz az functionapp deployment source config-zip. Pokud chcete použít tento příkaz, musíte použít Azure CLI verze 2.0.21 nebo novější. Pokud chcete zjistit, jakou verzi Azure CLI používáte, použijte az --version tento příkaz.

V následujícím příkazu nahraďte zástupný symbol <zip_file_path> cestou k umístění vašeho souboru .zip. Také nahraďte <app_name> jedinečným názvem vaší aplikace s funkcemi a nahraďte <resource_group> názvem vaší skupiny prostředků.

az functionapp deployment source config-zip -g <resource_group> -n \
<app_name> --src <zip_file_path>

Tento příkaz nasadí soubory projektu ze staženého souboru .zip do vaší aplikace funkcí v Azure. Potom aplikaci restartuje. Pokud chcete zobrazit seznam nasazení pro tuto aplikaci funkcí, musíte použít rozhraní REST API.

Pokud používáte Azure CLI na místním počítači, <zip_file_path> je cesta k souboru .zip na vašem počítači. Azure CLI můžete také spustit v Azure Cloud Shellu. Když používáte Cloud Shell, musíte nejprve nahrát soubor .zip nasazení do účtu Azure Files, který je přidružený k vašemu Cloud Shellu. V takovém případě je <zip_file_path> umístění úložiště, které používá váš účet Cloud Shell. Další informace najdete v tématu Zachování souborů ve službě Azure Cloud Shell.

Nasazení souboru ZIP pomocí rozhraní REST API

Můžete použít REST API rozhraní služby nasazení k nasazení souboru .zip do vaší aplikace v Azure. K nasazení odešlete požadavek POST na https://<app_name>.scm.azurewebsites.net/api/zipdeployadresu . Požadavek POST musí obsahovat soubor .zip v textu zprávy. Přihlašovací údaje pro nasazení vaší aplikace jsou zahrnuté v požadavku s použitím HTTP BASIC Authentication. Další informace najdete v referenci pro nasazení .zip.

Pro ověřování HTTP BASIC potřebujete přihlašovací údaje pro nasazení služby App Service. Informace o nastavení přihlašovacích údajů nasazení najdete v tématu Nastavení a resetování přihlašovacích údajů na úrovni uživatele.

S cURL

Následující příklad používá nástroj cURL k nasazení souboru .zip. Nahraďte zástupné symboly <deployment_user>, <zip_file_path>a <app_name>. Po zobrazení výzvy pomocí cURL zadejte heslo.

curl -X POST -u <deployment_user> --data-binary "@<zip_file_path>" https://<app_name>.scm.azurewebsites.net/api/zipdeploy

Tento požadavek aktivuje push nasazení z .zip souboru, který byl nahrán. Aktuální a minulé nasazení můžete zkontrolovat pomocí koncového https://<app_name>.scm.azurewebsites.net/api/deployments bodu, jak je znázorněno v následujícím příkladu cURL. Znovu nahraďte <app_name> názvem vaší aplikace a <deployment_user> uživatelským jménem vašich přihlašovacích údajů pro nasazení.

curl -u <deployment_user> https://<app_name>.scm.azurewebsites.net/api/deployments

Asynchronní nasazení souboru zip

Při synchronním nasazování se můžou zobrazit chyby související s vypršením časového limitu připojení. Přidejte ?isAsync=true k adrese URL pro asynchronní nasazení. Jakmile se soubor ZIP nahraje, obdržíte odpověď s hlavičkou Location, která odkazuje na adresu URL stavového nasazení, které lze dotazovat. Při dotazování adresy URL zadané v Location hlavičce obdržíte během procesu odpověď HTTP 202 (Přijato) a po rozbalení archivu odpověď HTTP 200 (OK) a nasazení se úspěšně dokončí.

Ověřování Microsoft Entra

Alternativou k použití ověřování HTTP BASIC pro nasazení zip je použití identity Microsoft Entra. Pokud je pro web SCM zakázané ověřování HTTP BASIC, může být potřeba identita Microsoft Entra.

Vyžaduje se platný přístupový token Microsoft Entra pro uživatele nebo služebního principála, který provádí nasazení. Přístupový token je možné načíst pomocí příkazu Azure CLI az account get-access-token . Přístupový token se používá v hlavičce ověřování požadavku HTTP POST.

curl -X POST \
    --data-binary "@<zip_file_path>" \
    -H "Authorization: Bearer <access_token>" \
    "https://<app_name>.scm.azurewebsites.net/api/zipdeploy"

S využitím PowerShellu

Následující příklad používá Publish-AzWebapp k nahrání souboru .zip. Nahraďte zástupné symboly <group-name>, <app-name>a <zip-file-path>.

Publish-AzWebapp -ResourceGroupName <group-name> -Name <app-name> -ArchivePath <zip-file-path>

Tento požadavek aktivuje pushové nasazení z nahraného souboru .zip.

Pokud chcete zkontrolovat aktuální a předchozí nasazení, spusťte následující příkazy. Znovu nahraďte zástupné znaky <deployment-user>, <deployment-password> a <app-name>.

$username = "<deployment-user>"
$password = "<deployment-password>"
$apiUrl = "https://<app-name>.scm.azurewebsites.net/api/deployments"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $username, $password)))
$userAgent = "powershell/1.0"
Invoke-RestMethod -Uri $apiUrl -Headers @{Authorization=("Basic {0}" -f $base64AuthInfo)} -UserAgent $userAgent -Method GET

Nasazení pomocí šablony ARM

Rozšíření ARM šablony ZipDeploy můžete použít k nahrání souboru .zip do funkční aplikace.

Příklad šablony ARM ZipDeploy

Tato šablona zahrnuje jak produkční, tak testovací slot a nasadí se buď do jednoho, nebo druhého prostředí. Tuto šablonu byste obvykle použili k nasazení do přípravného slotu, a poté provedli výměnu, aby váš nový ZIP balíček běžel v produkčním slotu.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "appServiceName": {
      "type": "string"
    },
    "deployToProduction": {
      "type": "bool",
      "defaultValue": false
    },
    "slot": {
      "type": "string",
      "defaultValue": "staging"
    },
    "packageUri": {
      "type": "secureString"
    }
  },
  "resources": [
    {
      "condition": "[parameters('deployToProduction')]",
      "type": "Microsoft.Web/sites/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/ZipDeploy', parameters('appServiceName'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    },
    {
      "condition": "[not(parameters('deployToProduction'))]",
      "type": "Microsoft.Web/sites/slots/extensions",
      "apiVersion": "2021-02-01",
      "name": "[format('{0}/{1}/ZipDeploy', parameters('appServiceName'), parameters('slot'))]",
      "properties": {
        "packageUri": "[parameters('packageUri')]",
        "appOffline": true
      }
    }
  ]
}

V případě počátečního nasazení byste nasadili přímo do produkčního slotu. Další informace najdete v tématu Nasazení slotů.

Spouštění funkcí z balíčku pro nasazení

Můžete se také rozhodnout, že své funkce spustíte přímo ze souboru balíčku pro nasazení. Tato metoda přeskočí krok nasazení kopírování souborů z balíčku do wwwroot adresáře vaší aplikace funkcí. Místo toho modul runtime Functions připojí soubor balíčku a obsah adresáře wwwroot je přístupný pouze pro čtení.

Zip nasazení se integruje s touto funkcí, kterou můžete povolit nastavením nastavení funkce aplikace WEBSITE_RUN_FROM_PACKAGE na hodnotu 1. Další informace najdete v tématu Spouštění funkcí z balíčku nasazení.

Přizpůsobení nasazení

Proces nasazení předpokládá, že soubor .zip, který nasdílíte, obsahuje připravenou aplikaci. Ve výchozím nastavení se nespouští žádné vlastní úpravy. Pokud chcete povolit stejné procesy sestavení, které získáte s kontinuální integrací, přidejte do nastavení aplikace následující:

SCM_DO_BUILD_DURING_DEPLOYMENT=true

Pokud používáte nasazení pomocí .zip, výchozí nastavení je false. Výchozí hodnota je true pro nasazení kontinuální integrace. Pokud je nastavená hodnota true, použijí se během nasazení nastavení související s nasazením. Tato nastavení můžete nakonfigurovat buď jako nastavení aplikace, nebo v konfiguračním souboru .deployment, který se nachází v kořenovém adresáři souboru .zip. Další informace najdete v tématu Nastavení úložiště a nasazení v referenční příručce k nasazení.

Stažení souborů funkční aplikace

Pokud jste své funkce vytvořili pomocí editoru na webu Azure Portal, můžete stávající projekt aplikace funkcí stáhnout jako soubor .zip jedním z těchto způsobů:

  • Na webu Azure Portal:

    1. Přihlaste se k webu Azure Portal a přejděte do aplikace funkcí.

    2. Na kartě Přehled vyberte Stáhnout obsah aplikace. Vyberte možnosti stahování a pak vyberte Stáhnout.

    Snímek obrazovky se stránkou webu Azure Portal pro stažení projektu aplikace funkcí

    Stažený soubor .zip je ve správném formátu, který lze znovu publikovat do vaší aplikace funkcí pomocí .zip push nasazení. Stahování z portálu může také přidat soubory potřebné k otevření funkční aplikace přímo v programu Visual Studio.

  • Použití rozhraní REST API:

    Ke stažení souborů z projektu <function_app>, použijte následující rozhraní API GET pro nasazení.

    https://<function_app>.scm.azurewebsites.net/api/zip/site/wwwroot/
    

    Zahrnutím /site/wwwroot/ zajistíte, aby soubor ZIP obsahoval jenom soubory projektu aplikace funkcí, a ne celý web. Pokud ještě nejste přihlášení k Azure, zobrazí se výzva k tomu.

Soubor .zip si také můžete stáhnout z úložiště GitHub. Když si stáhnete úložiště GitHub jako soubor .zip, GitHub přidá pro větev další úroveň složky. Tato úroveň složek navíc znamená, že nemůžete nasadit .zip soubor přímo při stahování z GitHubu. Pokud k údržbě aplikace funkcí používáte úložiště GitHub, měli byste k nasazení aplikace použít kontinuální integraci .

Další kroky