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:
- Microsoft.Storage/storageAccounts: crie uma conta de Armazenamento do Azure, que é necessária pelas Funções.
- Microsoft.Web/serverfarms: crie um plano de alojamento de Consumo sem servidor para a aplicação de funções.
- Microsoft.Web/sites: crie uma aplicação de funções.
- microsoft.insights/components: crie uma instância do Application Insights para monitorização.
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
Guarde o ficheiro Bicep como main.bicep no seu computador local.
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
Utilize o resultado do passo de validação anterior para obter o nome exclusivo criado para a sua aplicação de funções.
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:
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: