Guida introduttiva: Creare e distribuire risorse Funzioni di Azure con Bicep
In questo articolo si userà Funzioni di Azure con Bicep per creare un'app per le funzioni e le risorse correlate in Azure. L'app per le funzioni fornisce un contesto di esecuzione per le esecuzioni del codice della funzione.
Le procedure illustrate in questa guida di avvio rapido comportano l'addebito di qualche centesimo (USD) o meno nell'account Azure.
Bicep è un linguaggio specifico di dominio (DSL) che usa la sintassi dichiarativa per distribuire le risorse di Azure. Offre sintassi concisa, indipendenza dai tipi affidabile e supporto per il riutilizzo del codice. Bicep offre la migliore esperienza di creazione per le soluzioni di infrastruttura come codice in Azure.
Dopo aver creato l'app per le funzioni, è possibile distribuire Funzioni di Azure codice del progetto in tale app.
Prerequisiti
Account Azure
Prima di iniziare, è necessario disporre di un account Azure con una sottoscrizione attiva. Creare un account gratuitamente.
Esaminare il file Bicep
Il file Bicep usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure.
@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'
}
}
Le quattro risorse di Azure seguenti vengono create da questo file Bicep:
- Microsoft.Storage/storageAccounts: crea un account di archiviazione di Azure, richiesto da Funzioni.
- Microsoft.Web/serverfarms: crea un piano di hosting create a serverless a consumo per l'app per le funzioni.
- Microsoft.Web/sites: crea un'app per le funzioni.
- microsoft.insights/components: crea un'istanza di Application Insights per il monitoraggio.
Importante
L'account di archiviazione viene usato per archiviare dati importanti dell'app, a volte incluso il codice dell'applicazione stesso. È consigliabile limitare l'accesso da altre app e utenti all'account di archiviazione.
Distribuire il file Bicep
Salvare il file Bicep come main.bicep nel computer locale.
Distribuisci il file Bicep usando l'interfaccia della riga di comando di Azure o Azure PowerShell.
az group create --name exampleRG --location eastus az deployment group create --resource-group exampleRG --template-file main.bicep --parameters appInsightsLocation=<app-location>
Nota
Sostituire <app-location> con l'area per Application Insights, che in genere corrisponde al gruppo di risorse.
Al termine della distribuzione verrà visualizzato un messaggio che indica che la distribuzione è stata completata.
Convalidare la distribuzione
Usare l'interfaccia della riga di comando di Azure o Azure PowerShell per convalidare la distribuzione.
az resource list --resource-group exampleRG
Visitare la pagina iniziale dell'app per le funzioni
Usare l'output del passaggio di convalida precedente per recuperare il nome univoco creato per l'app per le funzioni.
Aprire un browser e immettere l'URL seguente: <https://< appName.azurewebsites.net>. Assicurarsi di sostituire <\appName> con il nome univoco creato per l'app per le funzioni.
Quando si visita l'URL, verrà visualizzata una pagina simile alla seguente:
Pulire le risorse
Se si continua con il passaggio successivo e si aggiunge un binding di output della coda di Archiviazione di Azure, mantenere tutte le risorse esistenti per poterle riutilizzare.
In caso contrario, se non sono più necessarie le risorse, usare l'interfaccia della riga di comando di Azure, PowerShell o portale di Azure per eliminare il gruppo di risorse e le relative risorse.
az group delete --name exampleRG
Passaggi successivi
Dopo aver creato le risorse dell'app per le funzioni in Azure, è possibile distribuire il codice nell'app esistente usando uno degli strumenti seguenti: