Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este artigo mostra como criar aplicativos de funções hospedados no do plano de Consumo Flex do no Azure Functions. Ele também mostra como gerenciar determinados recursos de um aplicativo hospedado do plano de Consumo Flex.
Os recursos do aplicativo de funções são específicos da linguagem. Escolha sua linguagem de desenvolvimento de código preferencial no início do artigo.
Pré-requisitos
Uma conta do Azure com uma assinatura ativa. Se ainda não tem uma, crie uma conta gratuita.
CLI do Azure: usada para criar e gerenciar recursos no Azure. Ao usar a CLI do Azure em seu computador local, use a versão 2.60.0 ou uma versão posterior. Você também pode usar o Azure Cloud Shell, que tem a versão correta da CLI do Azure.
Visual Studio Code: usado para criar e desenvolver aplicativos, criar recursos do Azure e implantar projetos de código no Azure. Ao usar o Visual Studio Code, instale também a extensão do Azure Functions mas recente. Você também pode instalar o pacote de extensão de Ferramentas do Azure.
Embora não seja necessário criar um aplicativo de plano de Consumo Flex, você precisa de um projeto de código para poder implantar e validar um novo aplicativo de funções. Conclua a primeira parte de um desses artigos de início rápido, em que você cria um projeto de código com uma função disparada por HTTP:
- Criar um projeto do Azure Functions da linha de comando
- Criar um projeto do Azure Functions usando o Visual Studio Code
Para criar um aplicativo em um novo plano de Consumo Flex durante uma implantação do Maven, você deve criar seu projeto de aplicativo local e atualizar o arquivo pom.xml do projeto. Para obter mais informações, consulte Criar um aplicativo de Consumo Java Flex usando o Maven
Retorne a este artigo depois de criar e executar o projeto local, mas antes de ser solicitado a criar recursos do Azure. Você cria o aplicativo de funções e outros recursos do Azure na próxima seção.
Criar um aplicativo de Consumo Flex
Esta seção mostra como criar um aplicativo de funções no plano de Consumo Flex usando a CLI do Azure, o portal do Azure ou o Visual Studio Code. Para obter um exemplo de criação de um aplicativo em um plano de consumo flex usando modelos Bicep/ARM, consulte o repositório de Consumo Flex.
Você pode ignorar esta seção se optar por criar e implantar seu aplicativo usando o Maven.
Para dar suporte ao código de função, você precisa criar três recursos:
- Um grupo de recursos, que é um contêiner lógico para recursos relacionados.
- Uma conta de armazenamento, que é usada para manter o estado e outras informações sobre suas funções.
- Um aplicativo de funções no plano de Consumo Flex, que fornece o ambiente para executar seu código de função. Um aplicativo de funções é mapeado para seu projeto de função local e permite agrupar funções como uma unidade lógica para facilitar o gerenciamento, a implantação e o compartilhamento de recursos no plano de Consumo Flex.
Se você ainda não tiver feito isso, entre no Azure:
az loginO comando
az loginconecta você à sua conta do Azure.Use o comando
az functionapp list-flexconsumption-locationspara examinar a lista de regiões que atualmente suportam o Consumo Flex em ordem alfabética.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Crie um grupo de recursos em uma das regiões atualmente com suporte listadas pelo comando na etapa anterior.
az group create --name <RESOURCE_GROUP> --location <REGION>No comando anterior, substitua
<RESOURCE_GROUP>por um valor exclusivo em sua assinatura e<REGION>por uma das regiões com suporte no momento. O comando az group create cria um grupo de recursos.Crie uma conta de armazenamento para uso geral no grupo de recursos e na região:
az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access falseNo exemplo anterior, substitua
<STORAGE_NAME>por um nome apropriado para você e exclusivo no Armazenamento do Azure. Os nomes devem conter de três a 24 caracteres, consistindo apenas em números e letras minúsculas.Standard_LRSespecifica uma conta de uso geral compatível com o Azure Functions de acordo com os requisitos da conta de armazenamento. O comando az storage account create cria a conta de armazenamento.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.
Criar o aplicativo de funções no Azure:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0aplicativos C# que executam em processo não têm suporte no momento durante a execução em um plano de Consumo Flex.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17Para aplicativos Java, o Java 11 também tem suporte no momento.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11Para aplicativos Python, o Python 3.10 também tem suporte no momento.
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4Neste exemplo, substitua
<RESOURCE_GROUP>e<STORAGE_NAME>pelo grupo de recursos e pelo nome da conta usada na etapa anterior, respectivamente. Substitua também<APP_NAME>por um nome globalmente exclusivo apropriado para você. O<APP_NAME>também é o domínio DNS (servidor de nomes de domínio) padrão para o aplicativo de funções. O comandoaz functionapp createcria o aplicativo de funções no Azure.Esse comando cria um aplicativo de funções em execução no plano de Consumo Flex.
Como você criou o aplicativo sem especificar instâncias sempre prontas, seu aplicativo só incorre em custos ao executar ativamente funções. O comando também cria uma instância associada do Azure Application Insights no mesmo grupo de recursos, com o qual será possível monitorar o aplicativo de funções e exibir os logs. Para saber mais, consulte Monitorar Azure Functions.
Implantar seu projeto de código
Para implantação, os aplicativos do plano de Consumo Flex usam um contêiner de armazenamento Blob para hospedar os arquivos de pacote .zip, que contêm o código do projeto e todas as bibliotecas necessárias para a execução do aplicativo. Para obter mais informações, consulte Implantação.
Você pode ignorar esta seção se optar por criar e implantar seu aplicativo usando o Maven.
Você pode optar por implantar o código do projeto em um aplicativo de funções existente usando várias ferramentas:
Você pode usar a CLI do Azure para carregar um arquivo de pacote de implantação no compartilhamento de implantação de um aplicativo de funções no Azure. Para fazer essa implantação, você deve produzir um arquivo de pacote .zip que pode ser executado quando o pacote é montado em seu aplicativo.
Esse arquivo de pacote deve conter todos os arquivos de saída de build e as bibliotecas referenciadas necessárias para a execução do projeto.
Quanto aos projetos com um número grande de bibliotecas, empacote a raiz do arquivo de projeto e solicite um build remoto.
Para projetos em Python, você deve empacotar o diretório raiz do seu projeto e sempre solicitar um build remoto. O uso de um build remoto impede possíveis problemas que podem ocorrer quando você cria um projeto no Windows a ser implantado no Linux.
Usando sua ferramenta de desenvolvimento preferencial, crie o projeto de código.
Crie um arquivo .zip que contenha a saída do diretório de build. Para obter mais informações, consulte a estrutura do Project.
Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o
az logincomando.az loginExecute o
az functionapp deployment source config-zipcomando para implantar o pacote de aplicativos localizado no relativo<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Usando sua ferramenta de desenvolvimento preferencial, crie o projeto de código.
Crie um arquivo .zip que contenha a saída do diretório de build. Para obter mais informações, consulte Estrutura de pastas.
Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o
az logincomando.az loginExecute o
az functionapp deployment source config-zipcomando para implantar o pacote de aplicativos localizado no relativo<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Crie um arquivo .zip que contenha o diretório raiz do projeto de código. Para obter mais informações, consulte Estrutura de pastas.
Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o
az logincomando.az loginExecute o
az functionapp deployment source config-zipcomando para implantar o pacote de aplicativos localizado no relativo<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
Crie um arquivo .zip que contenha o diretório raiz do projeto de código. Para obter mais informações, consulte Estrutura de pastas.
Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o
az logincomando.az loginExecute o
az functionapp deployment source config-zipcomando para implantar o pacote de aplicativos localizado no relativo<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueCertifique-se de definir
--build-remote truepara executar um build remoto.
Crie um arquivo .zip que contenha o diretório raiz do projeto de código. Para obter mais informações, consulte Estrutura de pastas.
Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o
az logincomando.az loginExecute o
az functionapp deployment source config-zipcomando para implantar o pacote de aplicativos localizado no relativo<FILE_PATH>.az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote trueCertifique-se de definir
--build-remote truepara executar um build remoto.
Criar e implantar seu aplicativo usando o Maven
Você pode usar o Maven para criar um aplicativo de funções hospedado por Consumo Flex e recursos necessários durante a implantação modificando o arquivo pom.xml.
Crie um projeto de código Java concluindo a primeira parte de um destes artigos de início rápido:
Em seu projeto de código Java, abra o arquivo pom.xml e faça estas alterações para criar seu aplicativo de funções no plano de Consumo Flex:
Altere o valor de
<properties>.<azure.functions.maven.plugin.version>para1.34.0.Na seção
<plugin>.<configuration>doazure-functions-maven-plugin, adicione ou descompacte o elemento<pricingTier>da seguinte maneira:<pricingTier>Flex Consumption</pricingTier>
(Opcional) Personalize o plano de Consumo Flex em sua implantação do Maven incluindo também estes elementos na seção
<plugin>.<configuration>: .-
<instanceSize>– define o tamanho de memória da instância para o aplicativo de funções. O valor padrão é2048. -
<maximumInstances>– define o valor mais alto para a contagem máxima de instâncias do aplicativo de funções. -
<alwaysReadyInstances>- define o contagens de instâncias sempre prontas com elementos filho para grupos de gatilhos HTTP (<http>), grupos de funções duráveis (<durable>) e outros gatilhos específicos (<my_function>). Quando você define qualquer contagem de instâncias maior que zero, você é cobrado por essas instâncias se suas funções são executadas ou não. Para mais informações, consulte Faturamento.
-
Antes de implantar, entre em sua assinatura do Azure usando a CLI do Azure.
az loginO comando
az loginconecta você à sua conta do Azure.Use o comando a seguir para implantar seu projeto de código em um novo aplicativo de funções no Consumo Flex.
mvn azure-functions:deployO Maven usa configurações no modelo de pom.xml para criar seu aplicativo de funções em um plano de Consumo Flex no Azure, juntamente com os outros recursos necessários. Se esses recursos já existirem, o código será implantado em seu aplicativo de funções, substituindo qualquer código existente.
Habilitar a integração de rede virtual
Você pode habilitar integração de rede virtual para seu aplicativo em um plano de Consumo Flex. Os exemplos nesta seção pressupõem que sua conta já contém uma rede virtual e uma sub-rede. Você pode habilitar a integração de rede virtual ao criar seu aplicativo ou em um momento posterior.
Importante
Atualmente, o plano de consumo flex não dá suporte a sub-redes com nomes que contêm caracteres de sublinhado (_).
Para habilitar a rede virtual ao criar seu aplicativo:
Você pode habilitar a integração de rede virtual executando o comando az functionapp create e incluindo os parâmetros --vnet e --subnet.
Crie a rede virtual e a sub-rede, se você ainda não tiver uma.
Conclua as etapas 1 a 4 em Criar um aplicativo de Consumo Flex para criar os recursos exigidos pelo seu aplicativo.
Execute o comando
az functionapp create, incluindo os parâmetros--vnete--subnet, como neste exemplo:az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime <RUNTIME_NAME> --runtime-version <RUNTIME_VERSION> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>O valor
<VNET_RESOURCE_ID>é a ID do recurso da rede virtual, que está no formato:/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP>/providers/Microsoft.Network/virtualNetworks/<VNET_NAME>. Você pode usar esse comando para obter uma lista de IDs de rede virtual, filtradas por<RESOURCE_GROUP>:az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.
Para obter exemplos de ponta a ponta de como criar aplicativos no Consumo Flex com integração de rede virtual, consulte estes recursos:
- Consumo Flex: HTTP para Hubs de Eventos usando a integração da rede virtual
- Consumo Flex: disparado do Barramento de Serviço usando a integração de rede virtual
Para modificar ou excluir a integração de rede virtual em um aplicativo existente:
Use o comando az functionapp vnet-integration add para habilitar a integração de rede virtual a um aplicativo de funções existente:
az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>
Use o comando az functionapp vnet-integration remove para desabilitar a integração de rede virtual em seu aplicativo:
az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Use o comando az functionapp vnet-integration list para listar as integrações de rede virtual atuais para seu aplicativo:
az functionapp vnet-integration list --resource-group <RESOURCE_GROUP> --name <APP_NAME>
Ao escolher uma sub-rede, essas considerações se aplicam:
- A sub-rede escolhida ainda não pode ser usada para outras finalidades, como pontos de extremidade privados ou pontos de extremidade de serviço, ou ser delegada a qualquer outro plano ou serviço de hospedagem.
- Você não pode compartilhar a mesma sub-rede entre um ambiente de Aplicativos de Contêiner e um aplicativo de Consumo Flex.
- Você pode compartilhar a mesma sub-rede com mais de um aplicativo em execução em um plano de Consumo Flex. Como os recursos de rede são compartilhados em todos os aplicativos, um aplicativo de funções pode afetar o desempenho de outras pessoas na mesma sub-rede.
- Em um plano de Consumo Flex, um único aplicativo de funções pode usar até 40 endereços IP, mesmo quando o aplicativo escala além de 40 instâncias. Embora essa regra geral seja útil ao estimar o tamanho da sub-rede necessária, ela não é estritamente imposta.
Definir configurações de implantação
No plano Consumo Flex, o pacote de implantação que contém o código do aplicativo é mantido em um contêiner do Armazenamento de Blobs do Azure. Por padrão, as implantações usam a mesma conta de armazenamento (AzureWebJobsStorage) e o mesmo valor da cadeia de conexão usados pelo runtime do Functions para manter seu aplicativo. A cadeia de conexão é armazenada na configuração de aplicativo DEPLOYMENT_STORAGE_CONNECTION_STRING. No entanto, você pode designar um contêiner de blob em uma conta de armazenamento separada como a fonte de implantação do código. Você também pode alterar o método de autenticação usado para acessar o contêiner.
Uma fonte de implantação personalizada deve atender a esses critérios:
- A conta de armazenamento já deve existir.
- Também é necessário ter um contêiner que será usado para as implantações, e ele precisa estar vazio.
- Quando mais de um aplicativo usa a mesma conta de armazenamento, cada um deve ter um contêiner de implantação próprio. O uso de um contêiner exclusivo para cada aplicativo impede que os pacotes de implantação sejam substituídos, o que ocorreria se os aplicativos compartilhassem o mesmo contêiner.
Ao configurar a autenticação de armazenamento de implantação, tenha estas considerações em mente:
- Como prática recomendada de segurança, você deve usar as identidades gerenciadas ao se conectar ao Armazenamento do Azure dos seus aplicativos. Para mais informações, consulte as Conexões.
- Quando você usa uma cadeia de conexão para se conectar à conta de armazenamento de implantação, a configuração do aplicativo que contém a cadeia de conexão já precisa existir.
- Quando você usa uma identidade gerenciada atribuída pelo usuário, a identidade fornecida é vinculada ao aplicativo de funções. A função
Storage Blob Data Contributorcom escopo para a conta de armazenamento de implantação também é atribuída à identidade. - Quando você usa uma identidade gerenciada atribuída pelo sistema, é criada uma identidade quando uma identidade atribuída pelo sistema válida ainda não existe no aplicativo. Quando há uma identidade atribuída pelo sistema, a função
Storage Blob Data Contributorcom escopo para a conta de armazenamento de implantação também é atribuída à identidade.
Para definir as configurações de implantação ao criar seu aplicativo de funções no plano Consumo Flex:
Use o az functionapp create comando e forneça estas opções extras que personalizam o armazenamento de implantação:
| Parâmetro | Descrição |
|---|---|
--deployment-storage-name |
O nome da conta de armazenamento de implantação. |
--deployment-storage-container-name |
O nome do contêiner da conta que conterá o pacote de implantação do aplicativo. |
--deployment-storage-auth-type |
O tipo de autenticação a ser usado para se conectar à conta de armazenamento de implantação. Os valores aceitos incluem StorageAccountConnectionString, UserAssignedIdentity e SystemAssignedIdentity. |
--deployment-storage-auth-value |
Quando StorageAccountConnectionString é usado, esse parâmetro é definido como o nome da configuração do aplicativo que contém a cadeia de conexão para a conta de armazenamento de implantação. Quando você define UserAssignedIdentity, esse parâmetro é definido como o nome da ID do recurso da identidade que você deseja usar. |
Este exemplo cria um aplicativo de funções no plano Consumo Flex com uma conta de armazenamento de implantação e uma identidade atribuída pelo usuário separadas:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime dotnet-isolated --runtime-version 8.0 --flexconsumption-location "<REGION>" --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME> --deployment-storage-auth-type UserAssignedIdentity --deployment-storage-auth-value <MI_RESOURCE_ID>
Você também pode modificar a configuração de armazenamento de implantação para um aplicativo existente.
Use o comando az functionapp deployment config set para modificar a configuração de armazenamento de implantação:
az functionapp deployment config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --deployment-storage-name <DEPLOYMENT_ACCOUNT_NAME> --deployment-storage-container-name <DEPLOYMENT_CONTAINER_NAME>
Configurar a memória da instância
O tamanho da memória da instância usado pelo seu plano de Consumo Flex pode ser definido explicitamente quando você cria seu aplicativo. Para obter mais informações sobre tamanhos com suporte, consulte tamanhos de instância.
Para definir um tamanho de memória de instância diferente do padrão ao criar seu aplicativo:
Especifique o parâmetro --instance-memory no comando az functionapp create. Este exemplo cria um aplicativo C# com um tamanho de instância de 4096:
az functionapp create --instance-memory 4096 --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime dotnet-isolated --runtime-version 8.0
A qualquer momento, você pode alterar a configuração de tamanho de memória da instância usada pelo aplicativo.
Este exemplo usa o az functionapp scale config set comando para alterar a configuração de tamanho de memória da instância para 512 MB:
az functionapp scale config set --resource-group <resourceGroup> --name <APP_NAME> --instance-memory 512
Definir contagens de instâncias sempre prontas
Você pode definir um número específico de instâncias sempre prontas para os grupos de dimensionamento por função ou funções individuais, para manter suas funções carregadas e prontas para serem executadas. Há três grupos especiais, como no dimensionamento por função:
-
http- todas as funções disparadas por HTTP no aplicativo são dimensionadas juntas em instâncias próprias. -
durable- todas as funções disparadas por Durável (Orquestração, Atividade, Entidade) no aplicativo são escaladas juntas em suas próprias instâncias. -
blob- todas as funções disparadas por blob (Grade de Eventos) no aplicativo são escaladas juntas em instâncias próprias.
Use http, durableou blob como o nome da configuração do par de valores de nome para configurar contagens sempre prontas para esses grupos. Para todas as outras funções no aplicativo, você precisa configurar sempre pronto para cada função individual usando o formato function:<FUNCTION_NAME>=n.
Para definir uma ou mais designações de instância sempre prontas, use o --always-ready-instances parâmetro com o az functionapp create comando. Este exemplo define a contagem de instâncias sempre pronta para todas as funções disparadas por HTTP como 10:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances http=10
Este exemplo define a contagem de instâncias sempre pronta para todas as funções de gatilho duráveis para 3 e define a contagem de instâncias sempre pronta como 2 para uma função disparada do barramento de serviço chamada function5:
az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage <STORAGE_NAME> --runtime <LANGUAGE_RUNTIME> --runtime-version <RUNTIME_VERSION> --flexconsumption-location <REGION> --always-ready-instances durable=3 function:function5=2
Você também pode modificar instâncias sempre prontas em um aplicativo existente adicionando ou removendo designações de instância ou alterando as contagens de designação de instância existentes.
Este exemplo usa o comando az functionapp scale config always-ready set para alterar a contagem de instâncias sempre pronta para o grupo de gatilhos HTTP 10:
az functionapp scale config always-ready set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --settings http=10
Para remover instâncias sempre prontas, use o comando az functionapp scale config always-ready delete, como neste exemplo que remove todas as instâncias sempre prontas do grupo de gatilhos HTTP e também de uma função chamada hello_world:
az functionapp scale config always-ready delete --resource-group <RESOURCE_GROUP> --name <APP_NAME> --setting-names http function:hello_world
Definir limites de simultaneidade HTTP
A menos que você defina limites específicos, os padrões de simultaneidade HTTP para aplicativos de plano de Consumo Flex são determinados com base na configuração de tamanho da instância. Para obter mais informações, consulte Simultaneidade do gatilho HTTP.
Veja como você pode definir limites de simultaneidade HTTP para um aplicativo existente:
Use o comando az functionapp scale config set para definir limites de simultaneidade HTTP específicos para seu aplicativo, independentemente do tamanho da instância.
az functionapp scale config set --resource-group <RESOURCE_GROUP> --name <APP_NAME> --trigger-type http --trigger-settings perInstanceConcurrency=10
Este exemplo define o nível de simultaneidade do gatilho HTTP como 10. Depois de definir especificamente um valor de simultaneidade HTTP, esse valor será mantido apesar de quaisquer alterações na configuração de tamanho da instância do aplicativo.
Definir a estratégia de atualização de site
O plano de Consumo Flexível dá suporte exclusivo a duas estratégias de atualização de site diferentes que controlam como seu aplicativo de funções lida com implantações de código e alterações de configuração. Por padrão, os aplicativos do plano Flex Consumption usam a estratégia Recreate, que encerra as funções que estão sendo executadas durante as implantações. Para habilitar implantações com zero tempo de inatividade, configure a estratégia RollingUpdate. Para obter mais informações, consulte Estratégias de Atualização de Site no Flex Consumption.
Observação
A configuração de estratégia de atualização de site está atualmente em versão prévia pública e só está disponível por meio de modelos Bicep ou ARM. Você não pode definir essa configuração usando a CLI do Azure, o portal do Azure ou o Visual Studio Code.
Atualmente, não há suporte para a configuração de estratégia de atualização de site na CLI do Azure. Use modelos Bicep ou ARM, conforme descrito na Configurando estratégia de atualização de site.
Exibir regiões com suporte no momento
Para exibir a lista de regiões que atualmente dão suporte a planos de Consumo Flex:
Se você ainda não tiver feito isso, entre no Azure:
az loginO comando
az loginconecta você à sua conta do Azure.Use o comando
az functionapp list-flexconsumption-locationspara examinar a lista de regiões que atualmente suportam o Consumo Flex em ordem alfabética.az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
Quando você cria um aplicativo no portal do Azure ou usando o Visual Studio Code, as regiões atualmente sem suporte são filtradas para fora da lista de regiões.
Monitorar seu aplicativo no Azure
O Azure Monitor fornece estes conjuntos distintos de métricas para ajudá-lo a entender melhor como seu aplicativo de funções é executado no Azure:
- Métricas de plataforma: fornece insights de nível de infraestrutura
- Application Insights: fornece insights no nível do código, incluindo logs de rastreamentos e erros.
Se você habilitar o Application Insights em seu aplicativo, poderá:
- Acompanhar os tempos detalhados de execução e as dependências
- Monitorar o desempenho de função específica individual
- Analisar falhas e exceções
- Correlacionar métricas de plataforma com o comportamento do aplicativo com consultas personalizadas
Para saber mais, consulte Monitorar Azure Functions.
Métricas com suporte
Execute este script para exibir todas as métricas da plataforma que estão disponíveis no momento em seu aplicativo:
appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
az monitor metrics list-definitions --resource $appId --query "[].{Name:name.localizedValue,Value:name.value}" -o table
Neste exemplo, substitua <RESOURCE_GROUP> e <APP_NAME> pelos nomes do grupo de recursos e do aplicativo de funções, respectivamente. Esse script obtém a ID de aplicativo totalmente qualificada e retorna as métricas de plataforma disponíveis em uma tabela.
Exibir métricas
Você pode examinar as métricas atuais no portal do Azure ou usando a CLI do Azure.
No portal do Azure, você também pode criar alertas de métricas e fixar gráficos e outros relatórios em dashboards no portal.
Use esse script para gerar um relatório das métricas atuais para seu aplicativo:
appId=$(az functionapp show --name <APP_NAME> --resource-group <RESOURCE_GROUP> --query id -o tsv)
appId=$(az functionapp show --name func-fuxigh6c255de --resource-group exampleRG --query id -o tsv)
echo -e "\nAlways-ready and on-emand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionCount" --interval PT1H --output table
echo -e "\nExecution units (MB-ms) in always-ready and on-emand execution counts..."
az monitor metrics list --resource $appId --metric "AlwaysReadyFunctionExecutionUnits" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "OnDemandFunctionExecutionUnits" --interval PT1H --output table
echo -e "\nAlways-ready resource utilization..."
az monitor metrics list --resource $appId --metric "AlwaysReadyUnits" --interval PT1H --output table
echo -e "\nMemory utilization..."
az monitor metrics list --resource $appId --metric "AverageMemoryWorkingSet" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "MemoryWorkingSet" --interval PT1H --output table
echo -e "\nInstance count and CPU utilization..."
az monitor metrics list --resource $appId --metric "InstanceCount" --interval PT1H --output table
az monitor metrics list --resource $appId --metric "CpuPercentage" --interval PT1H --output table
Para saber mais sobre as métricas do Azure Functions, consulte Monitorar o Azure Functions.
Exibir logs
Quando seu aplicativo estiver conectado ao Application Insights, você poderá analisar melhor o desempenho do aplicativo e solucionar problemas durante a execução.
- Usar "Desempenho" para analisar os tempos de resposta e as dependências
- Usar "Falhas" para identificar os erros que ocorrerem após a migração
- Crie consultas personalizadas em "Logs" para analisar o comportamento da função. Por exemplo:
Use esta consulta para comparar as taxas de êxito por instância:
requests
| where timestamp > ago(7d)
| summarize successCount=countif(success == true), failureCount=countif(success == false) by bin(timestamp, 1h), cloud_RoleName
| render timechart
Use esta consulta para analisar o número de instâncias que estavam processando ativamente sua função:
let _startTime = ago(20m); //Adjust start time as needed
let _endTime = now(); //Adjust end time as needed
let bins = 1s; //Adjust bin as needed - this will give per second results
requests
| where operation_Name == 'EventHubsTrigger' //Replace with the name of the function in the function app that you are analyzing
| where timestamp between(_startTime .. _endTime)
| make-series dcount(cloud_RoleInstance) default=0 on timestamp from _startTime to _endTime step bins
| render columnchart
Ver os custos
Como você pode ajustar seu aplicativo para ajustar o desempenho versus os custos operacionais, é importante acompanhar os custos associados à execução do aplicativo no plano de Consumo Flex.
Para exibir os custos atuais:
Na página do aplicativo de funções no portal do Azure, selecione o link do grupo de recursos.
Na página do grupo de recursos, selecione Gerenciamento de Custos>Análise de Custos.
Examine os custos atuais e a trajetória de custo do próprio aplicativo.
Opcionalmente, selecione Gerenciamento de Custos>Alertas e então + Adicionar para criar um novo alerta para o aplicativo.
Ajustar seu aplicativo
O plano de Consumo Flex fornece várias configurações que você pode ajustar para refinar o desempenho do seu aplicativo. O desempenho real e os custos podem variar de acordo com os padrões de carga de trabalho e a configuração específicos do aplicativo. Por exemplo, tamanhos de instância de memória mais altos podem melhorar o desempenho de operações com uso intensivo de memória, mas a um custo mais alto por período ativo.
Aqui estão alguns ajustes que você pode fazer para ajustar o desempenho versus o custo:
- Ajuste as configurações de simultaneidade para maximizar a taxa de transferência por instância.
- Escolha o tamanho de memória apropriado para sua carga de trabalho. Tamanhos de memória mais altos custam mais, mas podem melhorar o desempenho.