Snabbstart: Skapa och distribuera Azure Functions resurser med Bicep

I den här artikeln använder du Azure Functions med Bicep för att skapa en funktionsapp och relaterade resurser i Azure. Funktionsappen tillhandahåller en körningskontext för dina funktionskodkörningar.

När du slutför den här snabbstarten medför det en liten kostnad på några USDcent eller mindre på ditt Azure-konto.

Bicep är ett domänspecifikt språk (DSL) som använder deklarativ syntax för att distribuera Azure-resurser. Den ger koncis syntax, tillförlitlig typsäkerhet och stöd för återanvändning av kod. Bicep erbjuder den bästa redigeringsupplevelsen för dina infrastruktur som kod-lösningar i Azure.

När du har skapat funktionsappen kan du distribuera Azure Functions projektkod till appen.

Förutsättningar

Azure-konto

Innan du börjar måste du ha ett Azure-konto med en aktiv prenumeration. Skapa ett konto utan kostnad.

Granska Bicep-filen

Bicep-filen som används i den här snabbstarten kommer från Azure-snabbstartsmallar.

@description('The name of the function app that you wish to create.')
param appName string = 'fnapp${uniqueString(resourceGroup().id)}'

@description('Storage Account type')
@allowed([
  'Standard_LRS'
  'Standard_GRS'
  'Standard_RAGRS'
])
param storageAccountType string = 'Standard_LRS'

@description('Location for all resources.')
param location string = resourceGroup().location

@description('Location for Application Insights')
param appInsightsLocation string

@description('The language worker runtime to load in the function app.')
@allowed([
  'node'
  'dotnet'
  'java'
])
param runtime string = 'node'

var functionAppName = appName
var hostingPlanName = appName
var applicationInsightsName = appName
var storageAccountName = '${uniqueString(resourceGroup().id)}azfunctions'
var functionWorkerRuntime = runtime

resource storageAccount 'Microsoft.Storage/storageAccounts@2022-05-01' = {
  name: storageAccountName
  location: location
  sku: {
    name: storageAccountType
  }
  kind: 'Storage'
  properties: {
    supportsHttpsTrafficOnly: true
    defaultToOAuthAuthentication: true
  }
}

resource hostingPlan 'Microsoft.Web/serverfarms@2021-03-01' = {
  name: hostingPlanName
  location: location
  sku: {
    name: 'Y1'
    tier: 'Dynamic'
  }
  properties: {}
}

resource functionApp 'Microsoft.Web/sites@2021-03-01' = {
  name: functionAppName
  location: location
  kind: 'functionapp'
  identity: {
    type: 'SystemAssigned'
  }
  properties: {
    serverFarmId: hostingPlan.id
    siteConfig: {
      appSettings: [
        {
          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: 'WEBSITE_NODE_DEFAULT_VERSION'
          value: '~14'
        }
        {
          name: 'APPINSIGHTS_INSTRUMENTATIONKEY'
          value: applicationInsights.properties.InstrumentationKey
        }
        {
          name: 'FUNCTIONS_WORKER_RUNTIME'
          value: functionWorkerRuntime
        }
      ]
      ftpsState: 'FtpsOnly'
      minTlsVersion: '1.2'
    }
    httpsOnly: true
  }
}

resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = {
  name: applicationInsightsName
  location: appInsightsLocation
  kind: 'web'
  properties: {
    Application_Type: 'web'
    Request_Source: 'rest'
  }
}

Följande fyra Azure-resurser skapas av den här Bicep-filen:

Viktigt

Lagringskontot används för att lagra viktiga appdata, ibland även själva programkoden. Du bör begränsa åtkomsten från andra appar och användare till lagringskontot.

Distribuera Bicep-filen

  1. Spara Bicep-filen som main.bicep på din lokala dator.

  2. Distribuera Bicep-filen med antingen Azure CLI eller Azure PowerShell.

    az group create --name exampleRG --location eastus
    az deployment group create --resource-group exampleRG --template-file main.bicep --parameters appInsightsLocation=<app-location>
    

    Anteckning

    Ersätt <appplats> med regionen för Application Insights, som vanligtvis är samma som resursgruppen.

    När distributionen är klar bör du se ett meddelande som anger att distributionen lyckades.

Verifiera distributionen

Använd Azure CLI eller Azure PowerShell för att verifiera distributionen.

az resource list --resource-group exampleRG

Besök välkomstsidan för funktionsappen

  1. Använd utdata från föregående verifieringssteg för att hämta det unika namn som skapats för funktionsappen.

  2. Öppna en webbläsare och ange följande URL: <https://< appName.azurewebsites.net>. Ersätt <\appName> med det unika namn som skapats för funktionsappen.

    När du besöker URL:en bör du se en sida som ser ut så här:

    Välkomstsida för funktionsapp

Rensa resurser

Om du fortsätter till nästa steg och lägger till en Azure Storage-köutdatabindning behåller du alla dina resurser på plats när du bygger vidare på det du redan har gjort.

Om du inte längre behöver resurserna använder du Annars Azure CLI, PowerShell eller Azure Portal för att ta bort resursgruppen och dess resurser.

az group delete --name exampleRG

Nästa steg

Nu när du har skapat dina funktionsappresurser i Azure kan du distribuera koden till den befintliga appen med något av följande verktyg: