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

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

A realização deste início rápido gera um pequeno custo de alguns centavos de dólar ou menos em sua conta do Azure.

O Bicep é um DSL (linguagem específica de domínio) que usa sintaxe declarativa para implantar recursos do Azure. Ele fornece sintaxe concisa, segurança de tipos confiá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ções, implante o código do projeto do Azure Functions nesse aplicativo.

Pré-requisitos

Conta do Azure

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

Examinar o arquivo Bicep

O arquivo Bicep usado neste guia de início rápido vem dos 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 este 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.

Implante o arquivo Bicep

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

  2. Para implantar o arquivo Bicep, use 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>
    

    Observação

    Substitua <app-location> pela região do Application Insights, que geralmente é a mesmo que a do grupo de recursos.

    Quando a implantação for concluída, você deverá ver uma mensagem indicando que ela foi bem-sucedida.

Validar a implantação

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

az resource list --resource-group exampleRG

Acesse a página de boas-vindas do aplicativo de funções

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

  2. Abra um navegador e insira a seguinte URL: <https://<appName.azurewebsites.net>. Substitua <\appName> pelo nome exclusivo criado para seu aplicativo de funções.

    Ao visitar a URL, você deverá ver uma página como esta:

    Function app welcome page

Limpar os recursos

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

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

az group delete --name exampleRG

Próximas etapas

Agora que você criou os recursos do aplicativo de funções no Azure, implante seu código no aplicativo existente usando uma das seguintes ferramentas: