Início Rápido: Criar e implementar recursos Funções do Azure com o Bicep

Neste artigo, vai utilizar Funções do Azure com o Bicep para criar uma aplicação de funções e recursos relacionados no Azure. A aplicação de funções fornece um contexto de execução para as execuções do código de função.

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

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

Depois de criar a aplicação de funções, pode implementar Funções do Azure código do projeto nessa aplicação.

Pré-requisitos

Conta do Azure

Antes de começar, tem de ter uma conta do Azure com uma subscrição ativa. Crie uma conta gratuitamente.

Rever o ficheiro Bicep

O ficheiro Bicep utilizado neste início rápido é proveniente 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 seguintes do Azure são criados por este ficheiro Bicep:

Importante

A conta de armazenamento é utilizada para armazenar dados importantes da aplicação, incluindo, por vezes, o próprio código da aplicação. Deve limitar o acesso de outras aplicações e utilizadores à conta de armazenamento.

Implementar o ficheiro Bicep

  1. Guarde o ficheiro Bicep como main.bicep no seu computador local.

  2. Implemente o ficheiro Bicep com a CLI do Azure ou 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 <a localização> da aplicação pela região do Application Insights, que normalmente é igual ao grupo de recursos.

    Quando a implementação terminar, deverá ver uma mensagem a indicar que a implementação foi efetuada com êxito.

Validar a implementação

Utilize a CLI do Azure ou Azure PowerShell para validar a implementação.

az resource list --resource-group exampleRG

Página de boas-vindas da aplicação de funções

  1. Utilize o resultado do passo de validação anterior para obter o nome exclusivo criado para a sua aplicação de funções.

  2. Abra um browser e introduza o seguinte URL: <https://< appName.azurewebsites.net>. Certifique-se de que substitui <\appName> pelo nome exclusivo criado para a sua aplicação de funções.

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

    Página de boas-vindas da aplicação de funções

Limpar os recursos

Se continuar para o passo seguinte e adicionar um enlace de saída da fila de Armazenamento do Azure, mantenha todos os seus recursos implementados, uma vez que irá basear-se no que já fez.

Caso contrário, se já não precisar dos recursos, utilize a CLI do Azure, o PowerShell ou portal do Azure para eliminar o grupo de recursos e os respetivos recursos.

az group delete --name exampleRG

Passos seguintes

Agora que criou os recursos da aplicação de funções no Azure, pode implementar o código na aplicação existente com uma das seguintes ferramentas: