Erőforrás-üzembe helyezés automatizálása a függvényalkalmazáshoz az Azure Functionsben
Bicep-fájl vagy Azure Resource Manager-sablon használatával automatizálhatja egy függvényalkalmazás üzembe helyezésének folyamatát az új vagy meglévő Azure-erőforrásokon. Az ilyen automatizálás nagyszerű lehetőséget nyújt az erőforrás-telepítések és a forráskód devOpsban való integrálására, a függvényalkalmazások és a kapcsolódó erőforrások biztonsági mentésből való visszaállítására vagy az alkalmazástopológiák többszöri üzembe helyezésére.
Ez a cikk bemutatja, hogyan automatizálhatja az erőforrások létrehozását és az Azure Functions üzembe helyezését. A függvények által használt triggertől és kötéstől függően előfordulhat, hogy más erőforrásokat is üzembe kell helyeznie, amelyek nem tartoznak a jelen cikk hatókörébe.
Az adott sablonkód attól függ, hogy miként üzemelteti a függvényalkalmazást, hogy kódot vagy tárolóalapú függvényalkalmazást helyez üzembe, valamint az alkalmazás által használt operációs rendszert. Ez a cikk a következő üzemeltetési lehetőségeket támogatja:
Üzemeltetési lehetőség | Üzemelő példány típusa | További információ: |
---|---|---|
Azure Functions-használati csomag | Csak kóddal | Használati terv |
Azure Functions Elastic Premium-csomag | Kód | Konténer | Prémium csomag |
Dedikált Azure Functions-csomag (App Service) | Kód | Konténer | Dedikált terv |
Azure Container Apps | Csak tároló | Az Azure Functionst üzemeltető Container Apps |
Azure Arc | Kód | Konténer | App Service, Functions és Logic Apps az Azure Arcon (előzetes verzió) |
Szükséges erőforrások
Az Azure Functions által üzemeltetett üzemelő példányok általában az alábbi erőforrásokból állnak:
Erőforrás | Követelmény | Szintaxis és tulajdonságok referenciája |
---|---|---|
Tárfiók | Kötelező | Microsoft.Storage/storageAccounts |
Alkalmazás Elemzések összetevő | Ajánlott | Microsoft. Elemzések/összetevők |
Üzemeltetési terv | Kötelező1 | Microsoft.Web/serverfarms |
Függvényalkalmazás | Kötelező | Microsoft.Web/sites |
A használati csomaghoz tartozó Azure Functions-üzemelő példányok általában az alábbi erőforrásokból állnak:
Erőforrás | Követelmény | Szintaxis és tulajdonságok referenciája |
---|---|---|
Tárfiók | Kötelező | Microsoft.Storage/storageAccounts |
Alkalmazás Elemzések összetevő | Ajánlott | Microsoft. Elemzések/összetevők |
Függvényalkalmazás | Kötelező | Microsoft.Web/sites |
Az Azure Container Apps által üzemeltetett üzemelő példányok általában az alábbi erőforrásokból állnak:
Erőforrás | Követelmény | Szintaxis és tulajdonságok referenciája |
---|---|---|
Tárfiók | Kötelező | Microsoft.Storage/storageAccounts |
Alkalmazás Elemzések összetevő | Ajánlott | Microsoft. Elemzések/összetevők |
Felügyelt környezet | Kötelező | Microsoft.App/managedEnvironments |
Függvényalkalmazás | Kötelező | Microsoft.Web/sites |
Az Azure Arc által üzemeltetett üzemelő példányok általában az alábbi erőforrásokból állnak:
Erőforrás | Követelmény | Szintaxis és tulajdonságok referenciája |
---|---|---|
Tárfiók | Kötelező | Microsoft.Storage/storageAccounts |
Alkalmazás Elemzések összetevő | Ajánlott | Microsoft. Elemzések/összetevők |
App Service Kubernetes-környezet | Kötelező | Microsoft.ExtendedLocation/customLocations |
Függvényalkalmazás | Kötelező | Microsoft.Web/sites |
1Nem szükséges explicit üzemeltetési csomag, ha a függvényalkalmazást használatalapú csomagban szeretné üzemeltetni.
Ha több erőforrást helyez üzembe egyetlen Bicep-fájlban vagy ARM-sablonban, fontos az erőforrások létrehozásának sorrendje. Ez a követelmény az erőforrások közötti függőségek eredménye. Ilyen függőségek esetén mindenképpen használja az elemet a dependsOn
függőség meghatározására a függő erőforrásban. További információ: Az erőforrások ARM-sablonokban vagy erőforrásfüggőségekben való üzembe helyezésének sorrendje a Bicepben.
Ez a cikk feltételezi, hogy alapvető ismereteket nyújt a Bicep-fájlok létrehozásáról vagy az Azure Resource Manager-sablonok készítéséről, és a példák külön szakaszokként jelennek meg adott erőforrásokhoz. A teljes Bicep-fájl- és ARM-sablonpéldák széles halmazát az alábbi függvényalkalmazás-üzembehelyezési példákban tekinti meg.
Előfeltételek
Ez a cikk feltételezi, hogy már létrehozott egy felügyelt környezetet az Azure Container Appsben. A Container Appsben üzemeltetett függvényalkalmazás létrehozásához szüksége van a felügyelt környezet nevére és azonosítójára is.
Ez a cikk feltételezi, hogy már létrehozott egy App Service-kompatibilis egyéni helyet egy Azure Arc-kompatibilis Kubernetes-fürtön. Az Egyéni Azure Arc-helyen üzemeltetett függvényalkalmazás létrehozásához az egyéni helyazonosítóra és a Kubernetes-környezetazonosítóra is szükség van.
Storage-fiók létrehozása
Minden függvényalkalmazáshoz Azure Storage-fiók szükséges. Olyan általános célú fiókra van szüksége, amely támogatja a blobokat, táblákat, üzenetsorokat és fájlokat. További információ: Azure Functions Storage-fiókkövetelmények.
Fontos
A tárfiók fontos alkalmazásadatok tárolására szolgál, néha magában az alkalmazáskódban is. Korlátoznia kell a hozzáférést más alkalmazásoktól és felhasználóktól a tárfiókhoz.
Ez a példaszakasz létrehoz egy standard általános célú v2-tárfiókot:
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-05-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"kind": "StorageV2",
"sku": {
"name": "[parameters('storageAccountType')]"
},
"properties": {
"supportsHttpsTrafficOnly": true,
"defaultToOAuthAuthentication": true
}
}
]
További információt a sablonok adattárában található teljes azuredeploy.json fájlban talál.
Ennek a tárfióknak a kapcsolati sztring kell beállítania alkalmazásbeállításként, amelyet a AzureWebJobsStorage
Functions igényel. A cikkben szereplő sablonok ezt a kapcsolati sztring értéket a létrehozott tárfiók alapján hozzák létre, ami ajánlott eljárás. További információ: Alkalmazáskonfiguráció.
Tárolási naplók engedélyezése
Mivel a tárfiókot a függvényalkalmazás fontos adataihoz használják, figyelnie kell a fiókot a tartalom módosításához. A tárfiók figyeléséhez konfigurálnia kell az Azure Monitor-erőforrásnaplókat az Azure Storage-hoz. Ebben a példában a naplók célhelyeként egy log Analytics-munkaterületet myLogAnalytics
használunk.
"resources": [
{
"type": "Microsoft.Insights/diagnosticSettings",
"apiVersion": "2021-05-01-preview",
"scope": "[format('Microsoft.Storage/storageAccounts/{0}/blobServices/default', parameters('storageAccountName'))]",
"name": "[parameters('storageDataPlaneLogsName')]",
"properties": {
"workspaceId": "[resourceId('Microsoft.OperationalInsights/workspaces', parameters('myLogAnalytics'))]",
"logs": [
{
"category": "StorageWrite",
"enabled": true
}
],
"metrics": [
{
"category": "Transaction",
"enabled": true
}
]
}
}
]
Ugyanez a munkaterület használható az alkalmazás Elemzések később definiált erőforráshoz. További információkért, beleértve a naplók kezelését, tekintse meg az Azure Storage monitorozását.
Alkalmazás Elemzések létrehozása
A függvényalkalmazások végrehajtásának figyeléséhez az alkalmazás Elemzések ajánlott. Ebben a példában az alkalmazás Elemzések erőforrás a következő típussal Microsoft.Insights/components
és típussal web
van definiálva:
{
"type": "Microsoft.Insights/components",
"apiVersion": "2020-02-02",
"name": "[variables('applicationInsightsName')]",
"location": "[parameters('appInsightsLocation')]",
"tags": {
"[format('hidden-link:{0}', resourceId('Microsoft.Web/sites', parameters('functionAppName')))]": "Resource"
},
"properties": {
"Application_Type": "web"
},
"kind": "web"
},
További információt a sablonok adattárában található teljes azuredeploy.json fájlban talál.
A kapcsolatot az alkalmazásbeállítással kell megadni a APPLICATIONINSIGHTS_CONNECTION_STRING
függvényalkalmazásnak. További információ: Alkalmazásbeállítások.
A cikkben szereplő példák beolvasják a létrehozott példány kapcsolati sztring értékét. A régebbi verziók ehelyett a rendszerállapot-kulcs beállítására használhatók APPINSIGHTS_INSTRUMENTATIONKEY
, ami már nem ajánlott.
Az üzemeltetési terv létrehozása
Az Azure Functions Premium-csomagban vagy dedikált (App Service-) csomagban üzemeltetett alkalmazásoknak explicit módon kell meghatározniuk az üzemeltetési tervet.
A Prémium csomag ugyanazt a skálázást kínálja, mint a Használati csomag, de dedikált erőforrásokat és további képességeket is tartalmaz. További információ: Azure Functions Premium-csomag.
A Prémium csomag egy speciális erőforrástípus serverfarm
. Megadhatja a tulajdonságot a tulajdonságban lévő tulajdonság értékével sku
vagy Name
EP3
használatávalEP1
EP2
. A Functions üzemeltetési csomag meghatározásának módja attól függ, hogy a függvényalkalmazás Windowson vagy Linuxon fut-e. Ez a példaszakasz létrehoz egy EP1
tervet:
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-03-01",
"name": "[parameters('hostingPlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "EP1",
"tier": "ElasticPremium",
"family": "EP"
},
"kind": "elastic",
"properties": {
"maximumElasticWorkerCount": 20
}
}
]
További információt a sablonok adattárában található teljes azuredeploy.json fájlban talál.
Az objektummal kapcsolatos további információkért sku
tekintse meg SkuDefinition
vagy tekintse át a példasablonokat.
A Dedikált (App Service) csomagban a függvényalkalmazás dedikált virtuális gépeken fut az App Service-csomagokban az Alapszintű, Standard és Prémium termékváltozatokon, a webalkalmazásokhoz hasonlóan. További információ: Dedikált csomag.
Bicep-mintafájl/Azure Resource Manager-sablonért lásd: Függvényalkalmazás a Azure-alkalmazás Service-csomagban
A Functionsben a dedikált csomag csak egy normál App Service-csomag, amelyet egy serverfarm
erőforrás határoz meg. Legalább az name
értéket meg kell adnia. A támogatott tervnevek listáját a --sku
dedikált terv támogatott értékeinek aktuális listájában az appservice plan create
találja.
Az üzemeltetési terv meghatározásának módja attól függ, hogy a függvényalkalmazás Windowson vagy Linuxon fut-e:
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-03-01",
"name": "[parameters('hostingPlanName')]",
"location": "[parameters('location')]",
"sku": {
"tier": "Standard",
"name": "S1",
"size": "S1",
"family": "S",
"capacity": 1
}
}
]
További információt a sablonok adattárában található teljes azuredeploy.json fájlban talál.
Az üzemeltetési terv létrehozása
Nem kell explicit módon definiálnia egy használati üzemeltetési terv erőforrását. Ha kihagyja ezt az erőforrásdefiníciót, a rendszer automatikusan létrehoz vagy kijelöl egy csomagot régiónként, amikor maga a függvényalkalmazás-erőforrást hozza létre.
A használati terveket explicit módon definiálhatja egy speciális erőforrástípuskéntserverfarm
, amelyet a tulajdonságok és sku
a computeMode
tulajdonságok értékével Dynamic
adhat meg. Ez a példaszakasz bemutatja, hogyan definiálhat explicit módon használati tervet. Az üzemeltetési terv meghatározásának módja attól függ, hogy a függvényalkalmazás Windowson vagy Linuxon fut-e.
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-03-01",
"name": "[parameters('hostingPlanName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Y1",
"tier": "Dynamic",
"size": "Y1",
"family": "Y",
"capacity": 0
},
"properties": {
"computeMode": "Dynamic"
}
}
]
További információt a sablonok adattárában található teljes azuredeploy.json fájlban talál.
Kubernetes-környezet
Az Azure Functions kódprojektként vagy tárolóalapú függvényalkalmazásként is üzembe helyezhető az Azure Arc-kompatibilis Kubernetesben .
Az alkalmazás létrehozásához és az erőforrások megtervezéséhez már létre kell hoznia egy App Service Kubernetes-környezetet egy Azure Arc-kompatibilis Kubernetes-fürthöz. A cikkben szereplő példák feltételezik, hogy rendelkezik annak az egyéni helynek (customLocationId
) és App Service Kubernetes-környezetnek (kubeEnvironmentId
) az erőforrás-azonosítójával, amelyre üzembe helyezve van, és amely ebben a példában van beállítva:
"parameters": {
"kubeEnvironmentId" : {
"type": "string"
},
"customLocationId" : {
"type": "string"
}
}
Mind a helyeknek, mind a terveknek egy extendedLocation
mezőn keresztül kell hivatkoznia az egyéni helyre. Ahogy az ebben a csonkolt példában is látható, extendedLocation
a következőhöz tartozó társként kind
location
kívül helyezkedik properties
el:
{
"type": "Microsoft.Web/serverfarms",
...
{
"extendedLocation": {
"name": "[parameters('customLocationId')]"
},
}
}
A terverőforrásnak a Kubernetes (K1
) értékét SKU
kell használnia, a kind
mezőnek linux,kubernetes
és a reserved
tulajdonságnak kell lennie true
, mivel linuxos telepítésről van szó. Az egyéni helyazonosítót és kubeEnvironmentProfile.id
a Kubernetes-környezetazonosítót is be kell állítaniaextendedLocation
, amely a következő példaszakaszhoz hasonlóan nézhet ki:
"resources": [
{
"type": "Microsoft.Web/serverfarms",
"apiVersion": "2022-03-01",
"name": "[parameters('hostingPlanName')]",
"location": "[parameters('location')]",
"kind": "linux,kubernetes",
"sku": {
"name": "K1",
"tier": "Kubernetes"
},
"extendedLocation": {
"name": "[parameters('customLocationId')]"
},
"properties": {
"kubeEnvironmentProfile": {
"id": "[parameters('kubeEnvironmentId')]"
},
"reserved": true
}
}
]
A függvényalkalmazás létrehozása
A függvényalkalmazás erőforrását egy olyan típusú Microsoft.Web/sites
kind
erőforrás határozza meg, amely legalább a függvényalkalmazást is magában foglalja functionapp
.
A függvényalkalmazás-erőforrás definiálásának módja attól függ, hogy Linuxon vagy Windowson üzemel-e:
A Windows rendszeren való futtatáshoz szükséges alkalmazásbeállítások listáját az Alkalmazáskonfiguráció című témakörben találja. Egy Minta Bicep-fájl/Azure Resource Manager-sablonért tekintse meg a Windowsban üzemeltetett függvényalkalmazást egy használati tervsablonban .
A Windows rendszeren való futtatáshoz szükséges alkalmazásbeállítások listáját az Alkalmazáskonfiguráció című témakörben találja.
Feljegyzés
Ha úgy dönt, hogy opcionálisan definiálja a Használati csomagot, akkor be kell állítania a serverFarmId
tulajdonságot az alkalmazásban, hogy az a terv erőforrás-azonosítójára mutatjon. Győződjön meg arról, hogy a függvényalkalmazás rendelkezik olyan dependsOn
beállítással, amely a tervre is hivatkozik. Ha nem definiált explicit módon egy tervet, létrejön egy ön számára.
Állítsa be az serverFarmId
alkalmazás tulajdonságát úgy, hogy az a terv erőforrás-azonosítójára mutatjon. Győződjön meg arról, hogy a függvényalkalmazás rendelkezik olyan dependsOn
beállítással, amely a tervre is hivatkozik.
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[parameters('functionAppName')]",
"location": "[parameters('location')]",
"kind": "functionapp",
"dependsOn": [
"[resourceId('Microsoft.Insights/components', parameters('applicationInsightsName'))]",
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"siteConfig": {
"appSettings": [
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference(resourceId('Microsoft.Insights/components', parameters('applicationInsightsName')), '2020-02-02').ConnectionString]"
},
{
"name": "AzureWebJobsStorage",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', parameters('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)]"
},
{
"name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', parameters('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)]"
},
{
"name": "WEBSITE_CONTENTSHARE",
"value": "[toLower(parameters('functionAppName'))]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~14"
}
]
}
}
}
]
A teljes körű példaért tekintse meg ezt a azuredeploy.json sablont.
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[parameters('functionAppName')]",
"location": "[parameters('location')]",
"kind": "functionapp",
"dependsOn": [
"[resourceId('Microsoft.Insights/components', parameters('applicationInsightsName'))]",
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"siteConfig": {
"alwaysOn": true,
"appSettings": [
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference(resourceId('Microsoft.Insights/components', parameters('applicationInsightsName')), '2020-02-02').ConnectionString]"
},
{
"name": "AzureWebJobsStorage",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};EndpointSuffix={1};AccountKey={2}', parameters('storageAccountName'), environment().suffixes.storage, listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)]"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~14"
}
]
}
}
}
]
A teljes körű példaért tekintse meg ezt a azuredeploy.json sablont.
Üzembehelyezési források
A Bicep-fájl vagy AZ ARM-sablon opcionálisan egy üzembe helyezést is meghatározhat a függvénykódhoz, amely a következő módszereket tartalmazhatja:
Üzembehelyezési források
A Bicep-fájl vagy AZ ARM-sablon opcionálisan egy zip-alapú üzembe helyezési csomag használatával is meghatározhatja a függvénykód üzembe helyezését.
Ahhoz, hogy az alkalmazás sikeresen üzembe helyezhető legyen az Azure Resource Manager használatával, fontos tisztában lenni az erőforrások Azure-ban való üzembe helyezésének módjával. A legtöbb példában a legfelső szintű konfigurációkat a rendszer a használatával siteConfig
alkalmazza. Fontos, hogy ezeket a konfigurációkat a legfelső szinten állítsa be, mivel ezek információt közvetítenek a Functions-futtatókörnyezetbe és az üzembe helyezési motorba. A gyermekerőforrás sourcecontrols/web
alkalmazása előtt felső szintű információkra van szükség. Bár ezeket a beállításokat a gyermekszintű config/appSettings
erőforrásban is konfigurálhatja, bizonyos esetekben a függvényalkalmazást üzembe kell helyezni az alkalmazás alkalmazása előttconfig/appSettings
.
Zip üzembehelyezési csomag
A zip-telepítés ajánlott módja a függvényalkalmazás kódjának üzembe helyezésének. Alapértelmezés szerint a zip-alapú üzembe helyezést használó függvények magukban az üzembe helyezési csomagban futnak. További információkért, beleértve az üzembehelyezési csomag követelményeit, tekintse meg az Azure Functions Zip-alapú üzembe helyezését. Erőforrás-üzembe helyezés automatizálása esetén hivatkozhat az .zip üzembehelyezési csomagra a Bicep- vagy ARM-sablonban.
Ha zip-alapú üzembe helyezést szeretne használni a sablonban, állítsa be a WEBSITE_RUN_FROM_PACKAGE
beállítást az alkalmazásban 1
, és adja meg az erőforrásdefiníciót /zipDeploy
.
Egy Linux-alapú használatalapú csomag esetében állítsa be az üzembehelyezési csomag URI-ját közvetlenül a beállításban, ahogyan az ebben a WEBSITE_RUN_FROM_PACKAGE
példasablonban látható.
Ez a példa egy zip-alapú üzembehelyezési forrást ad hozzá egy meglévő alkalmazáshoz:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"functionAppName": {
"type": "string",
"metadata": {
"description": "The name of the Azure Function app."
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]",
"metadata": {
"description": "The location into which the resources should be deployed."
}
},
"packageUri": {
"type": "string",
"metadata": {
"description": "The zip content url."
}
}
},
"resources": [
{
"name": "[concat(parameters('functionAppName'), '/ZipDeploy')]",
"type": "Microsoft.Web/sites/extensions",
"apiVersion": "2021-02-01",
"location": "[parameters('location')]",
"properties": {
"packageUri": "[parameters('packageUri')]"
}
}
]
}
A zip-alapú üzembehelyezési erőforrások sablonba való felvételekor tartsa szem előtt az alábbi szempontokat:
- A Linuxon futó fogyasztási csomagok nem támogatják
WEBSITE_RUN_FROM_PACKAGE = 1
a . Ehelyett közvetlenül a beállításban kell beállítania az üzembehelyezési csomag URI-játWEBSITE_RUN_FROM_PACKAGE
. További információ: WEBSITE_RUN_FROM_PACKAGE. Egy példasablont a Linuxon üzemeltetett függvényalkalmazás egy használatalapú csomagban talál.
A
packageUri
függvények által elérhető helynek kell lennie. Fontolja meg az Azure Blob Storage használatát közös hozzáférésű jogosultságkóddal (SAS). Az SAS lejárta után a Functions már nem tudja elérni a megosztást az üzembe helyezésekhez. Az SAS újragenerálásakor ne felejtse el frissíteni aWEBSITE_RUN_FROM_PACKAGE
beállítást az új URI-értékkel.URI beállításakor
WEBSITE_RUN_FROM_PACKAGE
manuálisan kell szinkronizálnia az eseményindítókat.A beállítások hozzáadásakor vagy frissítésekor mindig állítsa be az összes szükséges alkalmazásbeállítást a
appSettings
gyűjteményben. A frissítés eltávolítja a nem explicit módon beállított meglévő beállításokat. További információ: Alkalmazáskonfiguráció.A Functions nem támogatja a webes üzembe helyezést (msdeploy) a csomagtelepítésekhez. Ehelyett zip üzembe helyezést kell használnia az üzembehelyezési folyamatokban és az automatizálásban. További információ: Zip deployment for Azure Functions.
Távoli buildek
Az üzembe helyezési folyamat feltételezi, hogy a használt .zip fájl vagy egy zip-telepítés egy használatra kész alkalmazást tartalmaz. Ez azt jelenti, hogy alapértelmezés szerint nem futnak testreszabások.
Vannak azonban olyan forgatókönyvek, amelyek megkövetelik az alkalmazás távoli újraépítését, például amikor Linux-specifikus csomagokat kell lekérnie a Pythonban, vagy Node.js windowsos számítógépen fejlesztett alkalmazásokat. Ebben az esetben úgy konfigurálhatja a Functionst, hogy távoli buildet hajtson végre a kódon a zip üzembe helyezése után.
A távoli build kérésének módja attól függ, hogy milyen operációs rendszert helyez üzembe:
Amikor egy alkalmazást üzembe helyeznek a Windowsban, a rendszer nyelvspecifikus parancsokat futtat (például dotnet restore
C#-alkalmazásokhoz vagy npm install
Node.js-alkalmazásokhoz).
A folyamatos integrációhoz szükséges buildelési folyamatok engedélyezéséhez adja hozzá SCM_DO_BUILD_DURING_DEPLOYMENT=true
az alkalmazásbeállításokat az üzembehelyezési kódhoz, és távolítsa el a WEBSITE_RUN_FROM_PACKAGE
teljes elemet.
Linux-tárolók
Ha tárolóalapú függvényalkalmazást helyez üzembe egy Azure Functions Premium- vagy Dedikált Azure Functions-csomagban, a következőt kell tennie:
- Állítsa be a
linuxFxVersion
helybeállítást a tárolólemezkép azonosítójával. - A tároló magánregisztrációs adatbázisból való lekéréséhez állítsa be a szükséges
DOCKER_REGISTRY_SERVER_*
beállításokat. - Alkalmazásbeállítás beállítása
WEBSITES_ENABLE_APP_SERVICE_STORAGE
a következőrefalse
: .
További információ: Alkalmazáskonfiguráció.
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[parameters('functionAppName')]",
"location": "[parameters('location')]",
"kind": "functionapp",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
],
"properties": {
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"siteConfig": {
"appSettings": [
{
"name": "AzureWebJobsStorage",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)]"
},
{
"name": "FUNCTIONS_WORKER_RUNTIME",
"value": "node"
},
{
"name": "WEBSITE_NODE_DEFAULT_VERSION",
"value": "~14"
},
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "DOCKER_REGISTRY_SERVER_URL",
"value": "[parameters('dockerRegistryUrl')]"
},
{
"name": "DOCKER_REGISTRY_SERVER_USERNAME",
"value": "[parameters('dockerRegistryUsername')]"
},
{
"name": "DOCKER_REGISTRY_SERVER_PASSWORD",
"value": "[parameters('dockerRegistryPassword')]"
},
{
"name": "WEBSITES_ENABLE_APP_SERVICE_STORAGE",
"value": "false"
}
],
"linuxFxVersion": "DOCKER|myacr.azurecr.io/myimage:mytag"
}
}
}
]
Tárolóalapú függvények Azure Container Appsben való üzembe helyezésekor a sablonnak a következőnek kell lennie:
- Állítsa a
kind
mezőt a következő értékrefunctionapp,linux,container,azurecontainerapps
: . - Állítsa a
managedEnvironmentId
helytulajdonságot a Container Apps-környezet teljes URI-jára. - Adjon hozzá erőforráshivatkozást a webhely gyűjteményéhez
dependsOn
, amikor a webhelyvel egy időben hoz létre erőforrástMicrosoft.App/managedEnvironments
.
A privát tárolóregisztrációs adatbázisból egy meglévő Container Apps-környezetbe üzembe helyezett tárolóalapú függvényalkalmazás definíciója az alábbi példához hasonlóan nézhet ki:
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[parameters('functionAppName')]",
"kind": "functionapp,linux,container,azurecontainerapps",
"location": "[parameters('location')]",
"dependsOn": [
"[resourceId('Microsoft.Insights/components', parameters('applicationInsightsName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
],
"properties": {
"serverFarmId": "[parameters('hostingPlanName')]",
"siteConfig": {
"linuxFxVersion": "DOCKER|myacr.azurecr.io/myimage:mytag",
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "AzureWebJobsStorage",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference(resourceId('Microsoft.Insights/components', parameters('applicationInsightsName')), '2020-02-02').ConnectionString]"
}
],
},
"managedEnvironmentId": "[parameters('managedEnvironmentId')]"
}
}
]
Ha függvényeket helyez üzembe az Azure Arcban, a függvényalkalmazás-erőforrás mezőjéhez kind
beállított érték az üzembe helyezés típusától függ:
Üzemelő példány típusa | kind mezőérték |
---|---|
Csak kódalapú üzembe helyezés | functionapp,linux,kubernetes |
Tárolók üzembe helyezése | functionapp,linux,kubernetes,container |
Azt is be kell állítania, ahogyan az customLocationId
üzemeltetési terv erőforrásához tette.
A .NET 6 gyorsútmutató-rendszerképet használó tárolóalapú függvényalkalmazás definíciója a következő példához hasonlóan nézhet ki:
"resources": [
{
"type": "Microsoft.Web/sites",
"apiVersion": "2022-03-01",
"name": "[parameters('functionAppName')]",
"kind": "kubernetes,functionapp,linux,container",
"location": "[parameters('location')]",
"extendedLocation": {
"name": "[parameters('customLocationId')]"
},
"dependsOn": [
"[resourceId('Microsoft.Insights/components', parameters('applicationInsightsName'))]",
"[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]",
"[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]"
],
"properties": {
"serverFarmId": "[parameters('hostingPlanName')]",
"siteConfig": {
"linuxFxVersion": "DOCKER|mcr.microsoft.com/azure-functions/4-dotnet-isolated6.0-appservice-quickstart",
"appSettings": [
{
"name": "FUNCTIONS_EXTENSION_VERSION",
"value": "~4"
},
{
"name": "AzureWebJobsStorage",
"value": "[format('DefaultEndpointsProtocol=https;AccountName={0};AccountKey={1}', parameters('storageAccountName'), listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2021-09-01').keys[0].value)]"
},
{
"name": "APPLICATIONINSIGHTS_CONNECTION_STRING",
"value": "[reference(resourceId('Microsoft.Insights/components', parameters('applicationInsightsName')), '2020-02-02').ConnectionString]"
}
],
"alwaysOn": true
}
}
}
]
Alkalmazáskonfiguráció
A Functions a következő lehetőségeket kínálja a függvényalkalmazás azure-beli konfigurálásához:
Konfiguráció | Microsoft.Web/sites Tulajdonság |
---|---|
Webhely beállításai | siteConfig |
Alkalmazásbeállítások | siteConfig.appSettings Gyűjtemény |
A tulajdonsághoz siteConfig
a következő webhelybeállítások szükségesek:
Ezek az alkalmazásbeállítások szükségesek (vagy ajánlottak) egy adott operációs rendszerhez és üzemeltetési beállításhoz:
Ezek az alkalmazásbeállítások szükségesek a tárolótelepítésekhez:
Ezekre a beállításokra csak privát tárolóregisztrációs adatbázisból való üzembe helyezéskor van szükség:
Tartsa szem előtt ezeket a szempontokat a webhely- és alkalmazásbeállítások Bicep-fájlok vagy ARM-sablonok használatával történő használatakor:
- Fontos szempontokat kell figyelembe vennie, amikor automatikus üzembe helyezést kell beállítania
WEBSITE_CONTENTSHARE
. Részletes útmutatásért tekintse meg aWEBSITE_CONTENTSHARE
hivatkozást.
- Tárolótelepítések esetén is állítsa be
WEBSITES_ENABLE_APP_SERVICE_STORAGE
azfalse
értéket, mivel az alkalmazás tartalma magában a tárolóban van megadva.
Az alkalmazásbeállításokat mindig a
Microsoft.Web/sites
létrehozott erőforrás gyűjteményekéntsiteConfig/appSettings
kell meghatároznia, ahogyan az ebben a cikkben található példákban is látható. Ez biztosítja, hogy a függvényalkalmazás futtatásához szükséges beállítások elérhetők legyenek a kezdeti indításkor.Ha sablonokkal adja hozzá vagy frissíti az alkalmazásbeállításokat, győződjön meg arról, hogy az összes meglévő beállítást belefoglalja a frissítésbe. Ezt azért kell megtennie, mert az alapul szolgáló frissítési REST API-hívások felülírják a teljes
/config/appsettings
erőforrást. Ha eltávolítja a meglévő beállításokat, a függvényalkalmazás nem fog futni. Az egyes alkalmazásbeállítások programozott frissítéséhez ehelyett az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával végezheti el ezeket a módosításokat. További információ: Az alkalmazásbeállítások használata.
Ponttelepítések
A Functions lehetővé teszi a kód különböző verzióinak üzembe helyezését a függvényalkalmazás egyedi végpontjaira. Ez megkönnyíti a függvényfrissítések fejlesztését, érvényesítését és üzembe helyezését anélkül, hogy az hatással lenne az éles környezetben futó függvényekre. Az üzembehelyezési pontok a Azure-alkalmazás Szolgáltatás egyik funkciója. A rendelkezésre álló tárolóhelyek száma az üzemeltetési tervtől függ. További információ: Azure Functions üzembehelyezési pontok függvényei.
A ponterőforrás ugyanúgy van definiálva, mint egy függvényalkalmazás-erőforrás (Microsoft.Web/sites
), de ehelyett az erőforrás-azonosítót Microsoft.Web/sites/slots
használja. A Prémium csomagban éles és előkészítési pontot egyaránt létrehozó üzembe helyezést (Bicep- és ARM-sablonokban is) lásd : Azure Function App with a Deployment Slot.
A felcserélés sablonok használatával történő végrehajtásáról a Resource Manager-sablonok automatizálása című témakörben olvashat.
Tartsa szem előtt a következő szempontokat a ponttelepítések használatakor:
Ne állítsa be explicit módon a beállítást az
WEBSITE_CONTENTSHARE
üzembehelyezési pont definíciójában. Ez a beállítás akkor jön létre, ha az alkalmazás az üzembehelyezési ponton jön létre.A pontok felcserélésekor egyes alkalmazásbeállítások "ragadósnak" minősülnek, mivel azok a ponttal maradnak, és nem a felcserélt kóddal. Ezt a pontbeállítást úgy határozhatja meg, hogy belefogadja
"slotSetting":true
a sablon adott alkalmazásbeállítás-definíciójához. További információ: Beállítások kezelése.
Biztonságos üzemelő példányok
A függvényalkalmazást olyan üzembe helyezésben hozhatja létre, amelyben egy vagy több erőforrást biztonságossá tettek a virtuális hálózatokkal való integrációval. A függvényalkalmazás virtuális hálózati integrációját egy Microsoft.Web/sites/networkConfig
erőforrás határozza meg. Ez az integráció a hivatkozott függvényalkalmazástól és a virtuális hálózati erőforrásoktól is függ. A függvényalkalmazás más privát hálózati erőforrásoktól is függhet, például privát végpontoktól és útvonalaktól. További információkért tekintse meg az Azure Functions hálózatkezelési lehetőségeit.
Biztonságos tárfiókot használó központi telepítés létrehozásakor explicit módon kell beállítania a WEBSITE_CONTENTSHARE
beállítást, és létre kell hoznia a beállításban elnevezett fájlmegosztási erőforrást. Győződjön meg arról, hogy a Microsoft.Storage/storageAccounts/fileServices/shares
példában (ARM-sablon|Bicep-fájl) látható érték WEBSITE_CONTENTSHARE
alapján hoz létre erőforrást. A webhelytulajdonságot vnetContentShareEnabled
is igaz értékre kell állítania.
Feljegyzés
Ha ezek a beállítások nem részei egy biztonságos tárfiókot használó üzembe helyezésnek, a következő hibaüzenet jelenik meg az üzembe helyezés ellenőrzése során: Could not access storage account using provided connection string
.
Ezek a projektek Bicep- és ARM-sablonpéldákat is kínálnak a függvényalkalmazások virtuális hálózaton való üzembe helyezésére, beleértve a hálózati hozzáférés korlátozásait is:
Korlátozott forgatókönyv | Leírás |
---|---|
Függvényalkalmazás létrehozása virtuális hálózati integrációval | A függvényalkalmazás egy virtuális hálózatban jön létre, amelyben teljes hozzáféréssel rendelkezik az adott hálózat erőforrásaihoz. A függvényalkalmazás bejövő és kimenő hozzáférése nincs korlátozva. További információ: Virtuális hálózat integrációja. |
Biztonságos tárfiókhoz hozzáférő függvényalkalmazás létrehozása | A létrehozott függvényalkalmazás egy biztonságos tárfiókot használ, amelyet a Functions privát végpontok használatával ér el. További információért lásd: Tárfiók korlátozása virtuális hálózatra. |
Privát végpontokat használó függvényalkalmazás és tárfiók létrehozása | A létrehozott függvényalkalmazás csak privát végpontokkal érhető el, és privát végpontokat használ a tárolási erőforrások eléréséhez. További információ: Privát végpontok. |
Korlátozott hálózati beállítások
Akkor is szükség lehet ezekre a beállításokra, ha a függvényalkalmazás hálózati korlátozásokkal rendelkezik:
Beállítás | Érték | Leírás |
---|---|---|
WEBSITE_CONTENTOVERVNET |
1 |
Alkalmazásbeállítás, amely lehetővé teszi a függvényalkalmazás skálázását, ha a tárfiók virtuális hálózatra van korlátozva. További információért lásd: Tárfiók korlátozása virtuális hálózatra. |
vnetrouteallenabled |
1 |
Helybeállítás, amely a függvényalkalmazásból érkező összes forgalmat a virtuális hálózat használatára kényszeríti. További információ: Regionális virtuális hálózat integrációja. Ez a webhelybeállítás felülírja az alkalmazás beállításait WEBSITE_VNET_ROUTE_ALL . |
A hálózati korlátozások szempontjai
Ha a privát végpontokon keresztül korlátozza a tárfiókhoz való hozzáférést, nem férhet hozzá a tárfiókhoz a portálon vagy a virtuális hálózaton kívüli eszközökön keresztül. Az alapértelmezett hálózati hozzáférési szabály kezelésével hozzáférést adhat a tárfiók biztonságos IP-címéhez vagy virtuális hálózatához.
A sablon létrehozása
A Bicep- vagy ARM-sablonokkal rendelkező szakértők egy egyszerű szövegszerkesztővel manuálisan kódohatják az üzemelő példányokat. A többiek számára többféleképpen is egyszerűbbé teheti a fejlesztési folyamatot:
Visual Studio Code: Vannak olyan bővítmények, amelyek segítenek a Bicep-fájlok és az ARM-sablonok használatában. Ezekkel az eszközökkel meggyőződhet arról, hogy a kód helyes, és alapvető ellenőrzést biztosítanak.
Azure Portal: Amikor létrehozza a függvényalkalmazást és a kapcsolódó erőforrásokat a portálon, az utolsó Áttekintés + létrehozás képernyő egy Sablon letöltése automatizálási hivatkozással rendelkezik.
Ez a hivatkozás a portálon kiválasztott beállítások alapján létrehozott ARM-sablont mutatja be. Bár ez a sablon kissé összetett lehet, amikor sok új erőforrással rendelkező függvényalkalmazást hoz létre, jó referenciaként szolgálhat az ARM-sablon megjelenéséhez.
A sablon ellenőrzése
Amikor manuálisan hozza létre az üzembehelyezési sablonfájlt, fontos ellenőrizni a sablont az üzembe helyezés előtt. Az összes üzembehelyezési módszer ellenőrzi a sablon szintaxisát, és hibaüzenetet validation failed
jelenít meg az alábbi JSON formátumú példában látható módon:
{"error":{"code":"InvalidTemplate","message":"Deployment template validation failed: 'The resource 'Microsoft.Web/sites/func-xyz' is not defined in the template. Please see https://aka.ms/arm-template for usage details.'.","additionalInfo":[{"type":"TemplateViolation","info":{"lineNumber":0,"linePosition":0,"path":""}}]}}
A következő módszerekkel ellenőrizheti a sablont az üzembe helyezés előtt:
A következő Azure-erőforráscsoport üzembe helyezési v2 feladata , amely deploymentMode: 'Validation'
arra utasítja az Azure Pipelinest, hogy ellenőrizze a sablont.
- task: AzureResourceManagerTemplateDeployment@3
inputs:
deploymentScope: 'Resource Group'
subscriptionId: # Required subscription ID
action: 'Create Or Update Resource Group'
resourceGroupName: # Required resource group name
location: # Required when action == Create Or Update Resource Group
templateLocation: 'Linked artifact'
csmFile: # Required when TemplateLocation == Linked Artifact
csmParametersFile: # Optional
deploymentMode: 'Validation'
Teszterőforrás-csoportot is létrehozhat az előzetes és üzembehelyezési hibák megkereséséhez.
A sablon üzembe helyezése
A Bicep-fájl és -sablon üzembe helyezéséhez az alábbi módszerek bármelyikét használhatja:
Üzembe helyezés az Azure-ban gomb
Feljegyzés
Ez a módszer jelenleg nem támogatja a Bicep-fájlok üzembe helyezését.
Cserélje le <url-encoded-path-to-azuredeploy-json>
a fájl nyers elérési útjának URL-címmel kódolt verziójára a azuredeploy.json
GitHubon.
Íme egy példa, amely a markdownt használja:
[![Deploy to Azure](https://azuredeploy.net/deploybutton.png)](https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>)
Íme egy példa, amely HTML-t használ:
<a href="https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>" target="_blank"><img src="https://azuredeploy.net/deploybutton.png"></a>
Üzembe helyezés a PowerShell használatával
Az alábbi PowerShell-parancsok létrehoznak egy erőforráscsoportot, és üzembe helyeznek egy Bicep-fájlt/ARM-sablont, amely létrehoz egy függvényalkalmazást a szükséges erőforrásokkal. A helyi futtatáshoz telepítve kell lennie az Azure PowerShellnek . Futtassa Connect-AzAccount
a bejelentkezést.
# Register Resource Providers if they're not already registered
Register-AzResourceProvider -ProviderNamespace "microsoft.web"
Register-AzResourceProvider -ProviderNamespace "microsoft.storage"
# Create a resource group for the function app
New-AzResourceGroup -Name "MyResourceGroup" -Location 'West Europe'
# Deploy the template
New-AzResourceGroupDeployment -ResourceGroupName "MyResourceGroup" -TemplateFile azuredeploy.json -Verbose
Az üzembe helyezés teszteléséhez használhat egy ehhez hasonló sablont, amely egy használatalapú csomagban hoz létre függvényalkalmazást Windows rendszeren.
Következő lépések
További információ az Azure Functions fejlesztéséről és konfigurálásáról.