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-telepítéssel egyszerűen futtathatja a függvényeket egy csomagfájlból az Azure-ban. Ez az alapértelmezett üzembehelyezési technológia a Consumption, Elastic Premium és Dedikált (App Service) üzemeltetési csomagokban. A Rugalmas kihasználtság csomag nem támogatja a zip-alapú üzembe helyezést.
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.
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.
Üzembe helyezési .zip fájlkövetelmények
Az üzembe helyezendő zip-archívumnak tartalmaznia kell a függvényalkalmazás futtatásához szükséges összes fájlt. A Functions-projektmappák tartalmából manuálisan is létrehozhat zip-archívumot beépített .zip tömörítési funkcióval vagy külső eszközökkel.
Az archívumnak tartalmaznia kell a kibontott mappa gyökerében található host.json fájlt. A függvényalkalmazáshoz kijelölt nyelvi verem további követelményeket hoz létre:
- .NET (izolált feldolgozói modell)
- .NET (folyamatban lévő modell)
- Java
- JavaScript
- TypeScript
- PowerShell
- Python
Fontos
Az üzembe helyezéshez lefordított kimenetet létrehozó nyelvek esetében ügyeljen arra, hogy a közzétenni kívánt kimeneti mappa tartalmát ne a teljes projektmappát tömörítse. Amikor a Functions kinyeri a zip archívum tartalmát, a host.json
fájlnak a csomag gyökerében kell lennie.
A zip üzembe helyezési folyamat kinyeri a zip archívum fájljait és mappáit a wwwroot
címtárban. Ha az archívum létrehozásakor a szülőkönyvtárat is belefoglalja, a rendszer nem fogja megtalálni a várt fájlokat.wwwroot
Ü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(z) az --version
parancs használatával 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_PACKAGE
1
beá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:
Jelentkezzen be az Azure Portalra, majd nyissa meg a függvényalkalmazást.
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 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.