Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A függvényalkalmazás üzembe helyezésének automatizálásához használjon Bicep-fájlt vagy Egy Azure Resource Manager-sablont (ARM-sablont). Az üzembe helyezés során használhatja a meglévő Azure-erőforrásokat, vagy létrehozhat újakat.
Az üzembe helyezési automatizálás, az infrastruktúra kódként (IaC) és a folyamatos integráció és üzembe helyezés (CI/CD) használatával élvezheti ezeknek az előnyöknek a hatását az éles alkalmazásoknál.
- Konzisztencia: Az infrastruktúra kódban való definiálása a környezetek konzisztens üzembe helyezésének biztosítása érdekében.
- Verziókövetés: Az infrastruktúra és az alkalmazáskonfigurációk változásainak nyomon követése a forrásvezérlőben a projektkóddal együtt.
- Automatizálás: Automatizálja az üzembe helyezést, amely csökkenti a manuális hibákat, és lerövidíti a kiadási folyamatot.
- Méretezhetőség: Egyszerűen replikálhatja az infrastruktúrát több környezethez, például fejlesztéshez, teszteléshez, valamint élesítéshez.
- Vészhelyreállítás: Gyorsan hozza létre újra az infrastruktúrát hibák vagy migrálások után.
Ez a cikk bemutatja, hogyan automatizálhatja Azure erőforrások és üzembe helyezési konfigurációk létrehozását Azure Functions. A projektkód folyamatos üzembe helyezéséről további információt a Folyamatos üzembe helyezés Azure Functions című szakaszban található.
A szükséges Azure erőforrások létrehozásához szükséges sablonkód a függvényalkalmazás kívánt üzemeltetési beállításaitól függ. Ez a cikk a következő üzemeltetési lehetőségeket támogatja:
| Üzemeltetési lehetőség | Üzembe helyezés típusa | Példasablonok |
|---|---|---|
| Rugalmas fogyasztási csomag | Code-only |
Bicep ARM-sablon Terraform |
| Prémium csomag | Kód | Konténer |
Bicep ARM-sablon |
| Dedikált terv | Kód | Konténer |
Bicep ARM-sablon |
| Azure Konténer Alkalmazások | Container-only | Bicep |
| Fogyasztási terv(régi) | Code-only |
Bicep ARM-sablon |
Új kiszolgáló nélküli függvényalkalmazások esetén használja a Flex Consumption csomagot.
A Használati csomag egy régi üzemeltetési csomag. Meglévő alkalmazások esetén migráljon a Flex Consumption csomagba.
Ügyeljen arra, hogy a cikk tetején válassza ki az üzemeltetési tervet.
Important
A függvényalkalmazások, amelyek a használaton kívüli v3 futtatókörnyezetet futtatják Linuxon egy használatalapú csomagban, 2026. szeptember 30-a után leállnak. A szolgáltatáskimaradás elkerülése érdekében migrálja az alkalmazást a v4-futtatókörnyezetbe.
2028. szeptember 30-án megszüntetik a lehetőséget, hogy függvényalkalmazásokat üzemeltetjen Linuxon egy Fogyasztási tervben. A Linux-használat csomag nem kap új funkciókat vagy nyelvi verziókat. A használati tervben Windows-on futó alkalmazásokra jelenleg nincs hatással. Migrálja az alkalmazásokat a Rugalmas használat csomagba a kivonási dátum előtt.
A cikk használatakor tartsa szem előtt az alábbi szempontokat:
Nincs egyetlen kanonikus módja az ARM-sablonok felépítésének.
Több Bicep-fájlra és Azure Verified Module-ra (AVM-re) is lehet modularizálni egy Bicep-telepítést.
Ez a cikk feltételezi, hogy alapszintű ismerete van a Bicep fájlok létrehozásához vagy Azure Resource Manager sablonok létrehozásához.
- A példák egyes erőforrások egyes szakaszaiként jelennek meg. A teljes Bicep fájl- és ARM-sablonpéldák széles halmazát a these függvényalkalmazás üzembehelyezési példáiban talál.
- A példák egyes erőforrások egyes szakaszaiként jelennek meg. A Bicep esetében az Azure Ellenőrzött modulok (AVM) jelennek meg, ha rendelkezésre állnak. A teljes Bicep fájl- és ARM-sablonpéldák széles halmazát lásd: ezek a Flex Consumption alkalmazás üzembe helyezési példák.
- A példák egyes erőforrások egyes szakaszaiként jelennek meg.
Szükséges erőforrások
Ezeket az erőforrásokat létre kell hoznia vagy konfigurálnia kell egy Azure Functions üzemeltetéshez:
| Resource | Requirement | Szintaxis és tulajdonságok referenciája |
|---|---|---|
| Tárhelyfiók | Required | Microsoft. Storage/StorageAccounts |
| Application Insights-összetevő | Recommended | Microsoft. Elemzések/összetevők* |
| Üzemeltetési terv | Required | Microsoft. Web-/kiszolgálófarmok |
| Függvényalkalmazás | Required | Microsoft.Web/sites |
Ezeket az erőforrásokat létre kell hoznia vagy konfigurálnia kell egy Azure Functions üzemeltetéshez:
| Resource | Requirement | Szintaxis és tulajdonságok referenciája |
|---|---|---|
| Tárhelyfiók | Required | Microsoft. Storage/StorageAccounts |
| Application Insights-összetevő | Recommended | Microsoft. Elemzések/összetevők* |
| Függvényalkalmazás | Required | Microsoft.Web/sites |
Az Azure Container Apps-ban üzemeltetett kiépítés általában a következő erőforrásokból áll:
| Resource | Requirement | Szintaxis és tulajdonságok referenciája |
|---|---|---|
| Tárhelyfiók | Required | Microsoft. Storage/StorageAccounts |
| Application Insights-összetevő | Recommended | Microsoft. Elemzések/összetevők* |
| Felügyelt környezet | Required | Microsoft.App/managedEnvironments |
| Függvényalkalmazás | Required | Microsoft.Web/sites |
*Ha még nincs olyan Log Analytics-munkaterülete, amelyet az Application Insights-példány használhat, akkor ezt az erőforrást is létre kell hoznia.
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égekből ered. Ilyen függőségek esetén mindenképpen használja a dependsOn elemet a függőség meghatározására a függő erőforrásban. További információ: Az erőforrások ARM-sablonokban való üzembe helyezésének sorrendjének megadása vagy Erőforrás-függőségek Bicep.
Prerequisites
- Ezek a példák egy meglévő erőforráscsoport kontextusában működnek.
- Az Application Insightshoz és a tárolási naplókhoz is szükség van egy meglévő Azure Log Analytics-munkaterületre. A munkaterületeket megoszthatja a szolgáltatások között. A teljesítmény javítása érdekében hozzon létre egy munkaterületet minden földrajzi régióban. A Log Analytics munkaterület létrehozásának módjáról a Log Analytics munkaterület létrehozása című témakörben talál példát. A teljes munkaterület erőforrás-azonosítóját az Azure Portal munkaterületoldalán, a Beállítások>tulajdonságai>erőforrás-azonosító területén találja.
- 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.
Storage-fiók létrehozása
Minden függvényalkalmazáshoz Azure tárfió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 tárfiókra vonatkozó követelmények.
Important
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:
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
kind: 'StorageV2'
sku: {
name: 'Standard_LRS'
}
properties: {
supportsHttpsTrafficOnly: true
defaultToOAuthAuthentication: true
allowBlobPublicAccess: false
minimumTlsVersion: 'TLS1_2'
}
}
További információt a main.bicep fájlban talál a sablonok adattárában.
További információt a mintaadattár teljes storage-PrivateEndpoint.bicep fájljában talál.
A függvényalkalmazásnak csatlakoznia kell ehhez a tárfiókhoz. Konfigurálja ezt a kapcsolatot a AzureWebJobsStorage beállítással. További információ: Alkalmazáskonfiguráció.
Tip
A nagyobb biztonság érdekében adja hozzá a allowSharedKeyAccess: false-t a tárfiók tulajdonságaihoz, és használjon felügyelt identitásalapú kapcsolatokat a kapcsolati sztringek helyett. A jelen cikkben szereplő Flex Consumption-csomag példái ezt a megközelítést használják, beleértve az AzureWebJobsStorage__* identitásalapú beállításokat és a rendszer által hozzárendelt felügyelt identitást. További információért lásd: Csatlakozás gazdagéptárolóhoz identitással.
Tip
A nagyobb biztonság érdekében állítsa be a tárolási fiókot allowSharedKeyAccessfalse-ra, és használjon felügyelt identitásalapú kapcsolatokat a kapcsolati sztringek helyett. További információért lásd: Csatlakozás gazdagéptárolóhoz identitással.
Important
Az Elastic Premium és Consumption csomagok az Azure Filest használják a tartalommegosztáshoz, és az Azure Files jelenleg nem támogatja a felügyelt identitásalapú kapcsolatokat. Ez a korlátozás azt jelenti, hogy ezek a tervek megosztott kulcshoz való hozzáférést igényelnek a tárfiókhoz, ezért ne állítsa be allowSharedKeyAccess értékét false-re. Ha kapcsolati sztringeket kell használnia, tárolja őket az Azure Key Vaultban, és a kulcsok közvetlen tárolása helyett használja a Key Vault-hivatkozásokat az alkalmazás beállításai között. Ha el szeretné távolítani az Azure Files-függőséget, olvassa el az Alkalmazás létrehozása Azure Files nélkül című témakört.
Telepítési tároló
A Flex Consumption-csomagban futó alkalmazások üzembe helyezéséhez üzembe helyezési forrásként egy Azure Blob Storage-tárolóra van szükség. Használhatja az alapértelmezett tárfiókot, vagy megadhat egy külön tárfiókot. További információ: Üzembehelyezési beállítások konfigurálása.
Az alkalmazás létrehozásakor konfigurálnia kell ezt az üzembehelyezési fiókot, beleértve az üzembe helyezéshez használt tárolót is. A telepítések konfigurálásáról további információt a telepítési források című témakörben olvashat.
Ez a példa bemutatja, hogyan hozhat létre tárolót a tárfiókban:
}
// Azure Functions Flex Consumption
module functionApp 'br/public:avm/res/web/site:0.16.0' = {
name: 'functionapp'
scope: rg
params: {
kind: 'functionapp,linux'
name: functionAppName_resolved
location: location
tags: union(tags, { 'azd-service-name': 'api' })
serverFarmResourceId: appServicePlan.outputs.resourceId
managedIdentities: {
systemAssigned: true
}
functionAppConfig: {
deployment: {
storage: {
type: 'blobContainer'
value: '${storage.outputs.primaryBlobEndpoint}${deploymentStorageContainerName}'
authentication: {
type: 'SystemAssignedIdentity'
}
Ez a példa bemutatja, hogyan használható a AVM tárfiókokhoz a blobtároló és a tárfiók létrehozásához. A kódrészlet kontextusban történő megtekintéséhez kérlek, lásd ez az üzembehelyezési példa.
Konfiguráljon más üzembehelyezési beállításokat magával az alkalmazással.
Tárolási naplók engedélyezése
Mivel a tárfiókot a függvényalkalmazás fontos adataihoz használják, figyelje a fiókot a tartalom módosításához. A tárfiók figyeléséhez konfigurálja az Azure Monitor-erőforrásnaplókat az Azure Storage-hoz. Ebben a példában egy Log Analytics myLogAnalytics nevű munkaterület lesz a naplók célhelye.
resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2023-05-01' existing = {
name:'default'
parent:storageAccountName
}
resource storageDataPlaneLogs 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
name: '${storageAccountName}-logs'
scope: blobService
properties: {
workspaceId: myLogAnalytics.id
logs: [
{
category: 'StorageWrite'
enabled: true
}
]
metrics: [
{
category: 'Transaction'
enabled: true
}
]
}
}
Ugyanazt a munkaterületet használhatja a később definiált Application Insights-erőforráshoz. További információ, beleértve a naplók kezelését, lásd: Monitoring Azure Storage.
Application Insights létrehozása
Az Application Insights használatával figyelheti a függvényalkalmazások végrehajtását. Az Application Insights most már Azure Log Analytics munkaterületet igényel, amely megosztható. Ezek a példák feltételezik, hogy egy meglévő munkaterületet használ, és rendelkezik a munkaterület teljes erőforrás-azonosítójával. További információ: Azure Log Analytics munkaterület.
Ebben a példarészben definiálja az Application Insights erőforrást a Microsoft.Insights/components típussal és a web kategóriával.
resource applicationInsight 'Microsoft.Insights/components@2020-02-02' = {
name: applicationInsightsName
location: appInsightsLocation
tags: tags
kind: 'web'
properties: {
Application_Type: 'web'
WorkspaceResourceId: '<FULLY_QUALIFIED_RESOURCE_ID>'
}
}
További információt a main.bicep fájlban talál a sablonok adattárában.
Az alkalmazásbeállítás használatával meg kell adnia a kapcsolatot a APPLICATIONINSIGHTS_CONNECTION_STRING függvényalkalmazással. További információ: Alkalmazáskonfiguráció.
A cikkben szereplő példák lekérik a létrehozott példány kapcsolati sztring értékét. A régebbi verziók esetleg APPINSIGHTS_INSTRUMENTATIONKEY használhatják az instrumentációs kulcs beállítására, ami már nem ajánlott.
Az üzemeltetési terv létrehozása
Explicit módon meg kell határoznia az Azure Functions Flex-használati csomagban, prémium csomagban vagy dedikált (App Service-) csomagban üzemeltetett alkalmazások üzemeltetési csomagját.
A Flex Consumption egy Linux-alapú üzemeltetési terv, amely a használatalapú fizetésre épül a kiszolgáló nélküli számlázási modell alapján. A csomag támogatja a privát hálózatkezelést, a példány memóriaméretének kiválasztását és a felügyelt identitások továbbfejlesztett támogatását.
A Rugalmas fogyasztási terv egy speciális serverfarm erőforrástípus. A FC1 segítségével megadhatja a Name tulajdonság értékét a sku tulajdonságban, ha a tier értéke FlexConsumption.
Ez a példaszakasz létrehoz egy Rugalmas Felhasználási tervet:
scaleAndConcurrency: {
maximumInstanceCount: maximumInstanceCount
instanceMemoryMB: instanceMemoryMB
}
runtime: {
name: functionAppRuntime
version: functionAppRuntimeVersion
}
}
siteConfig: {
alwaysOn: false
}
configs: [{
name: 'appsettings'
properties:{
Ez a példa az App Service-csomagokhoz használt AVM. A kódrészlet kontextusban történő megtekintéséhez kérlek, lásd ez az üzembehelyezési példa.
Mivel a Flex Consumption csomag jelenleg csak a Linuxot támogatja, be kell állítania a reserved tulajdonságot true értékre.
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 Prémium csomag.
A Prémium csomag egy speciális erőforrástípus serverfarm . Meghatározhatja a EP1 tulajdonság értékét, ha a EP2 tulajdonságnál a EP3, a Name vagy a sku értéket használja. A Functions üzemeltetési csomag meghatározásának módja attól függ, hogy a függvényalkalmazás Windows vagy Linux rendszeren fut-e. Ez a példaszakasz létrehoz egy EP1 tervet:
resource hostingPlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: hostingPlanName
location: location
sku: {
name: 'EP1'
tier: 'ElasticPremium'
family: 'EP'
}
kind: 'elastic'
properties: {
maximumElasticWorkerCount: 20
}
}
További információt a main.bicep fájlban talál a sablonok adattárában.
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ű, a Standard és a Prémium termékváltozatokban, hasonlóan a webalkalmazásokhoz. További információ: Dedikált csomag.
A Bicep fájl/Azure Resource Manager sablon mintájáért tekintse meg a funkciós alkalmazást Azure App Service terven.
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 Windows vagy Linux rendszeren fut-e:
resource hostingPlanName 'Microsoft.Web/serverfarms@2024-04-01' = {
name: hostingPlanName
location: location
sku: {
tier: 'Standard'
name: 'S1'
size: 'S1'
family: 'S'
capacity: 1
}
}
További információt a main.bicep fájlban talál a sablonok adattárában.
Az üzemeltetési terv létrehozása
Nem kell kifejezetten meghatároznia egy fogyasztási tárhelyterv erőforrást. Ha kihagyja ezt az erőforrásdefiníciót, a portál automatikusan létrehoz vagy kiválaszt egy régiónkénti csomagot, amikor magát a függvényalkalmazás-erőforrást hozza létre.
A használati terveket külön erőforrástípusként serverfarm definiálhatja. Állítsa be a computeMode és sku tulajdonságokat Dynamic értékre. 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 Windows vagy Linux rendszeren fut-e.
resource hostingPlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: hostingPlanName
location: location
sku: {
name: 'Y1'
tier: 'Dynamic'
size: 'Y1'
family: 'Y'
capacity: 0
}
properties: {
computeMode: 'Dynamic'
}
}
További információt a main.bicep fájlban talál a sablonok adattárában.
A függvényalkalmazás létrehozása
Adja meg a függvényalkalmazás erőforrását egy olyan típusú Microsoft.Web/sites erőforrásként, amely tartalmaz egy kind tulajdonságot.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 való futtatáshoz szükséges alkalmazásbeállítások listáját a Alkalmazás konfigurációja című témakörben találja. A Minta Bicep-fájl vagy az Azure Resource Manager-sablon megtekintéséhez tekintse meg a Windowsban üzemeltetett függvényalkalmazást egy használati tervsablonban .
A Windows való futtatáshoz szükséges alkalmazásbeállítások listáját a Alkalmazás konfigurációja című témakörben találja.
A Flex Consumption a Bicep- és ARM-sablontelepítésekben használt standard alkalmazásbeállításokat és webhely-konfigurációs tulajdonságokat váltja fel. További információ: Alkalmazáskonfiguráció.
AzureWebJobsStorage__blobServiceUri: 'https://${storage.outputs.name}.blob.${environment().suffixes.storage}'
AzureWebJobsStorage__queueServiceUri: 'https://${storage.outputs.name}.queue.${environment().suffixes.storage}'
AzureWebJobsStorage__tableServiceUri: 'https://${storage.outputs.name}.table.${environment().suffixes.storage}'
// Application Insights settings are always included
APPLICATIONINSIGHTS_CONNECTION_STRING: applicationInsights.outputs.connectionString
APPLICATIONINSIGHTS_AUTHENTICATION_STRING: 'Authorization=AAD'
}
}]
}
}
// Consolidated Role Assignments
module rbacAssignments 'rbac.bicep' = {
name: 'rbacAssignments'
scope: rg
params: {
storageAccountName: storage.outputs.name
appInsightsName: applicationInsights.outputs.name
managedIdentityPrincipalId: functionApp.outputs.?systemAssignedMIPrincipalId ?? ''
userIdentityPrincipalId: principalId
allowUserIdentityPrincipal: !empty(principalId)
}
}
// Outputs
output AZURE_LOCATION string = location
output AZURE_TENANT_ID string = tenant().tenantId
output AZURE_FUNCTION_NAME string = functionApp.outputs.name
output APPLICATIONINSIGHTS_CONNECTION_STRING string = applicationInsights.outputs.connectionString
Ez a példa a AVM függvényalkalmazásokhoz használható. A kódrészlet kontextusban történő megtekintéséhez kérlek, lásd ez az üzembehelyezési példa.
Note
Ha úgy dönt, hogy opcionálisan meghatározza a Használati tervet, be kell állítania az alkalmazás serverFarmId tulajdonságát úgy, hogy az a terv erőforrás-azonosítójára mutasson. 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.
resource functionAppName_resource 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
location: location
kind: 'functionapp'
properties: {
serverFarmId: hostingPlanName.id
siteConfig: {
appSettings: [
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'WEBSITE_CONTENTAZUREFILECONNECTIONSTRING'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'WEBSITE_CONTENTSHARE'
value: toLower(functionAppName)
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'node'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~20'
}
]
}
}
}
Az elejétől a végéig tartó teljes példa megtalálható itt: main.bicep fájl.
resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
location: location
kind: 'functionapp'
properties: {
serverFarmId: hostingPlan.id
siteConfig: {
alwaysOn: true
appSettings: [
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};EndpointSuffix=${environment().suffixes.storage};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'node'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~20'
}
]
}
}
}
Az elejétől a végéig tartó teljes példa megtalálható itt: main.bicep fájl.
Üzembehelyezési források
linuxFxVersion A webhelybeállítással igényelhet egy adott Linux-tárolót az alkalmazás üzembe helyezéséhez a létrehozáskor. A privát adattárban lévő képek eléréséhez további beállításokra van szükség. További információ: Alkalmazáskonfiguráció.
Important
Saját tárolók létrehozásakor frissíteni kell a tároló alaprendszerképét a legújabb támogatott alaprendszerképre. A Azure Functions támogatott alaprendszerképei nyelvspecifikusak. Tekintse meg az Azure Functions alaprendszerkép-adattárat.
A Functions csapata elkötelezett amellett, hogy havonta frissítéseket tegyen közzé ezekhez az alapképekhez. A rendszeres frissítések közé tartoznak a legújabb alverziófrissítések és biztonsági javítások mind a Functions-futtatókörnyezethez, mind a nyelvekhez. Rendszeresen frissítenie kell a tárolót a legújabb alaprendszerképről, és újból üzembe kell helyeznie a tároló frissített verzióját. További információ: Egyéni tárolók karbantartása.
A Bicep-fájl vagy AZ ARM-sablon opcionálisan a függvénykód üzembe helyezését is meghatározhatja. Ez az üzembe helyezés a következő módszereket tartalmazhatja:
A Flex Consumption csomag egy zip-tömörített csomagfájlban tartja karban a projektkódot egy üzembehelyezési tárolónak nevezett blobtárolóban. Az üzembe helyezéshez használt tárfiókot és tárolót is konfigurálhatja. További információ: Üzembe helyezés.
A kódcsomag üzembehelyezési tárolóban való közzétételéhez egy központi telepítést kell használnia. Arm-sablon vagy Bicep-telepítés során ezt a lépést a bővítményt használó /onedeploy teheti meg. Ha úgy dönt, hogy közvetlenül feltölti a csomagot a tárolóba, a csomag nem lesz automatikusan üzembe helyezve.
Telepítési tároló
A webhelyhez tartozó propertiesfunctionAppConfig.deployment.storage elemben állítsa be az üzembe helyezéshez használt tárfiókot és tárolót, valamint a hitelesítési módszert és a hitelesítő adatokat. Az alkalmazás létrehozásakor a tárolónak és minden alkalmazásbeállításnak léteznie kell. Példa a tároló létrehozásának módjára: Üzembe helyezési tároló.
Ez a példa egy rendszer által hozzárendelt felügyelt identitást használ a megadott blobtároló eléréséhez, amely az üzembe helyezés más pontján jön létre:
// Consolidated Role Assignments
module rbacAssignments 'rbac.bicep' = {
name: 'rbacAssignments'
scope: rg
params: {
storageAccountName: storage.outputs.name
appInsightsName: applicationInsights.outputs.name
managedIdentityPrincipalId: functionApp.outputs.?systemAssignedMIPrincipalId ?? ''
userIdentityPrincipalId: principalId
allowUserIdentityPrincipal: !empty(principalId)
}
}
// Outputs
output AZURE_LOCATION string = location
output AZURE_TENANT_ID string = tenant().tenantId
output AZURE_FUNCTION_NAME string = functionApp.outputs.name
output APPLICATIONINSIGHTS_CONNECTION_STRING string = applicationInsights.outputs.connectionString
Ez a példa a AVM függvényalkalmazásokhoz használható. A kódrészlet kontextusban történő megtekintéséhez kérlek, lásd ez az üzembehelyezési példa.
Felügyelt identitások használata esetén engedélyeznie kell a függvényalkalmazásnak, hogy az identitás használatával férhessen hozzá a tárfiókhoz, ahogyan az ebben a példában látható:
module storageRoleAssignment_User 'br/public:avm/ptn/authorization/resource-role-assignment:0.1.2' = if (allowUserIdentityPrincipal && !empty(userIdentityPrincipalId)) {
name: 'storageRoleAssignment-User-${uniqueString(storageAccount.id, userIdentityPrincipalId)}'
params: {
resourceId: storageAccount.id
roleDefinitionId: roleDefinitions.storageBlobDataOwner
principalId: userIdentityPrincipalId
principalType: 'User'
description: 'Storage Blob Data Owner role for user identity (development/testing)'
roleName: 'Storage Blob Data Owner'
}
}
Ez a példa a AVM-et használja az erőforrás-hatókörű szerepkör-hozzárendeléshez. A kódrészlet kontextusban történő megtekintéséhez kérlek, lásd ez az üzembehelyezési példa.
Ebben a példában ismernie kell a hozzárendelt szerepkör GUID-értékét. Az azonosítóérték lekéréséhez bármely barátságos szerepkörnév esetén használja az az szerepkör-definíciók listája parancsot, ahogyan az az ebben a példában látható:
az role definition list --output tsv --query "[?roleName=='Storage Blob Data Owner'].{name:name}"
Amikor kapcsolati sztringet használ a felügyelt identitások helyett, állítsa be a(z) authentication.type értékét StorageAccountConnectionString-re, és a(z) authentication.storageAccountConnectionStringName nevét az alkalmazásbeállítás nevére, amely tartalmazza az üzembehelyezési tárfiók kapcsolati sztringet.
Üzembehelyezési csomag
A Flex Consumption csomag egyetlen üzembe helyezést használ a kódprojekt üzembe helyezéséhez. Maga a kódcsomag ugyanaz, mint a zip-alapú üzembe helyezéshez használt csomag más Functions-üzemeltetési csomagokban. A csomagfájl nevének azonban meg kell lennie released-package.zip.
Ha egyetlen üzembehelyezési csomagot szeretne belefoglalni a sablonba, használja az /onedeploy erőforrásdefiníciót a központi telepítési csomagot tartalmazó távoli URL-címhez. A Functions-gazdagépnek hozzá kell tudnia férni ehhez a távoli csomagforráshoz és az üzembehelyezési tárolóhoz is.
Ez a példa egy üzembe helyezési forrást ad hozzá egy meglévő alkalmazáshoz:
@description('The name of the function app.')
param functionAppName string
@description('The location into which the resources should be deployed.')
param location string = resourceGroup().location
@description('The zip content URL for released-package.zip.')
param packageUri string
resource functionAppName_OneDeploy 'Microsoft.Web/sites/extensions@2022-09-01' = {
name: '${functionAppName}/onedeploy'
location: location
properties: {
packageUri: packageUri
remoteBuild: false
}
}
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 sikeresen üzembe helyezhesse az alkalmazást az Azure Resource Manager használatával, ismernie kell az erőforrások Azure-ban való üzembe helyezésének módját. A legtöbb példában a legfelső szintű konfigurációkat a siteConfig használatával alkalmazza. Állítsa be ezeket a konfigurációkat a legfelső szintre, mert információkat továbbít a Functions futtatókörnyezetének és üzembehelyezési motorjának. Az üzembe helyezési rendszernek a legfelső szintű információkra van szüksége, mielőtt alkalmazná az alárendelt sourcecontrols/web erőforrást. Bár ezeket a beállításokat a gyermekszintű config/appSettings erőforrásban 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-alapú üzembe helyezés a függvényalkalmazás kódjának üzembe helyezésének ajánlott módja. 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 csomagra vonatkozó követelményeket, lásd: Zip üzembe helyezés Azure Functions. Erőforrás-üzembe helyezés automatizálása esetén hivatkozhat a .zip központi telepíté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 .
Linux-alapú használat alapú terv esetén ehelyett állítsa be az üzembehelyezési csomag URI-ját közvetlenül a WEBSITE_RUN_FROM_PACKAGE beállításban, ahogy ez a példa sablonban látható.
Ez a példa egy zip-alapú üzembehelyezési forrást ad hozzá egy meglévő alkalmazáshoz:
@description('The name of the function app.')
param functionAppName string
@description('The location into which the resources should be deployed.')
param location string = resourceGroup().location
@description('The zip content url.')
param packageUri string
resource functionAppName_ZipDeploy 'Microsoft.Web/sites/extensions@2024-04-01' = {
name: '${functionAppName}/ZipDeploy'
location: location
properties: {
packageUri: packageUri
}
}
Tartsa szem előtt a következő szempontokat, amikor zip-alapú üzembehelyezési erőforrásokat is beleszámítja a sablonba:
- A Linux rendszeren futó fogyasztási tervek nem támogatják
WEBSITE_RUN_FROM_PACKAGE = 1. 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óért lásd: WEBSITE_RUN_FROM_PACKAGE. Példasablon: Linuxon üzemeltetett Function alkalmazás használatalapú csomagban.
A
packageUrihelynek olyan helynek kell lennie, amelyhez a Functions hozzáférhet. Fontolja meg az Azure Blob Storage közös hozzáférésű jogosultságkód (SAS) használatát. Az SAS lejárta után a Functions (Funkciók) már nem tudja elérni a megosztást a telepítésekhez. Az SAS újragenerálásakor ne felejtse el frissíteni aWEBSITE_RUN_FROM_PACKAGEbeállítást az új URI-értékkel.URI beállításakor
WEBSITE_RUN_FROM_PACKAGEmanuálisan kell szinkronizálnia az eseményindítókat.A beállítások hozzáadásakor vagy frissítésekor mindig adja meg a
appSettingsgyűjtemény összes szükséges alkalmazásbeállítását. 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 telepítést kell használnia a telepítési folyamatokban és az automatizálásban. További információ: Zip deployment for Azure Functions.
Távoli összeállítások
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 a feltételezés azt jelenti, hogy alapértelmezés szerint nem futnak testreszabások.
Bizonyos esetekben távolról kell újraépítenie az alkalmazást. Ilyen például, ha Linux-specifikus csomagokat kell tartalmaznia 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 alkalmazást helyez üzembe a Windows rendszerben, az üzembe helyezési folyamat nyelvspecifikus parancsokat futtat, például dotnet restore C#-alkalmazásokhoz vagy npm install Node.js-alkalmazásokhoz.
A folyamatos integrációval elérhető ugyanolyan buildelési folyamatok engedélyezéséhez adja hozzá a SCM_DO_BUILD_DURING_DEPLOYMENT=true az alkalmazásbeállításai közé az üzembehelyezési kódban, és teljesen távolítsa el a WEBSITE_RUN_FROM_PACKAGE beállítást.
Linux-tárolók
Ha kontainerizált függvényalkalmazást helyez üzembe egy Azure Functions Prémium vagy Dedikált csomagban, a következőket kell tennie:
- Állítsa be a
linuxFxVersionhelybeállítást a tárolólemezkép azonosítójával. - A tároló magánregisztrációból történő lekérésekor állítsa be a szükséges
DOCKER_REGISTRY_SERVER_*beállításokat. - Állítsa be az alkalmazás beállításait
WEBSITES_ENABLE_APP_SERVICE_STORAGEértékrefalse.
Ha bizonyos beállítások hiányoznak, az alkalmazás kiépítése sikertelen lehet ezzel a HTTP/500-hibával:
Function app provisioning failed.
További információ: Alkalmazáskonfiguráció.
resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
location: location
kind: 'functionapp'
properties: {
serverFarmId: hostingPlan.id
siteConfig: {
appSettings: [
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'FUNCTIONS_WORKER_RUNTIME'
value: 'node'
}
{
name: 'WEBSITE_NODE_DEFAULT_VERSION'
value: '~20'
}
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'DOCKER_REGISTRY_SERVER_URL'
value: dockerRegistryUrl
}
{
name: 'DOCKER_REGISTRY_SERVER_USERNAME'
value: dockerRegistryUsername
}
{
name: 'DOCKER_REGISTRY_SERVER_PASSWORD'
value: dockerRegistryPassword
}
{
name: 'WEBSITES_ENABLE_APP_SERVICE_STORAGE'
value: 'false'
}
]
linuxFxVersion: 'DOCKER|myacr.azurecr.io/myimage:mytag'
}
}
dependsOn: [
storageAccount
]
}
A kontainerizált függvények Azure Container Apps üzembe helyezésekor a sablonnak a következőket kell tennie:
- Állítsa a
kindmezőt a következő értékrefunctionapp,linux,container,azurecontainerapps: . - Állítsa be a
managedEnvironmentIdwebhely tulajdonságát a Container Apps környezet teljesen minősített URI-jára. - Adjon hozzá erőforráshivatkozást a webhely
dependsOngyűjteményéhez, amikorMicrosoft.App/managedEnvironmentserőforrást hoz létre a webhellyel egy időben.
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:
resource functionApp 'Microsoft.Web/sites@2024-04-01' = {
name: functionAppName
kind: 'functionapp,linux,container,azurecontainerapps'
location: location
properties: {
serverFarmId: hostingPlanName
siteConfig: {
linuxFxVersion: 'DOCKER|myacr.azurecr.io/myimage:mytag'
appSettings: [
{
name: 'FUNCTIONS_EXTENSION_VERSION'
value: '~4'
}
{
name: 'AzureWebJobsStorage'
value: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
]
}
managedEnvironmentId: managedEnvironmentId
}
dependsOn: [
storageAccount
hostingPlan
]
}
Alkalmazáskonfiguráció
A Rugalmas fogyasztási csomagban az Azure-ban a függvényalkalmazást kétféle tulajdonsággal konfigurálhatja.
| Configuration |
Microsoft.Web/sites tulajdonság |
|---|---|
| Alkalmazáskonfiguráció | functionAppConfig |
| Alkalmazásbeállítások |
siteConfig.appSettings gyűjtemény |
Ezeket az alkalmazáskonfigurációkat a következő helyen functionAppConfigtarthatja fenn:
| Behavior | A következő beállítások: functionAppConfig |
|---|---|
| Mindig kész példányok | scaleAndConcurrency.alwaysReady |
| Üzembehelyezési forrás | deployment |
| Példány mérete | scaleAndConcurrency.instanceMemoryMB |
| HTTP-eseményindító egyidejűsége | scaleAndConcurrency.triggers.http.perInstanceConcurrency |
| Nyelvi futtatókörnyezet | runtime.name |
| Nyelvi verzió | runtime.version |
| Példányok maximális száma | scaleAndConcurrency.maximumInstanceCount |
| Webhelyfrissítési stratégia | siteUpdateStrategy.type |
A Flex Consumption csomag az alábbi alkalmazásbeállításokat is támogatja:
- Kapcsolati sztringalapú beállítások:
- Felügyelt identitásalapú beállítások:
A Függvények a függvényalkalmazás Azure való konfigurálásához az alábbi lehetőségeket nyújtják:
| Configuration |
Microsoft.Web/sites tulajdonság |
|---|---|
| Webhely beállításai | siteConfig |
| Alkalmazásbeállítások |
siteConfig.appSettings gyűjtemény |
Ezek a webhelybeállítások szükségesek a siteConfig tulajdonságban:
Ezek a helybeállítások csak felügyelt identitások használata esetén szükségesek a rendszerkép Azure Container Registry-példányból való lekéréséhez:
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:
A webhely- és alkalmazásbeállítások Bicep fájlok vagy ARM-sablonok használatával történő használatakor vegye figyelembe ezeket a szempontokat:
- Az opcionális
alwaysReadybeállítás egy vagy több{name,instanceCount}objektumból álló tömböt tartalmaz, és mindegyik függvényskálázási csoporthoz egyet tartalmaz. Ezek a skálázási csoportok mindig kész méretezési döntéseket hoznak. Ez a példa mindig készenléti számokat állít be mind ahttpcsoport számára, mind pedig egyetlen, nem csoportosított eseményindító típusú függvényhelloworldesetén.alwaysReady: [ { name: 'http' instanceCount: 2 } { name: 'function:helloworld' instanceCount: 1 } ]
- Fontolja meg, hogy mikor érdemes automatikus üzembe helyezést beállítani
WEBSITE_CONTENTSHARE. Részletes útmutatásért tekintse meg aWEBSITE_CONTENTSHAREhivatkozást.
- Konténertelepítéseknél állítsa be a
WEBSITES_ENABLE_APP_SERVICE_STORAGE-tfalse-re, mivel az alkalmazás tartalmát maga a konténer biztosítja.
Az alkalmazásbeállításokat mindig úgy definiálja, mint a létrehozandó erőforrás
siteConfig/appSettingsgyűjteményétMicrosoft.Web/sites, ahogyan azt az ebben a cikkben bemutatott példákban is láthatja. Ez a definíció garantálja, 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 tartalmazza a frissítéssel. 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/appsettingserő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 használhatja a Azure CLI, a Azure PowerShell vagy a Azure portált a módosítások elvégzéséhez. További információ: Az alkalmazásbeállítások használata.Ha lehetséges, használjon felügyelt identitásalapú kapcsolatokat más Azure-szolgáltatásokhoz, beleértve a
AzureWebJobsStoragekapcsolatot is. További információ: Identitásalapú kapcsolat konfigurálása.
Slot telepí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 a beállítás 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 App Service 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.
A ponterőforrást ugyanúgy definiálja, mint egy függvényalkalmazás-erőforrást (Microsoft.Web/sites), de ehelyett az erőforrás-azonosítót Microsoft.Web/sites/slots használja. Egy olyan üzembe helyezési példáért (Bicep és ARM-sablonokban), amely egyszerre hoz létre éles és átmeneti pontot egy Prémium csomagban, tekintse meg a Azure függvényalkalmazást üzembehelyezési ponttal.
A foglalatok sablonok használatával való felcserélésének módjáról további információkért lásd: Automatizálás Resource Manager sablonokkal.
Tartsa szem előtt a következő szempontokat a ponttelepítések használatakor:
Ne állítsa be explicit módon a
WEBSITE_CONTENTSHAREbeállítást az üzembehelyezési hely definíciójában. A telepítési helyen lévő alkalmazáslétrehozási folyamat hozza létre ezt a beállítást.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":truea sablon adott alkalmazásbeállítás-definíciójához. További információ: Beállítások kezelése.
Biztonságos telepítések
A függvényalkalmazást olyan üzembe helyezésben hozhatja létre, amelyben virtuális hálózatokkal való integrációval egy vagy több erőforrást biztonságossá tehet. Az Microsoft.Web/sites/networkConfig erőforrás a függvényalkalmazás virtuális hálózati integrációját 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ó: Azure Functions hálózati beállítások.
Ezek a projektek Bicep-alapú példákat nyújtanak 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:
- Nagy léptékű HTTP által indított függvény egy virtuális hálózat által védett eseménykapcsolati központhoz csatlakozik: Az HTTP által indított függvény izolált .NET feldolgozómódban bármilyen forrásból fogad hívásokat, majd a HTTP-hívások törzsét egy biztonságos eseménykapcsolati központba küldi, amely virtuális hálózatban fut a virtuális hálózat integráció használatával.
- Függvényt egy virtuális hálózaton biztonságos Service Bus üzenetsor aktiválja: A Python függvényt egy virtuális hálózaton biztonságos Service Bus üzenetsor aktiválja. A sor a virtuális hálózaton privát végpont használatával érhető el. A virtuális hálózat virtuális gépe üzenetek küldésére szolgál.
Ha biztonságos tárfiókot használó üzembe helyezést hoz létre, 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 Microsoft.Storage/storageAccounts/fileServices/shares egy erőforrást hoz létre WEBSITE_CONTENTSHARE érték felhasználásával, ahogy azt ebben a példában (ARM-sablon|Bicep-fájl) láthatja. A webhelytulajdonságot vnetContentShareEnabled is igaz értékre kell állítania.
Note
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-sablonokat 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 | Description |
|---|---|
| Virtuális hálózati integrációval rendelkező függvényalkalmazás létrehozása | A függvényalkalmazást egy virtuális hálózatban hozza létre, amely 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:
| Setting | Value | Description |
|---|---|---|
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, a tárfiók nem érhető el 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.
Függvényelérési kulcsok
Gazdaszintű függvényelérési kulcsok definiálása Azure-erőforrásokként. Ezzel a módszerrel gazdagépkulcsokat hozhat létre és kezelhet ARM-sablonokban és Bicep-fájlokban. A gazdagépkulcsot Microsoft.Web/sites/host/functionKeys típusú erőforrásként definiáljuk. Az alábbi példa létrehoz egy my_custom_key nevű gazdagépszintű hozzáférési kulcsot, amikor a függvényalkalmazás létrehozásra kerül.
resource functionKey 'Microsoft.Web/sites/host/functionKeys@2022-09-01' = {
name: '${parameters('name')}/default/my_custom_key'
properties: {
name: 'my_custom_key'
}
dependsOn: [
resourceId('Microsoft.Web/Sites', parameters('name'))
]
}
Ebben a példában a name paraméter az új függvényalkalmazás neve. Olyan beállítást kell megadnia dependsOn , amely garantálja, hogy a kulcs az új függvényalkalmazással jön létre. Végül a properties gazdagépkulcs objektuma egy value tulajdonságot is tartalmazhat, amellyel beállíthat egy adott kulcsot.
Ha nem állítja be a value tulajdonságot, a Functions automatikusan létrehoz egy új kulcsot az erőforrás létrehozásakor, ami javasolt. A hívóbetűkkel kapcsolatos további információkért, beleértve a hozzáférési kulcsok használatához ajánlott biztonsági eljárásokat, olvassa el a A hívóbetűk használata a Azure Functions webhelyen.
A sablon létrehozása
A Bicep- vagy ARM-sablonokkal rendelkező szakértők egy egyszerű szövegszerkesztő használatával manuálisan kódolhatják a telepítéseket. A többiek számára több lehetőség is megkönnyíti a fejlesztési folyamatot:
Visual Studio Code: Bővítmények érhetők el a Bicep-fájlok és az ARM-sablonok használatához. Ezekkel az eszközökkel meggyőződhet arról, hogy a kód helyes. Alapszintű ellenőrzést biztosítanak.
Azure portál: 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ő Sablon letöltése automatizáláshoz hivatkozással rendelkezik.
Ez a hivatkozás a portálon kiválasztott beállítások alapján létrehozott ARM-sablont mutatja be. Ez a sablon kissé összetettnek tűnhet, amikor sok új erőforrást tartalmazó függvényalkalmazást hoz létre. Ez azonban 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 sablon üzembe helyezése előtt az alábbi módszerekkel ellenőrizheti a sablont:
A következő Azure erőforráscsoport-üzembehelyezési v2 feladatdeploymentMode: 'Validation' utasítja az Azure Pipelines szolgáltatást a sablon érvényesítésére.
- 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 használja az alábbi módszerek bármelyikét:
Azure-ba való telepítés gomb
Note
Ez a módszer jelenleg nem támogatja Bicep fájlok üzembe helyezését.
Cserélje le a <url-encoded-path-to-azuredeploy-json> a URL-kódolt verziójára a azuredeploy.json fájl nyers elérési útjának a GitHubban.
Íme egy példa, amely a markdownt használja:
[](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
A következő PowerShell-parancsok létrehoznak egy erőforráscsoportot, és üzembe helyeznek egy Bicep fájlt vagy ARM-sablont, amely létrehoz egy függvényalkalmazást a szükséges erőforrásokkal. A parancsok helyi futtatásához telepítve kell lennie az Azure PowerShellnek . Az Azure-ba való bejelentkezéshez először futtassa a Connect-AzAccount elemet.
# 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 main.bicep -Verbose
Az üzembe helyezés teszteléséhez használjon egy ehhez hasonló sablont, amely Windows rendszerben egy fogyasztási terv alapján hoz létre függvényalkalmazást.
Következő lépések
További információ a Azure Functions fejlesztéséről és konfigurálásáról.