Partilhar via


Criar e gerenciar aplicativos de função no plano Flex Consumption

Este artigo mostra como criar aplicativos de função hospedados no plano Flex Consumption no Azure Functions. Ele também mostra como gerenciar determinados recursos de um aplicativo hospedado no plano Flex Consumption.

Os recursos do aplicativo de função são específicos do idioma. Certifique-se de escolher sua linguagem de desenvolvimento de código preferida no início do artigo.

Pré-requisitos

  • Uma conta do Azure com uma subscrição ativa. Se ainda não tiver uma, pode criar uma conta gratuitamente.

  • CLI do Azure: usada para criar e gerenciar recursos no Azure. Ao usar a CLI do Azure em seu computador local, certifique-se de usar 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, certifique-se de instalar também a extensão mais recente do Azure Functions. Você também pode instalar o pacote de extensão Ferramentas do Azure.

  • Embora não seja necessário criar um aplicativo de plano Flex Consumption, você precisa de um projeto de código para poder implantar e validar um novo aplicativo de função. Conclua a primeira parte de um destes artigos de início rápido, onde você cria um projeto de código com uma função acionada por HTTP:

    Para criar um aplicativo em um novo plano Flex Consumption durante uma implantação do Maven, você deve criar seu projeto de aplicativo local e, em seguida, atualizar o arquivo pom.xml do projeto. Para obter mais informações, consulte Criar um aplicativo Java Flex Consumption 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ção e outros recursos do Azure na próxima seção.

Criar um aplicativo Flex Consumption

Esta seção mostra como criar um aplicativo de função no plano Flex Consumption 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 Flex Consumption usando modelos Bicep/ARM, consulte o repositório Flex Consumption.

Você pode ignorar esta seção se optar por criar e implantar seu aplicativo usando o Maven.

Para suportar seu 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ção no plano Flex Consumption, que fornece o ambiente para executar seu código de função. Um aplicativo de função mapeia 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 Flex Consumption.
  1. Se ainda não o fez, inicie sessão no Azure:

    az login
    

    O az login comando inicia sessão na sua conta do Azure.

  2. Use o az functionapp list-flexconsumption-locations comando para revisar a lista de regiões que atualmente oferecem suporte ao Flex Consumption em ordem alfabética.

    az functionapp list-flexconsumption-locations --query "sort_by(@, &name)[].{Region:name}" -o table
    
  1. Crie um grupo de recursos numa das regiões atualmente suportadas listadas pelo comando na etapa anterior.

    az group create --name <RESOURCE_GROUP> --location <REGION>
    

    No comando anterior, substitui <RESOURCE_GROUP> por um valor único na tua subscrição e <REGION> por uma das regiões atualmente suportadas. O comando az group create cria um grupo de recursos.

  2. Crie uma conta de armazenamento de uso geral em seu grupo de recursos e região:

    az storage account create --name <STORAGE_NAME> --location <REGION> --resource-group <RESOURCE_GROUP> --sku Standard_LRS --allow-blob-public-access false
    

    No exemplo anterior, substitui <STORAGE_NAME> por um nome que seja apropriado para ti e único no Azure Storage. Os nomes devem conter entre três a 24 caracteres, consistindo apenas em números e letras minúsculas. Standard_LRS especifica uma conta de uso geral que o Azure Functions suporta 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.

  3. Crie o aplicativo de função 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.0 
    

    Atualmente, não há suporte para aplicativos C# executados em processo quando executados em um plano Flex Consumption.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime java --runtime-version 17 
    

    Para aplicativos Java, o Java 11 também é suportado atualmente.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime node --runtime-version 20 
    
    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime python --runtime-version 3.11 
    

    Para aplicativos Python, o Python 3.10 também é suportado atualmente.

    az functionapp create --resource-group <RESOURCE_GROUP> --name <APP_NAME> --storage-account <STORAGE_NAME> --flexconsumption-location <REGION> --runtime powershell --runtime-version 7.4 
    

    Neste exemplo, substitua ambos <RESOURCE_GROUP> e <STORAGE_NAME> pelo grupo de recursos e o nome da conta usada na etapa anterior, respectivamente. Substitua <APP_NAME> também por um nome globalmente exclusivo apropriado para você. O <APP_NAME> também é o domínio padrão do servidor de nomes de domínio (DNS) para o aplicativo de função. O az functionapp create comando cria o aplicativo de função no Azure.

    Este comando cria um aplicativo funcional em execução no plano Flex Consumption.

    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 a qual você pode monitorar seu aplicativo de função e exibir logs. Para obter mais informações, consulte Monitorar o Azure Functions.

Implantar seu projeto de código

Para implementação, as aplicações do plano Flex Consumption usam um contêiner de armazenamento Blob para hospedar 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 seu código de projeto em um aplicativo de função existente usando várias ferramentas:

Pode usar a CLI do Azure para carregar um ficheiro de pacote de implementação para a partilha de implementação de uma aplicação de funções no Azure. Para realizar esta implementação, deve produzir um ficheiro de pacote .zip que pode correr quando o pacote está montado na sua aplicação.

Esse arquivo de pacote deve conter todos os arquivos de saída de compilação e bibliotecas referenciadas necessárias para a execução do projeto.

Para projetos com um grande número de bibliotecas, você deve empacotar a raiz do seu arquivo de projeto e solicitar uma compilação remota.

Para projetos Python, você deve empacotar a raiz do seu arquivo de projeto e sempre solicitar uma compilação remota. O uso de uma compilação remota evita possíveis problemas que podem ocorrer quando você cria um projeto no Windows para ser implantado no Linux.

  1. Usando sua ferramenta de desenvolvimento preferida, construa o projeto de código.

  2. Crie um arquivo .zip que contenha a saída do diretório de compilação. Para obter mais informações, consulte Estrutura do projeto.

  3. Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o az login comando.

    az login
    
  4. Execute o az functionapp deployment source config-zip comando para implantar o pacote de aplicativo localizado no relativo <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Usando sua ferramenta de desenvolvimento preferida, construa o projeto de código.

  2. Crie um arquivo .zip que contenha a saída do diretório de compilação. Para obter mais informações, consulte Estrutura das pastas.

  3. Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o az login comando.

    az login
    
  4. Execute o az functionapp deployment source config-zip comando para implantar o pacote de aplicativo localizado no relativo <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Crie um arquivo .zip que contém o diretório raiz do seu projeto de código. Para obter mais informações, consulte Estrutura das pastas.

  2. Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o az login comando.

    az login
    
  3. Execute o az functionapp deployment source config-zip comando para implantar o pacote de aplicativo localizado no relativo <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP>
    
  1. Crie um arquivo .zip que contém o diretório raiz do seu projeto de código. Para obter mais informações, consulte Estrutura das pastas.

  2. Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o az login comando.

    az login
    
  3. Execute o az functionapp deployment source config-zip comando para implantar o pacote de aplicativo localizado no relativo <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    Certifique-se de definir --build-remote true para executar uma compilação remota.

  1. Crie um arquivo .zip que contém o diretório raiz do seu projeto de código. Para obter mais informações, consulte Estrutura das pastas.

  2. Quando necessário, entre em sua conta do Azure e selecione a assinatura ativa usando o az login comando.

    az login
    
  3. Execute o az functionapp deployment source config-zip comando para implantar o pacote de aplicativo localizado no relativo <FILE_PATH>.

    az functionapp deployment source config-zip --src <FILE_PATH> --name <APP_NAME> --resource-group <RESOURCE_GROUP> --build-remote true
    

    Certifique-se de definir --build-remote true para executar uma compilação remota.

Crie e implante seu aplicativo usando o Maven

Você pode usar o Maven para criar um aplicativo de função hospedado do Flex Consumption e os recursos necessários durante a implantação, modificando o arquivo pom.xml.

  1. Crie um projeto de código Java concluindo a primeira parte de um destes artigos de início rápido:

  2. Em seu projeto de código Java, abra o arquivo pom.xml e faça estas alterações para criar seu aplicativo de função no plano Flex Consumption:

    • Altere o valor de <properties>.<azure.functions.maven.plugin.version> para 1.34.0.

    • <plugin>.<configuration> Na seção do azure-functions-maven-plugin, adicione ou descomente o <pricingTier> elemento da seguinte maneira:

      <pricingTier>Flex Consumption</pricingTier>
      
  3. (Opcional) Personalize o plano Flex Consumption em sua implantação do Maven incluindo também estes elementos na <plugin>.<configuration> seção: .

    • <instanceSize>- Define o tamanho da memória da instância para o aplicativo de função. O valor predefinido é 2048.
    • <maximumInstances> - Define o valor mais alto para a contagem máxima de instâncias do aplicativo de função.
    • <alwaysReadyInstances>- define as contagens de instâncias sempre prontas com elementos filho para grupos de gatilho 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, independentemente de suas funções serem executadas ou não. Para obter mais informações, consulte Faturamento.
  4. Antes de implantar, entre em sua assinatura do Azure usando a CLI do Azure.

    az login
    

    O az login comando inicia sessão na sua conta do Azure.

  5. Use o comando a seguir para implantar seu projeto de código em um novo aplicativo de função no Flex Consumption.

    mvn azure-functions:deploy
    

    O Maven usa as configurações no modelo pom.xml para criar seu aplicativo de função em um plano de Consumo Flex no Azure, juntamente com os outros recursos necessários. Caso esses recursos já existam, o código é implantado em seu aplicativo de função, substituindo qualquer código existente.

Habilite a integração de rede virtual

Você pode habilitar a integração de rede virtual para seu aplicativo em um plano Flex Consumption. Os exemplos nesta secção assumem que a 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 posteriormente.

Importante

Atualmente, o plano Flex Consumption não suporta sub-redes com nomes que contenham caracteres de sublinhado (_).

Para habilitar a rede virtual ao criar seu aplicativo:

Você pode habilitar a integração de rede virtual executando o az functionapp create comando e incluindo os --vnet parâmetros e --subnet .

  1. Cria a rede virtual e a sub-rede, caso ainda não tenhas uma.

  2. Conclua as etapas de 1 a 4 em Criar um aplicativo Flex Consumption para criar os recursos exigidos pelo seu aplicativo.

  3. Execute o az functionapp create comando, incluindo os --vnet parâmetros e --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 <VNET_RESOURCE_ID> valor é o ID do recurso para a 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, filtrada por <RESOURCE_GROUP>: az network vnet list --resource-group <RESOURCE_GROUP> --output tsv --query "[]".id.

Para obter exemplos completos de como criar aplicativos no Flex Consumption com integração de rede virtual, consulte estes recursos:

Para modificar ou excluir a integração de rede virtual em um aplicativo existente:

Use o comando para habilitar a integração de az functionapp vnet-integration add rede virtual com um aplicativo de função existente:

az functionapp vnet-integration add --resource-group <RESOURCE_GROUP> --name <APP_NAME> --vnet <VNET_RESOURCE_ID> --subnet <SUBNET_NAME>

Use o comando para desabilitar a az functionapp vnet-integration remove integração de rede virtual em seu aplicativo:

az functionapp vnet-integration remove --resource-group <RESOURCE_GROUP> --name <APP_NAME>

Use o az functionapp vnet-integration list comando 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, estas considerações se aplicam:

  • A sub-rede escolhida já não pode ser usada para outros fins, como com pontos finais privados ou pontos finais de serviço ou ser delegada para qualquer outro plano ou serviço de alojamento.
  • Não é possível compartilhar a mesma sub-rede entre um ambiente Container Apps e um aplicativo Flex Consumption.
  • Você pode compartilhar a mesma sub-rede com mais de um aplicativo em execução em um plano Flex Consumption. Como os recursos de rede são compartilhados entre todos os aplicativos, um aplicativo de função pode afetar o desempenho de outros na mesma sub-rede.
  • Num plano de Consumo Flexível, uma aplicação de funções individual pode utilizar até 40 endereços IP, mesmo se for dimensionada para lá de 40 instâncias. Embora essa regra prática seja útil ao estimar o tamanho da sub-rede necessária, ela não é rigorosamente aplicada.

Configurar definições da implementação

No plano Flex Consumption, o pacote de implantação que contém o código do seu aplicativo é mantido em um contêiner de Armazenamento de Blob 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 tempo de execução do Functions para manter seu aplicativo. A cadeia de conexão é armazenada na configuração do DEPLOYMENT_STORAGE_CONNECTION_STRING aplicativo. No entanto, você pode, em vez disso, designar um contêiner de blob em uma conta de armazenamento separada como a fonte de implantação do seu 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 estes critérios:

  • A conta de armazenamento já deve existir.
  • O contêiner a ser usado para implantações também deve existir.
  • Quando mais de um aplicativo usa a mesma conta de armazenamento, cada um deve ter seu próprio contêiner de implantação. O uso de um contêiner exclusivo para cada aplicativo impede que os pacotes de implantação sejam substituídos, o que aconteceria 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 identidades gerenciadas ao se conectar ao Armazenamento do Azure a partir de seus aplicativos. Para obter mais informações, consulte 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á deve existir.
  • Quando você usa uma identidade gerenciada atribuída pelo usuário, a identidade fornecida é vinculada ao aplicativo de função. A Storage Blob Data Contributor função com escopo para a conta de armazenamento de implantação também é atribuída à identidade.
  • Quando você usa uma identidade gerenciada atribuída ao sistema, uma identidade é criada quando uma identidade atribuída pelo sistema válida ainda não existe em seu aplicativo. Quando existe uma identidade atribuída pelo sistema, a Storage Blob Data Contributor função com 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ção no plano Flex Consumption:

Use o comando az functionapp create 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 na conta para conter o pacote de implantação do seu aplicativo.
--deployment-storage-auth-type O tipo de autenticação a ser usado para se conectar à conta de armazenamento de implantação. Os valores aceites incluem StorageAccountConnectionString, UserAssignedIdentity, e SystemAssignedIdentity.
--deployment-storage-auth-value Ao usar StorageAccountConnectionStringo , 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. Ao definir UserAssignedIdentity, este parâmetro é definido como o nome da ID de recurso da identidade que pretende usar.

Este exemplo cria um aplicativo de função no plano Flex Consumption com uma conta de armazenamento de implantação separada e uma identidade atribuída ao usuário:

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 az functionapp deployment config set comando 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 de instância usado pelo seu plano Flex Consumption pode ser definido explicitamente quando você cria seu aplicativo. Para obter mais informações sobre tamanhos suportados, 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 --instance-memory parâmetro em seu az functionapp create comando. 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 da memória da instância usada pelo seu aplicativo.

Este exemplo usa o az functionapp scale config set comando para alterar a configuração de tamanho da 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. Existem três grupos especiais, como no dimensionamento por função:

  • http - Todas as funções ativadas por HTTP na aplicação escalam em conjunto nas suas próprias instâncias.
  • durable - Todas as funções desencadeadas pelo Durable (Orquestração, Atividade, Entidade) na aplicação escalam em conjunto nas suas próprias instâncias.
  • blob - Todas as funções acionadas por blobs e integradas com o Event Grid na aplicação escalam em conjunto em instâncias próprias.

Use http, durableou blob como o nome para a 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 prontas para todas as funções acionadas 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 prontas para todas as funções de gatilho Durable como 3 e define a contagem de instâncias sempre prontas como 2 para uma função acionada 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 contagens de designações de instâncias existentes.

Este exemplo usa o az functionapp scale config always-ready set comando para alterar a contagem de instâncias sempre prontas para o grupo de gatilhos HTTP para 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 az functionapp scale config always-ready delete comando, 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 do plano Flex Consumption são determinados com base na configuração de tamanho da instância. Para obter mais informações, consulte Simultaneidade de gatilho HTTP.

Veja como você pode definir limites de simultaneidade HTTP para um aplicativo existente:

Use o az functionapp scale config set comando 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 é mantido apesar de quaisquer alterações na configuração de tamanho da instância do seu aplicativo.

Definir estratégia de atualização do site

O plano Flex Consumption suporta exclusivamente duas estratégias diferentes de atualização de site que controlam como seu aplicativo de função 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 atualmente em execução durante as implementações. Para habilitar implantações sem tempo de inatividade, pode configurar 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 da estratégia de atualização do site está atualmente em pré-visualização pública e só está disponível através de modelos Bicep ou ARM. Não pode configurar esta configuração usando o Azure CLI, o portal Azure ou o Visual Studio Code.

A configuração da estratégia de atualização de site não é suportada atualmente na CLI do Azure. Use modelos Bicep ou ARM conforme descrito em Configurar estratégia de atualização de site.

Ver regiões atualmente suportadas

Para visualizar a lista de regiões que atualmente suportam os planos Flex Consumption:

  1. Se ainda não o fez, inicie sessão no Azure:

    az login
    

    O az login comando inicia sessão na sua conta do Azure.

  2. Use o az functionapp list-flexconsumption-locations comando para revisar a lista de regiões que atualmente oferecem suporte ao Flex Consumption 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 sem suporte no momento 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ção é executado no Azure:

  • Métricas da plataforma: fornece insights no nível da infraestrutura
  • Application Insights: fornece insights no nível do código, incluindo rastreamentos e logs de erros.

Se ativar o Application Insights na sua aplicação, pode:

  • Acompanhe os tempos de execução detalhados e as dependências
  • Monitorizar o desempenho de funções individuais
  • Analise falhas e exceções
  • Correlacione métricas da plataforma com o comportamento do aplicativo com consultas personalizadas

Para obter mais informações, consulte Monitorar o Azure Functions.

Métricas suportadas

Execute este script para exibir todas as métricas da plataforma que estão atualmente disponíveis no 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> por seus nomes de aplicativo de função e grupo de recursos, respectivamente. Esse script obtém o ID do aplicativo totalmente qualificado e retorna as métricas da plataforma disponíveis em uma tabela.

Ver métricas

Você pode revisar 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 para painéis no portal.

Use este script para gerar um relatório das métricas atuais do 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 métricas para o Azure Functions, consulte Monitorar o Azure Functions.

Ver registros

Quando seu aplicativo está conectado ao Application Insights, você pode analisar melhor o desempenho do aplicativo e solucionar problemas durante a execução.

  • Use "Desempenho" para analisar tempos de resposta e dependências
  • Use "Falhas" para identificar quaisquer erros que ocorram 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 sucesso 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 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 Flex Consumption.

Para visualizar os custos atuais:

  1. Na página do seu aplicativo de função no portal do Azure, selecione o link do grupo de recursos.

  2. Na página do grupo de recursos, selecione Cost Management>Cost analysis.

  3. Analise os custos atuais e a trajetória de custos do próprio aplicativo.

  4. Opcionalmente, selecione Alertas de gerenciamento de> custos e, em seguida, + Adicionar para criar um novo alerta para o aplicativo.

Ajuste seu aplicativo

O plano Flex Consumption fornece várias configurações que você pode ajustar para refinar o desempenho do seu aplicativo. O desempenho e os custos reais podem variar com base nos padrões e na configuração da carga de trabalho específica do aplicativo. Por exemplo, tamanhos de instância de memória mais altos podem melhorar o desempenho para operações que consomem muita 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: