Azure Functions üzembe helyezése ZIP-fájlokkal

Ez a cikk azt ismerteti, hogyan helyezheti üzembe a függvényalkalmazás projektfájljait az Azure-ban egy .zip (tömörített) fájlból. Megtudhatja, hogyan hajthat végre leküldéses üzembe helyezést az Azure CLI és a REST API-k használatával. Az Azure Functions Core Tools ezeket az üzembehelyezési API-kat is használja egy helyi projekt Azure-ban való közzétételekor.

A zip-alapú üzembe helyezéssel egyszerűen futtathatja a függvényeket az üzembe helyezési csomagból. További információ: Függvények futtatása csomagfájlból az Azure-ban.

Az Azure Functions a Azure-alkalmazás Szolgáltatás által biztosított folyamatos üzembe helyezési és integrációs lehetőségek teljes skáláját kínálja. További információ: Folyamatos üzembe helyezés az Azure Functionsben.

A fejlesztés felgyorsítása érdekében egyszerűbben helyezheti üzembe a függvényalkalmazás projektfájljait közvetlenül egy .zip fájlból. A .zip üzembehelyezési API egy .zip fájl tartalmát veszi át, és kinyeri a tartalmat a wwwroot függvényalkalmazás mappájába. Ez a .zip fájltelepítés ugyanazt a Kudu szolgáltatást használja, amely a folyamatos integráción alapuló központi telepítéseket működteti, beleértve a következőket:

  • A korábbi üzemelő példányokból hátrahagyott fájlok törlése.
  • Az üzembe helyezés testreszabása, beleértve az üzembehelyezési szkriptek futtatását is.
  • Üzembehelyezési naplók.
  • A függvény eseményindítóinak szinkronizálása egy Használati terv függvényalkalmazásban.

További információ: .zip üzembe helyezési referencia.

Üzembe helyezési .zip fájlkövetelmények

A leküldéses üzembe helyezéshez használt .zip fájlnak tartalmaznia kell a függvény futtatásához szükséges összes fájlt.

Fontos

Ha .zip üzemelő példányt használ, a .zip fájlban nem található meglévő központi telepítésből származó fájlok törlődnek a függvényalkalmazásból.

Egy adott függvényalkalmazás összes függvényének kódja egy gazdagépkonfigurációs fájlt tartalmazó gyökérprojekt-mappában található. A host.json fájl futásidejű konfigurációkat tartalmaz, és a függvényalkalmazás gyökérmappájában található. A bin mappa a függvényalkalmazás által igényelt csomagokat és egyéb kódtárfájlokat tartalmazza. A függvényalkalmazás által megkövetelt mappastruktúrák a nyelvtől függnek:

A függvényalkalmazás minden függvényének ugyanazt a nyelvi vermet kell tartalmaznia.

A függvényalkalmazás tartalmazza a könyvtárban lévő wwwroot összes fájlt és mappát. A .zip fájl üzembe helyezése magában foglalja a wwwroot könyvtár tartalmát, de magát a könyvtárat nem. C#-osztálytárprojekt üzembe helyezésekor a lefordított kódtárfájlokat és függőségeket egy almappába bin kell foglalnia a .zip csomagban.

Ha helyi számítógépen fejleszt, manuálisan létrehozhat egy .zip fájlt a függvényalkalmazás projektmappájában beépített .zip tömörítési funkcióval vagy külső eszközökkel.

Üzembe helyezés az Azure CLI-vel

Az Azure CLI-vel leküldéses üzembe helyezést indíthat el. Helyezzen üzembe egy .zip fájlt a függvényalkalmazásban az az functionapp deployment source config-zip paranccsal. A parancs használatához az Azure CLI 2.0.21-es vagy újabb verzióját kell használnia. A parancs használatával az --version megtekintheti, hogy milyen Azure CLI-verziót használ.

Az alábbi parancsban cserélje le a <zip_file_path> helyőrzőt a .zip fájl helyének elérési útjára. Cserélje le <app_name> a függvényalkalmazás egyedi nevére is, és cserélje le <resource_group> az erőforráscsoport nevére.

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

Ez a parancs a letöltött .zip fájlból telepíti a projektfájlokat az Azure-beli függvényalkalmazásba. Ezután újraindítja az alkalmazást. A függvényalkalmazás üzemelő példányainak listájának megtekintéséhez a REST API-kat kell használnia.

Ha az Azure CLI-t használja a helyi számítógépen, <zip_file_path> a számítógépen található .zip fájl elérési útja. Az Azure CLI-t az Azure Cloud Shellben is futtathatja. A Cloud Shell használatakor először fel kell töltenie az üzembe helyezési .zip fájlt a Cloud Shellhez társított Azure Files-fiókba. Ebben az esetben <zip_file_path> a Cloud Shell-fiók által használt tárolási hely. További információ: Fájlok megőrzése az Azure Cloud Shellben.

ZIP-fájl üzembe helyezése REST API-kkal

Az üzembehelyezési szolgáltatás REST API-kkal üzembe helyezheti a .zip fájlt az azure-beli alkalmazásában. Az üzembe helyezéshez küldjön egy POST-kérést a címre https://<app_name>.scm.azurewebsites.net/api/zipdeploy. A POST-kérelemnek tartalmaznia kell az üzenet törzsében található .zip fájlt. Az alkalmazás üzembehelyezési hitelesítő adatai a kérelemben alapszintű HTTP-hitelesítéssel vannak megadva. További információ: .zip leküldéses üzembe helyezési referencia.

A HTTP BASIC hitelesítéshez az App Service üzembehelyezési hitelesítő adataira van szüksége. Az üzembehelyezési hitelesítő adatok beállításáról a felhasználói szintű hitelesítő adatok beállítása és alaphelyzetbe állítása című témakörben olvashat.

A cURL használatával

Az alábbi példa a cURL eszközt használja egy .zip-fájl üzembe helyezéséhez. Cserélje le a helyőrzőket <deployment_user>, <zip_file_path>és <app_name>. Amikor a cURL kéri, írja be a jelszót.

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

Ez a kérés leküldéses telepítést indít el a feltöltött .zip fájlból. Az aktuális és a korábbi üzemelő példányokat a https://<app_name>.scm.azurewebsites.net/api/deployments végpont használatával tekintheti át, ahogyan az alábbi cURL-példában is látható. Cserélje le <app_name> ismét az alkalmazás nevét és <deployment_user> az üzembehelyezési hitelesítő adatok felhasználónevét.

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

Aszinkron zip-telepítés

A szinkron üzembe helyezés során a kapcsolat időtúllépésével kapcsolatos hibák léphetnek fel. Adja hozzá ?isAsync=true az URL-címet az aszinkron üzembe helyezéshez. A zip-fájl feltöltése után a rendszer azonnal választ kap, amely egy Location fejlécet tartalmaz, amely a lekérdezhető üzembehelyezési állapot URL-címére mutat. A fejlécben Location megadott URL-cím lekérdezésekor HTTP 202 (elfogadott) választ fog kapni, amíg a folyamat folyamatban van, és egy HTTP 200 (OK) választ kap az archívum kibontása és az üzembe helyezés sikeres befejezése után.

Microsoft Entra hitelesítés

A HTTP BASIC-hitelesítés zip-telepítéshez való használatának alternatíva a Microsoft Entra-identitás használata. A Microsoft Entra-identitásra akkor lehet szükség, ha az SCM-webhely HTTP BASIC-hitelesítése le van tiltva.

Érvényes Microsoft Entra hozzáférési jogkivonatra lesz szükség az üzembe helyezést végrehajtó felhasználó vagy szolgáltatásnév számára. A hozzáférési jogkivonat az Azure CLI parancsával az account get-access-token kérhető le. A hozzáférési jogkivonat a HTTP POST-kérelem hitelesítési fejlécében lesz használva.

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

A PowerShell-lel

Az alábbi példa a Publish-AzWebappot használja a .zip fájl feltöltésére. Cserélje le a helyőrzőket <group-name>, <app-name>és <zip-file-path>.

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

Ez a kérés leküldéses telepítést indít el a feltöltött .zip fájlból.

Az aktuális és a korábbi üzemelő példányok áttekintéséhez futtassa az alábbi parancsokat. Cserélje le ismét a <deployment-user>, <deployment-password>és <app-name> a helyőrzőket.

$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

Üzembe helyezés ARM-sablonnal

A ZipDeploy ARM-sablonbővítménnyel leküldheti a .zip fájlt a függvényalkalmazásba.

Példa ZipDeploy ARM-sablonra

Ez a sablon egy éles és egy előkészítési pontot is tartalmaz, és üzembe helyezhető az egyik vagy a másikon. Általában ezzel a sablonnal telepítheti az előkészítési ponton, majd felcserélheti az új zip-csomagot az éles ponton.

{
  "$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
      }
    }
  ]
}

A kezdeti üzembe helyezéshez közvetlenül az éles ponton kell üzembe helyeznie. További információ: Ponttelepítések.

Függvények futtatása az üzembehelyezési csomagból

A függvényeket közvetlenül az üzembehelyezési csomagfájlból is futtathatja. Ez a módszer kihagyja a fájlok csomagból wwwroot a függvényalkalmazás könyvtárába való másolásának üzembe helyezési lépését. Ehelyett a csomagfájlt a Functions-futtatókörnyezet csatlakoztatja, és a wwwroot könyvtár tartalma írásvédetté válik.

A Zip üzembe helyezése ezzel a funkcióval integrálható, amelyet a függvényalkalmazás értékének WEBSITE_RUN_FROM_PACKAGE1beállításával engedélyezheti. További információ: A függvények futtatása üzembehelyezési csomagfájlból.

Üzembe helyezés testreszabása

Az üzembe helyezési folyamat feltételezi, hogy a leküldéses .zip fájl egy használatra kész alkalmazást tartalmaz. Alapértelmezés szerint nem futnak testreszabások. A folyamatos integrációval rendelkező buildfolyamatok engedélyezéséhez adja hozzá az alábbiakat az alkalmazásbeállításokhoz:

SCM_DO_BUILD_DURING_DEPLOYMENT=true

Ha .zip leküldéses üzembe helyezést használ, ez a beállítás alapértelmezés szerint hamis . Az alapértelmezett érték a folyamatos integrációs üzemelő példányokra igaz . Ha igaz értékre van állítva, az üzembe helyezéshez kapcsolódó beállításokat használja a rendszer az üzembe helyezés során. Ezeket a beállításokat alkalmazásbeállításokként vagy a .zip fájl gyökerében található .deployment konfigurációs fájlban konfigurálhatja. További információ: Adattár és üzembe helyezéssel kapcsolatos beállítások az üzembe helyezési referenciaban.

A függvényalkalmazás fájljainak letöltése

Ha a függvényeket az Azure Portal szerkesztőjével hozta létre, a meglévő függvényalkalmazás-projektet az alábbi módokon töltheti le .zip fájlként:

  • Az Azure Portalon:

    1. Jelentkezzen be az Azure Portalra, majd nyissa meg a függvényalkalmazást.

    2. Az Áttekintés lapon válassza az Alkalmazástartalom letöltése lehetőséget. Válassza ki a letöltési beállításokat, majd válassza a Letöltés lehetőséget.

      A függvényalkalmazás-projekt letöltése

      A letöltött .zip fájl a megfelelő formátumban van, amelyet újra közzé kell tenni a függvényalkalmazásban .zip leküldéses üzembe helyezés használatával. A portál letöltése a függvényalkalmazás közvetlenül a Visual Studióban való megnyitásához szükséges fájlokat is hozzáadhatja.

  • REST API-k használata:

    A következő üzembe helyezési GET API-val töltse le a fájlokat a <function_app> projektből:

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

    Beleértve /site/wwwroot/ azt is, hogy a zip-fájl csak a függvényalkalmazás projektfájljait tartalmazza, nem pedig a teljes webhelyet. Ha még nem jelentkezett be az Azure-ba, a rendszer erre kéri.

Egy .zip fájlt is letölthet egy GitHub-adattárból. Amikor letölt egy GitHub-adattárat .zip fájlként, a GitHub hozzáad egy további mappaszintet az ághoz. Ez az extra mappaszint azt jelenti, hogy nem helyezheti üzembe közvetlenül a .zip fájlt, amikor letöltötte a GitHubról. Ha GitHub-adattárat használ a függvényalkalmazás karbantartásához, az alkalmazás üzembe helyezéséhez folyamatos integrációt kell használnia.

Következő lépések