Partilhar via


Guia de início rápido: criar e implantar recursos do Azure Functions usando o Bicep

Neste artigo, você usa o Azure Functions com Bicep para criar um aplicativo de função e recursos relacionados no Azure. O aplicativo de função fornece um contexto de execução para suas execuções de código de função.

A conclusão deste início rápido incorre num pequeno custo de alguns cêntimos USD ou menos na sua conta do Azure.

O Bicep é uma linguagem específica do domínio que utiliza sintaxe declarativa para implementar recursos do Azure. Fornece sintaxe concisa, segurança de tipos fiável e suporte para reutilização de código. O Bicep oferece a melhor experiência de criação para suas soluções de infraestrutura como código no Azure.

Depois de criar o aplicativo de função, você pode implantar o código do projeto do Azure Functions nesse aplicativo.

Pré-requisitos

Conta do Azure

Antes de começar, você deve ter uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.

Revise o arquivo Bicep

O arquivo Bicep usado neste início rápido é de Modelos de Início Rápido do 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'
  }
}

Os quatro recursos do Azure a seguir são criados por esse arquivo Bicep:

Importante

A conta de armazenamento é usada para armazenar dados importantes do aplicativo, às vezes incluindo o próprio código do aplicativo. Você deve limitar o acesso de outros aplicativos e usuários à conta de armazenamento.

Implantar o arquivo Bicep

  1. Salve o arquivo Bicep como main.bicep em seu computador local.

  2. Implante o arquivo Bicep usando a CLI do Azure ou 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

    Substitua <o local> do aplicativo pela região do Application Insights, que geralmente é a mesma do grupo de recursos.

    Quando a implantação terminar, você verá uma mensagem indicando que a implantação foi bem-sucedida.

Validar a implementação

Use a CLI do Azure ou o Azure PowerShell para validar a implantação.

az resource list --resource-group exampleRG

Visite a página de boas-vindas do aplicativo de função

  1. Use a saída da etapa de validação anterior para recuperar o nome exclusivo criado para seu aplicativo de função.

  2. Abra um navegador e digite o seguinte URL: <https://< appName.azurewebsites.net>. Certifique-se de substituir <\appName> pelo nome exclusivo criado para seu aplicativo de função.

    Quando visitar o URL, deverá ver uma página como esta:

    Página de boas-vindas do aplicativo Function

Clean up resources (Limpar recursos)

Se você continuar para a próxima etapa e adicionar uma vinculação de saída de fila do Armazenamento do Azure, mantenha todos os seus recursos no lugar, pois você aproveitará o que já fez.

Caso contrário, se você não precisar mais dos recursos, use a CLI do Azure, o PowerShell ou o portal do Azure para excluir o grupo de recursos e seus recursos.

az group delete --name exampleRG

Próximos passos

Agora que você criou seus recursos de aplicativo de função no Azure, pode implantar seu código no aplicativo existente usando uma das seguintes ferramentas: