Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
K automatizaci procesu nasazení aplikace funkcí můžete použít soubor Bicep nebo šablonu Azure Resource Manageru (ARM). Během nasazení můžete použít existující prostředky Azure nebo vytvořit nové. Automatizace vám pomůže s těmito scénáři:
- Integrace nasazení prostředků se zdrojovým kódem v nasazeních založených na Azure Pipelines a GitHub Actions
- Obnovení aplikace funkcí a souvisejících prostředků ze zálohy
- Nasazení topologie aplikace několikrát
V tomto článku se dozvíte, jak automatizovat vytváření prostředků a nasazení pro Azure Functions. V závislosti na aktivačních událostech a vazbách používaných vašimi funkcemi možná budete muset nasadit další prostředky, které jsou mimo rozsah tohoto článku.
Požadovaný kód šablony závisí na požadovaných možnostech hostování vaší aplikace funkcí. Tento článek podporuje následující možnosti hostování:
Možnost hostování | Typ nasazení | Ukázková šablona |
---|---|---|
Consumpční plán Azure Functions | Pouze kód | Plán spotřeby |
Plán flexibilního využití služby Azure Functions | Pouze kód | Plán flexibilní spotřeby |
Plán Elastic Premium pro Azure Functions | Kód | Kontejner | Plán Premium |
Plán Azure Functions Dedicated (App Service) | Kód | Kontejner | Vyhrazený plán |
Azure Container Apps | Pouze kontejner | Hostování Služby Container Apps ve službě Azure Functions |
Azure Arc | Kód | Kontejner | App Service, Functions a Logic Apps ve službě Azure Arc (Preview) |
Při používání tohoto článku mějte na paměti tyto aspekty:
Neexistuje žádný kanonický způsob strukturování šablony ARM.
Nasazení Bicep je možné modularizovat do několika souborů Bicep.
Tento článek předpokládá, že máte základní znalosti o vytváření souborů Bicep nebo vytváření šablon Azure Resource Manageru.
- Příklady se zobrazují jako jednotlivé části pro konkrétní prostředky. Širokou sadu kompletních příkladů souborů Bicep a šablon ARM najdete v těchto příkladech nasazení aplikace funkcí.
- Příklady se zobrazují jako jednotlivé části pro konkrétní prostředky. Širokou škálu kompletních příkladů souborů Bicep a šablon ARM najdete v těchto příkladech nasazení aplikace Flex Consumption.
- Příklady se zobrazují jako jednotlivé části pro konkrétní prostředky.
Požadované prostředky
Musíte vytvořit nebo nakonfigurovat tyto prostředky pro nasazení hostované službou Azure Functions:
Prostředek | Požadavek | Odkaz na syntaxi a vlastnosti |
---|---|---|
Účet úložiště | Požaduje se | Microsoft.Storage/storageAccounts |
Součást Application Insights | Doporučené | Microsoft.Insights/components* |
Plán hostování | Požaduje se | Microsoft.Web/serverfarms |
Aplikace Function App | Požaduje se | Microsoft.Web/sites |
Musíte vytvořit nebo nakonfigurovat tyto prostředky pro nasazení hostované službou Azure Functions:
Prostředek | Požadavek | Odkaz na syntaxi a vlastnosti |
---|---|---|
Účet úložiště | Požaduje se | Microsoft.Storage/storageAccounts |
Součást Application Insights | Doporučené | Microsoft.Insights/components* |
Aplikace Function App | Požaduje se | Microsoft.Web/sites |
Nasazení hostované službou Azure Container Apps se obvykle skládá z těchto prostředků:
Prostředek | Požadavek | Odkaz na syntaxi a vlastnosti |
---|---|---|
Účet úložiště | Požaduje se | Microsoft.Storage/storageAccounts |
Součást Application Insights | Doporučené | Microsoft.Insights/components* |
Spravované prostředí | Požaduje se | Microsoft.App/managedEnvironments |
Aplikace Function App | Požaduje se | Microsoft.Web/sites |
Nasazení hostované službou Azure Arc se obvykle skládá z těchto prostředků:
Prostředek | Požadavek | Odkaz na syntaxi a vlastnosti |
---|---|---|
Účet úložiště | Požaduje se | Microsoft.Storage/storageAccounts |
Součást Application Insights | Doporučené | Microsoft.Insights/components1 |
Prostředí služby App Service Kubernetes | Požaduje se | Microsoft.ExtendedLocation/customLocations |
Aplikace Function App | Požaduje se | Microsoft.Web/sites |
*Pokud ještě nemáte pracovní prostor služby Log Analytics, který může vaše instance Application Insights používat, musíte tento prostředek také vytvořit.
Když nasadíte více prostředků do jednoho souboru Bicep nebo šablony ARM, je důležité pořadí, ve kterém se prostředky vytvoří. Tento požadavek je výsledkem závislostí mezi prostředky. U takových závislostí nezapomeňte použít dependsOn
element k definování závislosti v závislém prostředku. Další informace najdete v tématu Definování pořadí nasazení prostředků v šablonách ARM nebo závislostech prostředků v Bicep.
Požadavky
- Příklady jsou navržené tak, aby se spouštěly v kontextu existující skupiny prostředků.
- Protokoly služby Application Insights a protokoly úložiště vyžadují, abyste měli existující pracovní prostor služby Azure Log Analytics. Pracovní prostory se dají sdílet mezi službami a v každém geografickém regionu byste měli vytvořit pracovní prostor, aby se zlepšil výkon. Příklad vytvoření pracovního prostoru služby Log Analytics najdete v tématu Vytvoření pracovního prostoru služby Log Analytics. Plně kvalifikované ID prostředku pracovního prostoru najdete na stránce pracovního prostoru v portálu Azure v části Nastavení>Vlastnosti>ID prostředku.
- Tento článek předpokládá, že jste už vytvořili spravované prostředí v Azure Container Apps. K vytvoření aplikace funkcí hostované v Container Apps potřebujete název i ID spravovaného prostředí.
- Tento článek předpokládá, že jste už vytvořili vlastní umístění s podporou App Service na clusteru Kubernetes s podporou Azure Arc. Pro vytvoření funkcí aplikace hostované na vlastním umístění Azure Arc potřebujete ID vlastního umístění i ID prostředí Kubernetes.
Vytvoření účtu úložiště
Všechny aplikace funkcí vyžadují účet úložiště Azure. Potřebujete účet pro obecné účely, který podporuje objekty blob, tabulky, fronty a soubory. Další informace najdete v požadavcích na účet úložiště Azure Functions.
Důležité
Účet úložiště slouží k ukládání důležitých dat aplikace, někdy včetně samotného kódu aplikace. Omezení přístupu z jiných aplikací a uživatelů k účtu úložiště by mělo být prioritou.
V této ukázkové části se vytvoří účet úložiště úrovně Standard pro obecné účely v2:
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
}
}
Další kontext najdete v kompletním souboru main.bicep v úložišti šablon.
Další kontext najdete v kompletním souboru storage-PrivateEndpoint.bicep v ukázkovém úložišti.
Musíte nastavit připojovací řetězec tohoto účtu úložiště jako AzureWebJobsStorage
nastavení aplikace, které funkce vyžadují. Šablony v tomto článku vytvářejí hodnotu připojovacího řetězce na základě účtu úložiště, což je osvědčený postup. Další informace naleznete v tématu Konfigurace aplikace.
Kontejner pro nasazení
Nasazení do aplikace spuštěné v plánu Flex Consumption vyžadují jako zdroj nasazení kontejner ve službě Azure Blob Storage. Můžete použít buď výchozí účet úložiště, nebo můžete zadat samostatný účet úložiště. Další informace naleznete v tématu Konfigurace nastavení nasazení.
Tento účet nasazení už musí být nakonfigurovaný při vytváření aplikace, včetně konkrétního kontejneru používaného pro nasazení. Další informace o konfiguraci nasazení najdete v tématu Zdroje nasazení.
Tento příklad ukazuje, jak vytvořit kontejner v účtu úložiště:
resource blobServices 'blobServices' = if (!empty(containers)) {
name: 'default'
properties: {
deleteRetentionPolicy: deleteRetentionPolicy
}
resource container 'containers' = [for container in containers: {
name: container.name
properties: {
publicAccess: contains(container, 'publicAccess') ? container.publicAccess : 'None'
}
}]
}
Pro fragment kódu se podívejte v kontextu na tento příklad nasazení.
Další nastavení nasazení se konfigurují se samotnou aplikací.
Povolení protokolů úložiště
Vzhledem k tomu, že se účet úložiště používá pro důležitá data aplikace funkcí, měli byste sledovat účet pro úpravy tohoto obsahu. Pokud chcete monitorovat účet úložiště, musíte nakonfigurovat protokoly prostředků služby Azure Monitor pro Službu Azure Storage. V této ukázkové části se pracovní prostor myLogAnalytics
služby Log Analytics používá jako cíl pro tyto protokoly.
resource blobService 'Microsoft.Storage/storageAccounts/blobServices@2021-09-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
}
]
}
}
Stejný pracovní prostor lze použít pro prostředek Application Insights definovaný později. Další informace, včetně toho, jak s těmito protokoly pracovat, najdete v tématu Monitorování služby Azure Storage.
Vytvořte Application Insights
K monitorování spouštění vašich aplikací funkcí byste měli používat Application Insights. Application Insights teď vyžaduje pracovní prostor Služby Azure Log Analytics, který je možné sdílet. Tyto příklady předpokládají, že používáte existující pracovní prostor a máte plně kvalifikované ID prostředku pro daný pracovní prostor. Další informace najdete v pracovním prostoru Služby Azure Log Analytics.
V této ukázkové části je prostředek Application Insights definován s typem Microsoft.Insights/components
a druhem web
:
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>'
}
}
Další kontext najdete v kompletním souboru main.bicep v úložišti šablon.
Připojení k funkční aplikaci musí být poskytnuto pomocí APPLICATIONINSIGHTS_CONNECTION_STRING
nastavení aplikace. Další informace naleznete v tématu Konfigurace aplikace.
Příklady v tomto článku získávají hodnotu připojovacího řetězce pro vytvořenou instanci. Starší verze mohly místo toho použít APPINSIGHTS_INSTRUMENTATIONKEY
k nastavení klíče instrumentace, což se už nedoporučuje.
Vytvoření plánu hostování
Aplikace hostované v plánu Flex Consumption služby Azure Functions, plánu Premium nebo vyhrazeném plánu (App Service) musí mít explicitně definovaný plán hostování.
Flex Consumption je plán hostování založený na Linuxu, který staví na platíte za to, co používáte bezserverový fakturační model. Plán podporuje privátní sítě, výběr velikosti paměti instance a vylepšenou podporu spravované identity.
Plán Flex Consumption je speciální typ serverfarm
prostředku. Můžete to určit pomocí hodnoty FC1
pro vlastnost Name
ve vlastnosti sku
s hodnotou tier
FlexConsumption
.
V této ukázkové části se vytvoří plán Flex Consumption:
resource flexFuncPlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: planName
location: location
tags: tags
kind: 'functionapp'
sku: {
tier: 'FlexConsumption'
name: 'FC1'
}
properties: {
reserved: true
zoneRedundant: zoneRedundant
Další kontext najdete v kompletním souboru function.bicep v ukázkovém úložišti plánu Flex Consumption.
Vzhledem k tomu, že plán Flex Consumption aktuálně podporuje pouze Linux, musíte také nastavit reserved
vlastnost na true
.
Plán Premium nabízí stejné škálování jako plán Consumption, ale zahrnuje vyhrazené prostředky a další funkce. Další informace najdete v plánu Azure Functions Premium.
Plán Premium je speciální typ serverfarm
prostředku. Můžete ho zadat buď pomocí EP1
, EP2
, nebo EP3
pro hodnotu vlastnosti Name
ve vlastnosti sku
. Způsob, jakým definujete plán hostování funkcí, závisí na tom, jestli vaše aplikace funkcí běží ve Windows nebo Linuxu. Tento příkladový oddíl vytvoří EP1
plán:
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
location: location
sku: {
name: 'EP1'
tier: 'ElasticPremium'
family: 'EP'
}
kind: 'elastic'
properties: {
maximumElasticWorkerCount: 20
}
}
Další kontext najdete v kompletním souboru main.bicep v úložišti šablon.
Další informace o objektu sku
naleznete SkuDefinition
nebo zkontrolujte ukázkové šablony.
V plánu Dedicated (App Service) běží vaše aplikace funkcí na vyhrazených virtuálních počítačích v cenách Basic, Standard a Premium v plánech služby App Service, podobně jako u webových aplikací. Další informace viz Vyhrazený plán.
Ukázkový soubor Bicep nebo šablonu Azure Resource Manager najdete v tématu Aplikace funkcí na plánu Azure App Service.
Ve službě Functions je vyhrazený plán pouze běžným plánem služby App Service, který je definovaný prostředkem serverfarm
. Musíte zadat alespoň name
hodnotu. Pro seznam podporovaných názvů plánů se podívejte na nastavení --sku
v az appservice plan create
, kde najdete aktuální seznam podporovaných hodnot pro vyhrazený plán.
Způsob, jakým definujete plán hostování, závisí na tom, jestli vaše aplikace funkcí běží ve Windows nebo v Linuxu:
resource hostingPlanName 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
location: location
sku: {
tier: 'Standard'
name: 'S1'
size: 'S1'
family: 'S'
capacity: 1
}
}
Další kontext najdete v kompletním souboru main.bicep v úložišti šablon.
Vytvoření plánu hostování
Nemusíte explicitně definovat prostředek plánu hostování typu Consumption. Když tuto definici prostředku přeskočíte, plán se automaticky vytvoří nebo vybere pro každou oblast zvlášť, když vytváříte samotný prostředek aplikace funkcí.
Plán Consumption můžete explicitně definovat jako speciální typ prostředku serverfarm
, který zadáte pomocí hodnoty Dynamic
pro vlastnosti computeMode
a sku
. V této části příkladu vám ukáže, jak explicitně definovat plán spotřeby. Způsob, jakým definujete plán hostování, závisí na tom, jestli vaše aplikace funkcí běží ve Windows nebo v Linuxu.
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
location: location
sku: {
name: 'Y1'
tier: 'Dynamic'
size: 'Y1'
family: 'Y'
capacity: 0
}
properties: {
computeMode: 'Dynamic'
}
}
Další kontext najdete v kompletním souboru main.bicep v úložišti šablon.
Prostředí Kubernetes
Azure Functions je možné nasadit do Kubernetes s podporou Služby Azure Arc buď jako projekt kódu, nebo do kontejnerizované aplikace funkcí.
Pokud chcete vytvořit aplikaci a plán prostředků, musíte už vytvořit prostředí Kubernetes služby App Service pro cluster Kubernetes s podporou Azure Arc. V příkladech v tomto článku se předpokládá, že máte ID prostředku vlastního umístění (customLocationId
) a prostředí služby App Service Kubernetes (kubeEnvironmentId
), do kterého nasazujete, které jsou v tomto příkladu nastaveny:
param kubeEnvironmentId string
param customLocationId string
Weby i plány musí odkazovat na vlastní umístění prostřednictvím extendedLocation
pole. Jak je znázorněno v tomto zkráceném příkladu, extendedLocation
sedí mimo properties
jako rovnocenný partner kind
a location
.
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
...
{
extendedLocation: {
name: customLocationId
}
}
}
Prostředek plánu by měl používat hodnotu Kubernetes (K1
) pro SKU
, pole kind
by mělo být linux,kubernetes
, a vlastnost reserved
by měla být true
, protože se jedná o nasazení Linuxu. Musíte také nastavit extendedLocation
a kubeEnvironmentProfile.id
na ID vlastního umístění a ID prostředí Kubernetes, což může vypadat jako v této ukázkové části:
resource hostingPlan 'Microsoft.Web/serverfarms@2022-03-01' = {
name: hostingPlanName
location: location
kind: 'linux,kubernetes'
sku: {
name: 'K1'
tier: 'Kubernetes'
}
extendedLocation: {
name: customLocationId
}
properties: {
kubeEnvironmentProfile: {
id: kubeEnvironmentId
}
reserved: true
}
}
Vytvořte funkční aplikaci
Prostředek aplikace funkcí je definován prostředkem typu Microsoft.Web/sites
a kind
, který zahrnuje minimálně functionapp
.
Způsob, jakým definujete prostředek aplikace funkcí, závisí na tom, jestli hostujete v Linuxu nebo ve Windows:
Seznam nastavení aplikací požadovaných při spuštění ve Windows najdete v tématu Konfigurace aplikace. Ukázkový soubor Bicep nebo šablonu Azure Resource Manageru naleznete v šabloně pro aplikaci Functions hostovanou na Windows v rámci plánu Consumption.
Seznam nastavení aplikací požadovaných při spuštění ve Windows najdete v tématu Konfigurace aplikace.
Flex Consumption nahrazuje mnoho standardních nastavení aplikací a vlastností konfigurace lokality používaných v nasazeních šablon Bicep a ARM. Další informace naleznete v tématu Konfigurace aplikace.
}
resource flexFuncApp 'Microsoft.Web/sites@2024-04-01' = {
name: appName
location: location
tags: tags
kind: 'functionapp,linux'
identity: {
type: 'SystemAssigned'
}
properties: {
serverFarmId: flexFuncPlan.id
siteConfig: {
appSettings: [
{
name: 'AzureWebJobsStorage__accountName'
value: storage.name
}
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: appInsights.properties.ConnectionString
}
]
}
functionAppConfig: {
deployment: {
storage: {
type: 'blobContainer'
value: '${storage.properties.primaryEndpoints.blob}${deploymentStorageContainerName}'
authentication: {
type: 'SystemAssignedIdentity'
}
}
}
scaleAndConcurrency: {
maximumInstanceCount: maximumInstanceCount
instanceMemoryMB: instanceMemoryMB
}
runtime: {
name: functionAppRuntime
version: functionAppRuntimeVersion
}
}
Další kontext najdete v kompletním souboru function.bicep v ukázkovém úložišti plánu Flex Consumption.
Poznámka:
Pokud se rozhodnete volitelně definovat plán typu Consumption, musíte nastavit vlastnost serverFarmId
v aplikaci tak, aby odkazovala na ID prostředku plánu. Ujistěte se, že aplikační funkce má dependsOn
nastavení, které také odkazuje na plán. Pokud jste plán explicitně nedefinovali, vytvoří se pro vás.
Nastavte vlastnost serverFarmId
v aplikaci tak, aby odkazovala na ID prostředku plánu. Ujistěte se, že aplikační funkce má dependsOn
nastavení, které také odkazuje na plán.
resource functionAppName_resource 'Microsoft.Web/sites@2022-03-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: '~14'
}
]
}
}
}
Úplný kompletní příklad najdete v tomto souboru main.bicep.
resource functionApp 'Microsoft.Web/sites@2022-03-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: '~14'
}
]
}
}
}
Úplný kompletní příklad najdete v tomto souboru main.bicep.
Zdroje nasazení
Nastavení webu linuxFxVersion
můžete použít k vyžádání nasazení konkrétního kontejneru Linuxu do vaší aplikace při jejím vytvoření. Pro přístup k imagím v privátním úložišti se vyžaduje další nastavení. Další informace naleznete v tématu Konfigurace aplikace.
Důležité
Při vytváření vlastních kontejnerů musíte zachovat základní image kontejneru aktualizovanou na nejnovější podporovanou základní image. Podporované základní image pro Azure Functions jsou specifické pro jazyk a nacházejí se v repozitářích základních imagí Azure Functions.
Tým Functions se zavazuje publikovat měsíční aktualizace těchto základních imagí. Mezi pravidelné aktualizace patří nejnovější aktualizace minoritní verze a bezpečnostní opravy pro runtime Functions a jazyky. Kontejner byste měli pravidelně aktualizovat z nejnovější základní image a znovu nasadit aktualizovanou verzi kontejneru. Pro více informací, viz Údržba vlastních kontejnerů.
Soubor Bicep nebo šablona ARM můžou volitelně také definovat nasazení kódu funkce, které můžou zahrnovat tyto metody:
Plán Flex Consumption udržuje kód projektu v zip-komprimovaném balíčkovém souboru, uloženém v blob úložišti známém jako kontejner nasazení. Můžete nakonfigurovat účet úložiště i kontejner použitý pro nasazení. Další informace získáte v tématu Nasazení.
K publikování balíčku kódu do kontejneru nasazení musíte použít jedno nasazení. Během nasazení ARM nebo Bicep to lze provést tak, že definujete zdroj balíčku, který používá /onedeploy
rozšíření. Pokud se rozhodnete balíček místo toho přímo nahrát do kontejneru, balíček se automaticky nenasadí.
Kontejner pro nasazení
Konkrétní úložištní účet a kontejner používaný k nasazení, metoda ověřování a přihlašovací údaje jsou nastaveny v functionAppConfig.deployment.storage
prvku properties
webu. Kontejner a všechna nastavení aplikace musí existovat při vytváření aplikace. Pro příklad vytvoření kontejneru pro ukládání viz Kontejner nasazení.
Tento příklad používá systémem přiřazenou spravovanou identitu pro přístup k určenému kontejneru blob úložiště, který je vytvořen jinde během nasazení.
}
functionAppConfig: {
deployment: {
storage: {
type: 'blobContainer'
value: '${storage.properties.primaryEndpoints.blob}${deploymentStorageContainerName}'
authentication: {
type: 'SystemAssignedIdentity'
}
Pokud používáte spravované identity, musíte také aplikaci funkcí povolit přístup k účtu úložiště pomocí identity, jak je znázorněno v tomto příkladu:
var storageRoleDefinitionId = 'b7e6dc6d-f1e8-4753-8033-0f276bb0955b' //Storage Blob Data Owner role
// Allow access from function app to storage account using a managed identity
resource storageRoleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(storage.id, storageRoleDefinitionId)
scope: storage
properties: {
roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', storageRoleDefinitionId)
principalId: flexFuncApp.identity.principalId
principalType: 'ServicePrincipal'
Úplný příklad referenčního souboru najdete v tomto souboru Bicep.
Tento příklad vyžaduje, abyste znali hodnotu GUID přiřazené role. Tuto hodnotu ID můžete získat pro libovolný popisný název role pomocí příkazu az role definition list , jak je znázorněno v tomto příkladu:
az role definition list --output tsv --query "[?roleName=='Storage Blob Data Owner'].{name:name}"
Při použití připojovacího řetězce místo spravovaných identit musíte nastavit authentication.type
na StorageAccountConnectionString
a authentication.storageAccountConnectionStringName
na název nastavení aplikace, které obsahuje připojovací řetězec účtu úložiště nasazení.
Balíček pro nasazení
Plán Flex Consumption používá k nasazení projektu kódu jeden nasazení . Samotný balíček kódu je stejný jako v případě nasazení zip v jiných plánech hostování Functions. Název samotného souboru balíčku však musí být released-package.zip
.
Pokud chcete do šablony zahrnout jeden balíček pro nasazení, použijte /onedeploy
definici prostředku pro vzdálenou adresu URL, která obsahuje balíček nasazení. Hostitel služby Functions musí mít přístup ke zdroji tohoto vzdáleného balíčku i ke kontejneru nasazení.
Tento příklad přidá do existující aplikace jeden zdroj nasazení:
@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
}
}
Soubor Bicep nebo šablona ARM mohou volitelně také definovat nasazení kódu vaší funkce pomocí zip balíčku pro nasazení.
Pokud chcete úspěšně nasadit aplikaci pomocí Azure Resource Manageru, je důležité pochopit, jak se prostředky nasazují v Azure. Ve většině příkladů se konfigurace nejvyšší úrovně používají pomocí .siteConfig
Je důležité nastavit tyto konfigurace na nejvyšší úrovni, protože sdělují informace Functions Runtime a nasazovacímu modulu. Před uplatněním podřízeného sourcecontrols/web
prostředku se vyžadují informace nejvyšší úrovně. I když je možné tato nastavení nakonfigurovat v prostředku podřízené úrovně config/appSettings
, v některých případech musí být vaše funkční aplikace nasazena dříve, nežconfig/appSettings
se použije.
Zipový balíček pro nasazení
Nasazení pomocí zipu je doporučovaný způsob nasazení kódu funkční aplikace. Ve výchozím nastavení se funkce, které používají nasazení pomocí ZIPu, spouštějí v samotném balíčku nasazení. Další informace, včetně požadavků na balíček pro nasazení, najdete v tématu Nasazení pomocí Zipu pro Azure Functions. Při použití automatizace nasazení prostředků můžete odkazovat na balíček nasazení .zip v šabloně Bicep nebo ARM.
Pokud chcete v šabloně použít nasazení zip, nastavte WEBSITE_RUN_FROM_PACKAGE
nastavení v aplikaci na 1
a zahrňte definici prostředku /zipDeploy
.
Pro plán spotřeby pro Linux místo toho nastavte URI nasazovacího balíčku přímo v WEBSITE_RUN_FROM_PACKAGE
nastavení, jak je znázorněno v této ukázkové šabloně.
Příklad přidá zipový zdroj nasazení do existující aplikace:
@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@2021-02-01' = {
name: '${functionAppName}/ZipDeploy'
location: location
properties: {
packageUri: packageUri
}
}
Při zahrnutí zipových nasazovacích prostředků do šablony mějte na paměti následující skutečnosti:
- Plány spotřeby v Linuxu nepodporují
WEBSITE_RUN_FROM_PACKAGE = 1
. Místo toho musíte nastavit identifikátor URI balíčku nasazení přímo v nastaveníWEBSITE_RUN_FROM_PACKAGE
. Další informace najdete v tématu WEBSITE_RUN_FROM_PACKAGE. Příklad šablony najdete v tématu Funkční aplikace hostovaná na Linuxu ve spotřebním plánu.
Musí být
packageUri
místo, ke kterému mají Funkce přístup. Zvažte použití úložiště objektů blob v Azure se sdíleným přístupovým podpisem (SAS). Po vypršení platnosti sdíleného přístupového podpisu už Funkce nebudou mít přístup ke sdílení pro nasazení. Když znovu vygenerujete SAS, nezapomeňte aktualizovat nastaveníWEBSITE_RUN_FROM_PACKAGE
novou hodnotou identifikátoru URI.Při nastavování
WEBSITE_RUN_FROM_PACKAGE
na URI je třeba provést ruční synchronizaci triggerů.Při přidávání nebo aktualizaci nastavení nezapomeňte vždy nastavit všechna požadovaná nastavení aplikace v
appSettings
kolekci. Aktualizace odebere stávající nastavení, která nejsou explicitně nastavená. Další informace naleznete v tématu Konfigurace aplikace.Funkce nepodporují nasazení balíčků pomocí Web Deploy (msdeploy). Místo toho musíte v automatech a potrubích nasazení používat nasazení prostřednictvím zip souborů. Další informace najdete v nasazení ve formátu zip pro Azure Functions.
Vzdálená sestavení
Proces nasazení předpokládá, že soubor .zip, který používáte, nebo nasazení zip obsahuje aplikaci připravenou ke spuštění. To znamená, že ve výchozím nastavení nejsou spuštěna žádná vlastní nastavení.
Existují scénáře, které vyžadují vzdálené opětovné sestavení aplikace. Jedním z takových příkladů je, že potřebujete zahrnout balíčky specifické pro Linux do Pythonu nebo Node.js aplikací, které jste vyvinuli na počítači s Windows. V takovém případě můžete službu Functions nakonfigurovat tak, aby po nasazení zip prováděla vzdálené sestavení kódu.
Způsob vyžádání vzdáleného sestavení závisí na operačním systému, do kterého nasazujete:
Když se aplikace nasadí do Windows, spustí se příkazy specifické pro jazyk (například dotnet restore
pro aplikace v jazyce C# nebo npm install
pro Node.js aplikace).
Pokud chcete povolit stejné procesy sestavení, které získáte s kontinuální integrací, přidejte SCM_DO_BUILD_DURING_DEPLOYMENT=true
do nastavení aplikace v kódu nasazení a úplně odeberte WEBSITE_RUN_FROM_PACKAGE
.
Linuxové kontejnery
Pokud nasazujete kontejnerizovanou aplikační funkci do plánu Azure Functions Premium nebo dedikovaného, musíte:
- Nastavte nastavení webu
linuxFxVersion
s identifikátorem kontejnerového obrázku. - Při získávání kontejneru z privátního registru nastavte všechna požadovaná
DOCKER_REGISTRY_SERVER_*
nastavení. - Nastavte
WEBSITES_ENABLE_APP_SERVICE_STORAGE
nastavení aplikace nafalse
.
Pokud některá nastavení chybí, mohlo by zřizování aplikace selhat s chybou HTTP/500.
Function app provisioning failed.
Další informace naleznete v tématu Konfigurace aplikace.
resource functionApp 'Microsoft.Web/sites@2022-03-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: '~14'
}
{
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
]
}
Při nasazování kontejnerizovaných funkcí do Azure Container Apps musí vaše šablona:
-
kind
Nastavte pole na hodnotufunctionapp,linux,container,azurecontainerapps
. - Nastavte vlastnost lokality
managedEnvironmentId
na plně kvalifikovaný identifikátor URI prostředí Container Apps. - Přidejte odkaz na prostředek do kolekce webu
dependsOn
při současném vytvořeníMicrosoft.App/managedEnvironments
prostředku spolu s webem.
Definice kontejnerizované aplikace funkcí nasazené z privátního registru kontejneru do existujícího prostředí Container Apps může vypadat jako v tomto příkladu:
resource functionApp 'Microsoft.Web/sites@2022-03-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
]
}
Při nasazování funkcí do Azure Arc závisí hodnota nastavená pro kind
pole prostředku aplikace funkcí na typ nasazení:
Typ nasazení |
kind hodnota pole |
---|---|
Nasazení pouze kódu | functionapp,linux,kubernetes |
Nasazení kontejnerů | functionapp,linux,kubernetes,container |
Musíte také nastavit customLocationId
, stejně jako jste to udělali pro prostředek plánu hostování.
Definice kontejnerizované aplikace funkcí využívající image rychlého startu .NET 6 může vypadat jako v tomto příkladu:
resource functionApp 'Microsoft.Web/sites@2022-03-01' = {
name: functionAppName
kind: 'kubernetes,functionapp,linux,container'
location: location
extendedLocation: {
name: customLocationId
}
properties: {
serverFarmId: 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: 'DefaultEndpointsProtocol=https;AccountName=${storageAccountName};AccountKey=${storageAccount.listKeys().keys[0].value}'
}
{
name: 'APPLICATIONINSIGHTS_CONNECTION_STRING'
value: applicationInsightsName.properties.ConnectionString
}
]
alwaysOn: true
}
}
dependsOn: [
storageAccount
hostingPlan
]
}
Konfigurace aplikací
V plánu Flex Consumption nakonfigurujete aplikaci funkcí v Azure se dvěma typy vlastností:
Konfigurace |
Microsoft.Web/sites vlastnost |
---|---|
Konfigurace aplikací | functionAppConfig |
Nastavení aplikace |
siteConfig.appSettings sbírka |
Tyto konfigurace aplikací jsou zachovány v functionAppConfig
:
Chování | Nastavení v functionAppConfig |
---|---|
Vždy připravené instance | scaleAndConcurrency.alwaysReady |
Zdroj nasazení | deployment |
Velikost paměti instance | scaleAndConcurrency.instanceMemoryMB |
Souběžnost triggeru HTTP | scaleAndConcurrency.triggers.http.perInstanceConcurrency |
Prostředí jazyka | runtime.name |
Jazyková verze | runtime.version |
Maximální počet instancí | scaleAndConcurrency.maximumInstanceCount |
Plán Flex Consumption také podporuje tato nastavení aplikace:
- Nastavení založené na připojovacím řetězci:
- Spravovaná nastavení založená na identitách:
Služba Functions nabízí následující možnosti konfigurace aplikace funkcí v Azure:
Konfigurace |
Microsoft.Web/sites vlastnost |
---|---|
Nastavení webu | siteConfig |
Nastavení aplikace |
siteConfig.appSettings sbírka |
Tato nastavení webu jsou vyžadována na siteConfig
vlastnosti:
Tato nastavení webu se vyžadují jenom při použití spravovaných identit k získání image z instance služby Azure Container Registry:
Tato nastavení aplikace jsou povinná (nebo doporučená) pro konkrétní operační systém a možnost hostování:
Pro nasazení kontejnerů se vyžadují tato nastavení aplikace:
Tato nastavení se vyžadují jenom při nasazování z privátního registru kontejneru:
Při práci s nastavením webu a aplikace pomocí souborů Bicep nebo šablon ARM mějte na paměti tyto aspekty:
- Volitelné
alwaysReady
nastavení obsahuje pole jednoho nebo více{name,instanceCount}
objektů s jedním pro každou skupinu škálování jednotlivých funkcí. Jedná se o skupiny škálování, které se používají k přijímání vždy připravených rozhodnutí o škálování. Tento příklad nastaví počty pro vždy připravené položky jak pro skupinuhttp
, tak pro jednu konkrétní funkci s názvemhelloworld
, která je typu samostatného triggeru.alwaysReady: [ { name: 'http' instanceCount: 2 } { name: 'function:helloworld' instanceCount: 1 } ]
- Je důležité zvážit, kdy byste měli nastavit
WEBSITE_CONTENTSHARE
v automatizovaném nasazení. Podrobné pokyny najdete v referenčních informacíchWEBSITE_CONTENTSHARE
.
- Pro nasazení kontejnerů také nastavte
WEBSITES_ENABLE_APP_SERVICE_STORAGE
nafalse
, protože obsah aplikace je k dispozici v samotném kontejneru.
Nastavení aplikace byste měli vždy definovat jako
siteConfig/appSettings
kolekci vytvářenéhoMicrosoft.Web/sites
prostředku, jak je uvedeno v příkladech v tomto článku. Tato definice zaručuje, že nastavení, která aplikace funkcí potřebuje ke spuštění, jsou k dispozici při počátečním spuštění.Při přidávání nebo aktualizaci nastavení aplikace pomocí šablon nezapomeňte do aktualizace zahrnout všechna existující nastavení. Musíte to udělat, protože aktualizace volání rozhraní REST API nahrazuje celý
/config/appsettings
prostředek. Pokud odeberete existující nastavení, vaše aplikace funkcí se nespustí. Pokud chcete aktualizovat nastavení jednotlivých aplikací prostřednictvím kódu programu, můžete k provedení těchto změn použít Azure CLI, Azure PowerShell nebo Azure Portal. Další informace naleznete v tématu Práce s nastavením aplikace.Pokud je to možné, měli byste použít připojení založená na spravovaných identitách k jiným službám Azure, včetně
AzureWebJobsStorage
připojení. Další informace najdete v tématu Konfigurace připojení založeného na identitě.
Nasazení slotů
Funkce umožňují nasadit různé verze kódu do jedinečných koncových bodů ve vaší aplikaci funkcí. Tato možnost usnadňuje vývoj, ověřování a nasazování aktualizací funkcí bez dopadu na funkce spuštěné v produkčním prostředí. Sloty nasazení jsou funkcí služby Azure App Service. Počet dostupných slotů závisí na vašem plánu hostování. Další informace najdete v tématu Funkce slotů nasazení služby Azure Functions.
Prostředek slotu se definuje stejným způsobem jako prostředek aplikace funkcí (Microsoft.Web/sites
), ale místo toho použijete Microsoft.Web/sites/slots
identifikátor prostředku. Příklad nasazení (v šablonách Bicep i ARM), který vytvoří produkční i přípravný slot v plánu Premium, najdete v tématu Aplikace Azure Functions se slotem nasazení.
Další informace o prohození slotů pomocí šablon najdete v dokumentaci Automatizace pomocí šablon Resource Manageru.
Při práci s nasazeními slotů mějte na paměti následující skutečnosti:
Nenastavujte explicitně
WEBSITE_CONTENTSHARE
v definici slotu nasazení. Toto nastavení se pro vás vygeneruje, když se aplikace vytvoří ve slotu pro nasazení.Když prohodíte sloty, některá nastavení aplikace se považují za "trvalá", protože zůstanou se slotem a ne s kódem, který je prohozen. Toto nastavení slotu můžete definovat zahrnutím
"slotSetting":true
do definice konkrétního nastavení aplikace v šabloně. Další informace najdete v tématu Správa nastavení.
Zabezpečená nasazení
Aplikaci funkcí můžete vytvořit v nasazení, kde jeden nebo více prostředků byly zabezpečeny prostřednictvím integrace s virtuálními sítěmi. Integrace virtuální sítě pro vaši funkční aplikaci je definována zdrojem Microsoft.Web/sites/networkConfig
. Tato integrace závisí na odkazované aplikaci funkcí i prostředcích virtuální sítě. Vaše aplikace funkcí může také záviset na jiných privátních síťových prostředcích, jako jsou privátní koncové body a trasy. Další informace najdete v tématu Možnosti sítě Azure Functions.
Tyto projekty poskytují příklady, jak nasadit aplikace funkcí ve virtuální síti založené na používání nástroje Bicep, včetně omezení přístupu k síti.
- Vysoce škálovaná funkce aktivovaná protokolem HTTP se připojuje k centru událostí zabezpečenému virtuální sítí: Funkce aktivovaná protokolem HTTP (režim izolovaného pracovního procesu .NET) přijímá volání z libovolného zdroje a pak odesílá tělo těchto volání HTTP do zabezpečeného centra událostí spuštěného ve virtuální síti pomocí integrace virtuální sítě.
- Funkce se aktivuje frontou Service Bus zabezpečenou ve virtuální síti: Funkce Pythonu se aktivuje frontou Service Bus zabezpečenou ve virtuální síti. Přístup do fronty ve virtuální síti je zajištěn pomocí privátního koncového bodu. Virtuální počítač ve virtuální síti slouží k odesílání zpráv.
Při vytváření nasazení, které využívá zabezpečený účet úložiště, musíte nastavení explicitně určit a vytvořit sdílený úložný prostředek pojmenovaný v tomto nastavení. Ujistěte se, že vytvoříte Microsoft.Storage/storageAccounts/fileServices/shares
prostředek pomocí hodnoty WEBSITE_CONTENTSHARE
, jak je znázorněno v tomto příkladu (šablona ARM|soubor Bicep). Budete také muset nastavit vlastnost vnetContentShareEnabled
webu na true.
Poznámka:
Pokud tato nastavení nejsou součástí nasazení, které používá zabezpečený účet úložiště, zobrazí se tato chyba při ověřování nasazení: Could not access storage account using provided connection string
.
Tyto projekty poskytují jak příklady Bicep, tak šablony ARM, které ukazují, jak nasadit vaše aplikace funkcí ve virtuální síti, včetně omezení přístupu k síti.
Scénář s omezeným přístupem | Popis |
---|---|
Vytvoření aplikace funkcí s integrací virtuální sítě | Vaše aplikace funkcí se vytvoří ve virtuální síti s úplným přístupem k prostředkům v této síti. Příchozí a odchozí přístup k vaší aplikaci funkcí není omezený. Další informace najdete v tématu Integrace virtuální sítě. |
Vytvořte funkční aplikaci, která přistupuje k zabezpečenému účtu úložiště | Vytvořená funkční aplikace používá zabezpečený účet úložiště, ke kterému funkce přistupují pomocí privátních koncových bodů. Další informace najdete v části Omezení účtu úložiště na virtuální síť. |
Vytvořte funkční aplikaci a účet úložiště, které oba používají soukromé koncové body | K vytvořené aplikaci funkcí se dá přistupovat jenom pomocí privátních koncových bodů a používá privátní koncové body pro přístup k prostředkům úložiště. Další informace najdete v tématu Privátní koncové body. |
Omezené nastavení sítě
Tato nastavení možná budete muset použít i v případě, že má vaše aplikace funkcí omezení sítě:
Nastavení | Hodnota | Popis |
---|---|---|
WEBSITE_CONTENTOVERVNET |
1 |
Nastavení aplikace, které vaší aplikaci funkcí umožňuje škálovat, když je účet úložiště omezený na virtuální síť. Další informace najdete v části Omezení účtu úložiště na virtuální síť. |
vnetrouteallenabled |
1 |
Nastavení webu, které vynutí veškerý provoz z funkční aplikace k použití virtuální sítě. Další informace najdete v tématu Integrace místní virtuální sítě. Toto nastavení webu nahrazuje nastavení WEBSITE_VNET_ROUTE_ALL aplikace . |
Důležité informace o omezeních sítě
Pokud omezujete přístup k účtu úložiště prostřednictvím privátních koncových bodů, nebudete mít přístup k účtu úložiště prostřednictvím portálu ani k žádnému zařízení mimo virtuální síť. Přístup k zabezpečené IP adrese nebo virtuální síti v účtu úložiště můžete udělit správou výchozího pravidla přístupu k síti.
Klávesy pro přístup k funkcím
Přístupové klíče funkcí na úrovni hostitele jsou definované jako prostředky Azure. To znamená, že můžete vytvářet a spravovat klíče hostitele v šablonách ARM a souborech Bicep. Klíč hostitele je definován jako prostředek typu Microsoft.Web/sites/host/functionKeys
. Tento příklad vytvoří přístupový klíč na úrovni hostitele pojmenovaný my_custom_key
při vytvoření aplikace funkcí:
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'))
]
}
V tomto příkladu name
je parametr názvem nové aplikace funkcí. Musíte zahrnout dependsOn
nastavení, které zaručuje, že se klíč vytvoří pomocí nové aplikace funkcí. Nakonec může objekt klíče hostitele také obsahovat properties
vlastnost, kterou lze použít k nastavení konkrétního klíče.
Pokud nenastavíte vlastnost value
, Funkce automaticky vygenerují nový klíč při vytvoření prostředku, což je doporučeno. Další informace o přístupových klíčích, včetně osvědčených postupů zabezpečení pro práci s přístupovými klíči, najdete v tématu Práce s přístupovými klíči ve službě Azure Functions.
Vytvoření šablony
Odborníci s technologií Bicep nebo šablonami ARM mohou ručně psát kód pro nasazení pomocí jednoduchého editoru. Pro ostatní z nás existuje několik způsobů, jak usnadnit proces vývoje:
Visual Studio Code: K dispozici jsou rozšíření, která vám pomůžou pracovat se soubory Bicep a šablonami ARM. Pomocí těchto nástrojů můžete zajistit správnost kódu a poskytnout základní ověření.
Azure portal: Když vytvoříte funkční aplikaci a související prostředky v portálu, poslední obrazovka Kontrola a vytvoření obsahuje odkaz ke stažení šablony pro automatizaci.
Tento odkaz ukazuje šablonu ARM vygenerovanou na základě možností, které jste zvolili na portálu. Tato šablona se může zdát trochu složitá při vytváření aplikace funkcí s mnoha novými prostředky. Může ale poskytnout dobrý přehled o tom, jak může šablona ARM vypadat.
Ověření šablony
Při ručním vytvoření souboru šablony nasazení je důležité před nasazením šablonu ověřit. Všechny metody nasazení ověřují syntaxi šablony a vyvolají chybovou validation failed
zprávu, jak je znázorněno v následujícím příkladu ve formátu JSON:
{"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":""}}]}}
K ověření šablony před nasazením můžete použít následující metody:
Následující úloha nasazení skupiny prostředků Azure v2deploymentMode: 'Validation'
instruuje Azure Pipelines k ověření šablony.
- 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'
Můžete také vytvořit testovací skupinu prostředků, která vyhledá chyby předběžné kontroly a chyby nasazení.
Nasazení šablony
K nasazení souboru a šablony Bicep můžete použít libovolný z následujících způsobů:
Tlačítko pro nasazení do Azure
Poznámka:
Tato metoda v současné době nepodporuje nasazování souborů Bicep.
Nahraďte <url-encoded-path-to-azuredeploy-json>
URL-kódovanou verzí nezpracované cesty k vašemu azuredeploy.json
souboru na GitHubu.
Tady je příklad, který používá Markdown:
[](https://portal.azure.com/#create/Microsoft.Template/uri/<url-encoded-path-to-azuredeploy-json>)
Tady je příklad, který používá HTML:
<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>
Nasazení pomocí PowerShellu
Následující příkazy PowerShellu vytvoří skupinu prostředků a nasadí soubor Bicep nebo šablonu ARM, která vytvoří aplikaci funkcí s požadovanými prostředky. Pokud chcete spustit místně, musíte mít nainstalovaný Azure PowerShell . Pokud se chcete přihlásit k Azure, musíte nejprve spustit Connect-AzAccount
.
# 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
K otestování tohoto nasazení můžete použít šablonu, jako je tato, která na Windows v plánu spotřeby vytvoří aplikaci funkcí.
Další kroky
Přečtěte si další informace o tom, jak vyvíjet a konfigurovat Azure Functions.