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 nasazení nabízených oznámení, 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 z balíčku pro nasazení. Další informace najdete v tématu Spuštění funkcí ze souboru balíčku v Azure.

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 obsah do wwwroot složky vaší aplikace funkcí. 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.

Požadavky na soubor .zip nasazení

Soubor .zip, který používáte pro nabízené nasazení, musí obsahovat všechny soubory potřebné ke spuštění funkce.

Důležité

Když použijete nasazení .zip, odstraní se z aplikace funkcí všechny soubory z existujícího nasazení, které v souboru .zip nenajdete.

Kód všech funkcí v konkrétní aplikaci funkcí se nachází v kořenové složce projektu, která obsahuje konfigurační soubor hostitele. Soubor host.json obsahuje konfigurace specifické pro modul runtime a je v kořenové složce aplikace funkcí. Složka bin obsahuje balíčky a další soubory knihovny, které aplikace funkcí vyžaduje. Konkrétní struktury složek vyžadované aplikací funkcí závisí na jazyce:

Všechny funkce v aplikaci funkcí musí sdílet stejný zásobník jazyků.

Aplikace funkcí obsahuje všechny soubory a složky v wwwroot adresáři. Nasazení souboru .zip zahrnuje obsah wwwroot adresáře, ale ne samotný adresář. Při nasazování projektu knihovny tříd jazyka C# musíte zahrnout kompilované soubory knihovny a závislosti do bin podsložky v balíčku .zip.

Při vývoji na místním počítači můžete ručně vytvořit soubor .zip složky projektu aplikace funkcí pomocí integrovaných .zip funkcí komprese nebo nástrojů třetích stran.

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

K aktivaci nabízeného nasazení můžete použít Azure CLI. Nasdílení změn nasazení souboru .zip do aplikace funkcí pomocí příkazu 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 příkaz az --version.

V následujícím příkazu nahraďte <zip_file_path> zástupný text cestou k umístění souboru .zip. Nahraďte <app_name> také jedinečný název vaší aplikace funkcí 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 umístění úložiště, <zip_file_path> které váš účet Cloud Shell používá. Další informace najdete v tématu Zachování souborů ve službě Azure Cloud Shell.

Nasazení souboru ZIP pomocí rozhraní REST API

Rozhraní REST API služby nasazení můžete použít k nasazení souboru .zip do 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 referenčních informacích k .zip nasazení nabízených oznámení.

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 nabízené nasazení ze nahraného souboru .zip. 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í zip

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

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.

Bude vyžadován platný přístupový token Microsoft Entra pro uživatele nebo instanční objekt provádějící nasazení. Přístupový token je možné načíst pomocí příkazu Azure CLI az account get-access-token . Přístupový token se použije 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 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 nabízené nasazení ze nahraného souboru .zip.

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

$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í šablony ARM ZipDeploy můžete použít k nasdílení souboru .zip do aplikace funkcí.

Příklad šablony ARM ZipDeploy

Tato šablona zahrnuje produkční i přípravný slot a nasadí se do jednoho nebo druhého. Tuto šablonu byste obvykle použili k nasazení do přípravného slotu a následnému prohození, abyste získali nový balíček ZIP spuštěný 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 nasadíte 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 se soubor balíčku připojí modulem runtime služby Functions a obsah wwwroot adresáře se stane jen pro čtení.

Nasazení zip se integruje s touto funkcí, kterou můžete povolit nastavením aplikace WEBSITE_RUN_FROM_PACKAGE funkcí na hodnotu 1. Další informace najdete v tématu Spuštění funkcí ze souboru 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 nespustí žádná vlastní nastavení. 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 .zip nasazení nabízených oznámení, toto nastavení je ve výchozím nastavení false . Výchozí hodnota platí 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í související s úložištěm a nasazením v referenčních informacích k nasazení.

Stažení souborů aplikace funkcí

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.

      Stažení projektu aplikace funkcí

      Stažený soubor .zip je ve správném formátu, který se má znovu publikovat do vaší aplikace funkcí pomocí .zip nabízeného nasazení. Stažení portálu může také přidat soubory potřebné k otevření aplikace funkcí přímo v sadě Visual Studio.

  • Použití rozhraní REST API:

    Ke stažení souborů z projektu <function_app> použijte následující rozhraní GET API 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