Share via


Guida introduttiva: Creare e distribuire risorse Funzioni di Azure con Bicep

Questo articolo illustra come usare 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 di 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:

Importante

L'account di archiviazione viene usato per archiviare dati importanti dell'app, talvolta includendo il codice dell'applicazione stesso. È consigliabile limitare l'accesso da altre app e utenti all'account di archiviazione.

Distribuire il file Bicep

  1. Salvare il file Bicep come main.bicep nel computer locale.

  2. Distribuire 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 è riuscita.

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

  1. Usare l'output del passaggio di convalida precedente per recuperare il nome univoco creato per l'app per le funzioni.

  2. 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:

    Pagina iniziale dell'app per le funzioni

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 le risorse non sono più necessarie, 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: