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.
Slutförande av den här snabbstarten medför en liten kostnad på några USD-cent 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. Det 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:
- Microsoft.Storage/storageAccounts: skapa ett Azure Storage-konto som krävs av Functions.
- Microsoft.Web/serverfarms: skapa en serverlös förbrukningsvärdplan för funktionsappen.
- Microsoft.Web/sites: skapa en funktionsapp.
- microsoft.insights/components: skapa en Application Insights-instans för övervakning.
Viktigt!
Lagringskontot används för att lagra viktiga appdata, ibland inklusive själva programkoden. Du bör begränsa åtkomsten från andra appar och användare till lagringskontot.
Distribuera Bicep-filen
Spara Bicep-filen som main.bicep på den lokala datorn.
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>
Kommentar
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
Använd utdata från föregående valideringssteg för att hämta det unika namn som skapats för funktionsappen.
Ö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 den här:
Rensa resurser
Om du fortsätter till nästa steg och lägger till en Azure Storage-köutdatabindning behåller du alla 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 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: