Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Este artigo mostra como criar aplicações de função hospedadas no plano Flex Consumption no Funções do Azure. Ele também mostra como gerenciar determinados recursos de um aplicativo hospedado no plano Flex Consumption.
Os recursos das aplicações funcionais são específicos da linguagem. 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 Funções do Azure. Você também pode instalar o pacote de extensões de 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:
- Criar um projeto do Funções do Azure a partir da linha de comando
- Criar um projeto do Funções do Azure usando o Visual Studio Code
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. Uma aplicação de funções mapeia-se com o seu projeto de funções local e permite agrupar funções como uma unidade lógica para facilitar a gestão, a implementação e o compartilhamento de recursos no plano Consumo Flex.
Se ainda não o fez, inicie sessão no Azure:
az loginO
az logincomando inicia sessão na sua conta do Azure.Use o
az functionapp list-flexconsumption-locationscomando 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
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.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 falseNo exemplo anterior, substitui
<STORAGE_NAME>por um nome que seja apropriado para ti e único no Armazenamento do Azure. Os nomes devem conter entre três a 24 caracteres, consistindo apenas em números e letras minúsculas.Standard_LRSespecifica uma conta de uso geral que o Funções do Azure 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.
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.0Atualmente, 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 17az 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 é suportado atualmente.
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 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. Oaz functionapp createcomando 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 Aplicação Azure 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 Monitorizar Funções do Azure.
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, empacota a raiz do ficheiro do teu projeto e solicita uma compilação remota.
Para projetos em Python, empacote a raiz do ficheiro do projeto e peça sempre 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.
Usando sua ferramenta de desenvolvimento preferida, construa o projeto de código.
Crie um arquivo .zip que contenha a saída do diretório de compilação. Para obter mais informações, consulte Estrutura do projeto.
Quando necessário, inicie sessão na sua conta Azure e selecione a subscrição ativa usando o comando
az login.az loginExecute o
az functionapp deployment source config-zipcomando 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>
Usando sua ferramenta de desenvolvimento preferida, construa o projeto de código.
Crie um arquivo .zip que contenha a saída do diretório de compilação. Para obter mais informações, consulte Estrutura das pastas.
Quando necessário, inicie sessão na sua conta Azure e selecione a subscrição ativa usando o comando
az login.az loginExecute o
az functionapp deployment source config-zipcomando 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>
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.
Quando necessário, inicie sessão na sua conta Azure e selecione a subscrição ativa usando o comando
az login.az loginExecute o
az functionapp deployment source config-zipcomando 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>
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.
Quando necessário, inicie sessão na sua conta Azure e selecione a subscrição ativa usando o comando
az login.az loginExecute o
az functionapp deployment source config-zipcomando 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 trueCertifique-se de definir
--build-remote truepara executar uma compilação remota.
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.
Quando necessário, inicie sessão na sua conta Azure e selecione a subscrição ativa usando o comando
az login.az loginExecute o
az functionapp deployment source config-zipcomando 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 trueCertifique-se de definir
--build-remote truepara executar uma compilação remota.
Crie e implemente a sua aplicação usando o Maven
Pode usar o Maven para criar uma aplicação de funções alojada pelo Flex Consumption e os recursos necessários durante a implementação, modificando o pom.xml ficheiro.
Crie um projeto de código Java concluindo a primeira parte de um destes artigos de início rápido:
No seu projeto de código Java, abra o ficheiro
pom.xmle faça estas alterações para criar a sua aplicação de funções no plano Flex Consumption:Altere o valor de
<properties>.<azure.functions.maven.plugin.version>para1.34.0.<plugin>.<configuration>Na seção doazure-functions-maven-plugin, adicione ou descomente o elemento<pricingTier>da seguinte maneira:<pricingTier>Flex Consumption</pricingTier>
(Opcional) Personalize o plano Flex Consumption na sua implementação do Maven incluindo também estes elementos na secção
<plugin>.<configuration>:.-
<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>- configura as contagens de instâncias sempre prontas com elementos filho para grupos de gatilho HTTP (), grupos de funções Durable (<http>) e outros gatilhos específicos (<durable>). Quando define um número de instâncias superior a zero, paga por essas instâncias, independentemente de as suas funções serem executadas ou não. Para obter mais informações, consulte Faturamento.
-
Antes de poder implementar, inicie sessão na sua subscrição do Azure utilizando a CLI do Azure.
az loginO
az logincomando inicia sessão na sua conta do Azure.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:deployO Maven usa as definições no modelo
pom.xmlpara criar a tua aplicação de funções num plano Flex Consumption em Azure, juntamente com os outros recursos necessários. Se esses recursos já existirem, o código é implementado na tua aplicação de funções, sobrescrevendo qualquer código existente.
Configurar a integração de rede virtual
Pode ativar a integração de rede virtual para a sua aplicação num plano Flex Consumption quando cria a sua aplicação ou numa altura posterior. Antes de ativar a integração com redes virtuais, reveja o comportamento da rede e os requisitos de sub-redes específicos do Flex Consumption.
Como funciona a ligação em rede do Flex Consumption
As instâncias de Flex Consumption não usam cada uma um endereço IP único da sub-rede onde integras a aplicação. Em vez disso, um conjunto de gateways de rede geridos pela plataforma (internos à infraestrutura Flex Consumption) utiliza endereços IP da sub-rede para servir todas as aplicações integradas nessa sub-rede. Esta arquitetura de multiplexação IP é fundamentalmente diferente dos planos Premium, onde cada instância utiliza um endereço IP da sub-rede.
A diretriz de 40 IPs por aplicação garante que há endereços IP suficientes para o pool de gateway da plataforma e outros componentes de infraestrutura, mas não é um limite imposto. Planeie este mínimo ao dimensionar a sua sub-rede, mas perceba que o consumo real de IP é normalmente menor. A plataforma aloca dinamicamente IPs do pool de gateways partilhados à medida que as aplicações integradas com a sub-rede escalam.
Dimensionamento e requisitos das sub-redes
Escolha uma sub-rede de tamanho adequado para as suas aplicações de Flex Consumption. A tabela seguinte fornece orientações baseadas no seu cenário:
| Scenario | CIDR recomendado | IPs utilizáveis | Notas |
|---|---|---|---|
| Aplicação Single Flex | /27 |
27 | Tamanho mínimo de sub-rede suportado para uma aplicação |
| Múltiplas aplicações Flex numa única sub-rede | /26 |
59 | Recomendado para alojar várias aplicações e para cargas de trabalho em grande escala (mais de 1.000 instâncias); fornece capacidade de gateway adequada |
Delegação de sub-rede
- Delegue a sub-rede ao
Microsoft.App/environments. Esta delegação difere dos planos Premium e Dedicados, que utilizamMicrosoft.Web/serverFarms. -
Registe o fornecedor de recursos
Microsoft.Appna sua subscrição.
Restrições de utilização de sub-redes
- A sub-rede já não pode ser usada para endpoints privados ou de serviço, e não pode ser delegada a outros planos ou serviços de alojamento.
- Não podes partilhar a mesma sub-rede entre um ambiente Azure Container Apps e uma app Flex Consumption.
- Os nomes de sub-redes não podem conter carateres de sublinhado (
_), o que constitui uma limitação atual do plano Flex Consumption.
Partilha de sub-redes
- Você pode compartilhar a mesma sub-rede com mais de um aplicativo em execução em um plano Flex Consumption. No entanto, como os recursos de rede são partilhados entre todas as aplicações, uma aplicação de função pode afetar o desempenho de outras na mesma sub-rede. Considere a procura agregada ao condensar várias aplicações numa pequena sub-rede.
- A sub-rede e a aplicação devem estar na mesma região.
Alocação e planeamento de PI
- As aplicações Flex Consumption não atribuem um endereço IP único a cada instância. Em vez disso, um conjunto de gateways de rede utiliza endereços IP da sub-rede. A orientação de reservar 40 IPs por aplicação ajuda a garantir que existem endereços IP suficientes para o pool de gateway e outros componentes da infraestrutura, mas o uso real é tipicamente mais baixo.
- Uma
/27sub-rede (27 IPs utilizáveis) é suficiente para uma única aplicação que suporta até 1.000 instâncias devido à multiplexação IP. Para várias aplicações ou cargas de trabalho em grande escala, utilize uma sub-rede/26para assegurar capacidade de gateway adequada. - Quando muitas aplicações partilham uma sub-rede e muitas são expandidas horizontalmente com tráfego de saída significativo, o débito de rede de saída pode tornar-se um gargalo, em vez de o esgotamento dos endereços IP ser o problema. Avalie o desempenho à escala de produção planeada.
Ative a integração da rede virtual ao criar a aplicação
Os exemplos nesta secção assumem que a sua conta já contém uma rede virtual e uma sub-rede.
Ative a integração na rede virtual executando o comando az functionapp create e incluindo os parâmetros --vnet e --subnet. A sub-rede deve ser delegada a Microsoft.App/environments e deve ter pelo menos /27 de tamanho. Para mais informações, consulte Dimensionamento e requisitos de sub-rede.
Cria a rede virtual e a sub-rede, caso ainda não tenhas uma.
Conclua as etapas de 1 a 4 em Criar um aplicativo Flex Consumption para criar os recursos exigidos pelo seu aplicativo.
Execute o
az functionapp createcomando, incluindo os--vnetparâ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 exemplos completos de como criar aplicações no Flex Consumption com integração de rede virtual, consulte estes recursos:
- Flex Consumption: HTTP para Hubs de Eventos usando integração de rede virtual
- Flex Consumption: acionado a partir do Service Bus usando integração de rede virtual
Modificar ou remover a integração de rede virtual
Pode adicionar, alterar ou remover integração de rede virtual para uma aplicação existente.
Use o comando az functionapp vnet-integration add para habilitar a integração de 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>
Diagnosticar problemas de desempenho da rede
Quando uma aplicação Flex Consumption se integra com uma sub-rede menor do que o tamanho recomendado, pode experienciar degradação de desempenho à medida que a aplicação escala. Este problema também pode acontecer se integrar várias aplicações com a mesma sub-rede quando estas escalam e têm tráfego de saída significativo.
Sintomas de sub-redes subdimensionadas
Monitorize estes sintomas, que indicam que a capacidade de saída e não os endereços IP é o fator limitante:
- Maior latência nas chamadas de saída para dependências
- Tempos limite de conexão a serviços externos
- Estes problemas aumentam à medida que a aplicação cresce, e não como uma falha repentina
Importante
A expansão horizontal em si não é limitada pelo tamanho da sub-rede. A aplicação continua a adicionar instâncias mesmo que a sub-rede seja subdimensionada. Verifica-se uma degradação do desempenho, em vez de um limite absoluto de escalabilidade.
Monitorização e mitigação
- Instrumentar o Application Insights com métricas de latência das dependências de saída: em que esta métrica fornece um sinal de alerta precoce para sub-redes subdimensionadas.
- Teste de carga à escala de produção antes de decidir o tamanho da sub-rede para validar que o tamanho da sua sub-rede consegue suportar a carga de trabalho esperada.
- Monitor com Azure Monitor: Vá a Rede Virtual>Subnet no Azure Monitor para ver os dados de alocação de IP através de consultas Azure Resource Graph e KQL.
-
Ajuste o tamanho correto da sua sub-rede de acordo com as orientações da secção anterior. Um
/27mínimo é fortemente recomendado; a/26é recomendado para várias aplicações.
Observação
Use pelo menos uma /27 sub-rede para garantir a estabilidade adequada da plataforma. Sub-redes significativamente menores do que /27 podem apresentar problemas de criação de gateways sem mensagem de erro explícita.
Configurar definições da implementação
No plano Flex Consumption, um contentor Armazenamento de Blobs do Azure mantém o pacote de implementação com o código da sua aplicação. Por predefinição, as implementações utilizam a mesma conta de armazenamento (AzureWebJobsStorage) e a mesma cadeia de ligação que o ambiente de execução do Functions utiliza para gerir a sua aplicação. A definição de aplicação DEPLOYMENT_STORAGE_CONNECTION_STRING armazena a cadeia de ligação. No entanto, pode designar um contentor blob numa conta de armazenamento separada como a fonte de implementaçã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 cumprir 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 do que uma aplicação usa a mesma conta de armazenamento, cada aplicação deve ter o seu próprio contentor de implementação. Usar um contentor único para cada aplicação impede que os pacotes de implementação sejam sobrescritos, o que aconteceria se as aplicações partilhassem o mesmo contentor.
Ao configurar a autenticação do armazenamento de implantação, tenha em mente estas considerações:
- Como melhor prática de segurança, use identidades geridas ao ligar-se ao Armazenamento do Azure a partir das suas aplicações. 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 usa uma identidade gerida atribuída pelo utilizador, liga a identidade fornecida à aplicação funcional. Também atribui à identidade a função
Storage Blob Data Contributorcom âmbito na conta de armazenamento da implementação. - Quando usa uma identidade gerida atribuída pelo sistema, cria uma identidade quando uma identidade válida atribuída pelo sistema ainda não existe na sua aplicação. Quando existe uma identidade atribuída pelo sistema, atribui à identidade a função
Storage Blob Data Contributorcom âmbito na conta de armazenamento de implementação.
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 contentor na conta para conter o pacote de implementação do seu aplicativo. |
--deployment-storage-auth-type |
O tipo de autenticação a usar para conectar à conta de armazenamento da implementação. Os valores aceites incluem StorageAccountConnectionString, UserAssignedIdentity, e SystemAssignedIdentity. |
--deployment-storage-auth-value |
Ao usar StorageAccountConnectionString, defina este parâmetro como o nome da definição de aplicação que contém a cadeia de ligação da conta de armazenamento utilizada para a implementação. Quando definires UserAssignedIdentity, define este parâmetro com o nome do ID de recurso da identidade que queres utilizar. |
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 do 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
Defina o tamanho da memória da instância do seu plano Flex Consumption ao criar a sua aplicação. 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
Defina um número específico de instâncias sempre prontas para os grupos de escalabilidade por função ou funções individuais, para manter as suas funções carregadas e prontas a executar. Existem três grupos especiais, como na escala 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 na aplicação, configure “always ready” para cada função, individualmente, utilizando 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
Se não definires limites específicos, o sistema determina os padrões de concorrência HTTP para as aplicações do plano Flex Consumption com base na definição do tamanho da tua instância. Para obter mais informações, consulte Simultaneidade de trigger HTTP.
Eis como defines limites de concorrência HTTP para uma aplicação 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 um valor de concorrência HTTP, a aplicação mantém esse valor apesar de quaisquer alterações nas definições de tamanho da instância da sua aplicação.
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 a CLI do Azure, o portal Azure ou o Visual Studio Code.
O CLI do Azure atualmente não suporta configuração de estratégias de atualização do site. Use modelos Bicep ou ARM conforme descrito em Configurar estratégia de atualização de site.
Configurar certificados ao nível do site
O Flex Consumption introduz certificados com âmbito de site, um novo modelo em que os certificados TLS/SSL são atribuídos à sua aplicação de função individual, em vez de partilhados entre aplicações no mesmo espaço web. A tabela seguinte mostra os tipos de certificados suportados e como cada um é adicionado à sua aplicação de funções:
| Tipo de certificado | Como adicionar | Conta para |
|---|---|---|
| Certificado Gerido de Serviços de Aplicações | Criado no portal para um domínio personalizado | Limite de certificados privados |
| Certificado do App Service | Comprado através do Azure e depois importado | Limite de certificados privados |
| Certificado importado de Key Vault | Importado do Azure Key Vault | Limite de certificados privados |
| Certificado privado carregado (.pfx) | Carregado como ficheiro PFX | Limite de certificados privados |
| Certificado público carregado (.cer) | Carregado como ficheiro CER | Limite de certificados públicos |
Considerações sobre certificados limitados ao site
- O suporte para utilizar certificados no âmbito do site com aplicações em execução num plano Flex Consumption está atualmente em versão preliminar.
- As aplicações existentes criadas antes desta funcionalidade estar disponível não têm atualmente um caminho de migração para certificados. Para utilizar certificados ao nível do site, crie uma nova aplicação de funções Flex Consumption.
- O suporte CLI do Azure para gerir certificados com âmbito de site ainda não está disponível. Entretanto, utilize o portal Azure ou ARM/Bicep templates para gerir os certificados.
- Cada aplicação suporta no máximo três certificados privados e três certificados públicos.
- Os certificados privados devem ser exportados como um ficheiro PFX protegido por palavra-passe que contenha todos os certificados intermédios e o certificado raiz na cadeia de certificados.
- A encriptação de ponta a ponta (E2E) não é atualmente suportada.
- Certificados de Criptografia de Curva Elíptica (ECC) são suportados quando carregados como PFX.
- Como o Flex Consumption corre no Linux, o seu código tem de carregar certificados a partir dos caminhos dos ficheiros em vez de a partir da loja de certificados do Windows. Primeiro, siga os passos em Tornar um certificado acessível ao seu código para carregar certificados no ambiente de execução. Depois, para orientações sobre como ler ficheiros de certificado do seu código de aplicação, veja Carregar certificados em containers Linux/Windows.
Adicionar um certificado
Pode adicionar certificados à sua aplicação de várias formas, dependendo do tipo de certificado. Adicione certificados geridos e Azure gratuitos diretamente no portal.
Selecione um dos separadores seguintes para ver como adicionar um certificado gerido, privado (.pfx), público (.cer) ou gerido pelo Key Vault.
- Associar certificado gerido
- Carregar privado (.pfx)
- Importar do Key Vault
- Carregar certificado público (.cer)
Para criar e vincular um certificado gerido gratuito para um domínio personalizado:
No portal do Azure, vá para seu aplicativo de função.
No menu à esquerda, expande Definições e seleciona Domínios Personalizados.
Selecione Adicionar domínio personalizado.
Em certificado TLS/SSL, selecione Certificado Gerido por Serviço de Aplicações.
Em tipo TLS/SSL, selecione SNI SSL.
Complete a validação do domínio e selecione Adicionar.
O certificado gerido é criado e associado automaticamente ao domínio personalizado. Pode demorar até 10 minutos até o certificado ser emitido.
Torne um certificado acessível ao seu código
Depois de adicionar um certificado, deve torná-lo explicitamente acessível ao seu código de função.
No portal do Azure, vá para seu aplicativo de função.
No menu à esquerda, expande Definições e seleciona Certificados.
Selecione Trazer seus próprios certificados (.pfx) ou Certificados de chave pública (.cer).
Selecione ... (reticências) ao lado do certificado que pretende tornar acessível e, em seguida, escolha Tornar acessível ao código da aplicação.
Quando ativa o Acessível ao código da aplicação, a plataforma carrega o certificado no ambiente de execução em todas as instâncias como ficheiro.
Os ficheiros de certificados são nomeados por impressão digital e colocados nestes diretórios:
| Tipo de certificado | Path |
|---|---|
| Certificados públicos (.cer) | /var/ssl/certs |
| Certificados privados (.pfx) | /var/ssl/private |
Renovar ou atualizar um certificado
Certificados geridos gratuitos são automaticamente renovados pela plataforma. Para todos os outros certificados, a forma como atualiza um certificado a expirar depende da fonte do certificado:
Certificados importados de Key Vault: Quando renova um certificado em Key Vault, o trabalho em segundo plano da plataforma sincroniza automaticamente o certificado atualizado com a sua aplicação de função dentro de 24 horas. A nova versão do certificado é carregada em todas as instâncias sem quaisquer passos manuais.
Certificados carregados: Carregue o novo certificado e depois torne-o acessível ao código da sua aplicação. Se o seu código referenciar o certificado por impressão digital, atualize quaisquer referências de impressão digital nas definições do código ou da aplicação.
Ver regiões atualmente suportadas
Para ver a lista de regiões que atualmente suportam planos Flex Consumption, veja:
Se ainda não o fez, inicie sessão no Azure:
az loginO
az logincomando inicia sessão na sua conta do Azure.Use o
az functionapp list-flexconsumption-locationscomando 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 crias uma aplicação no portal Azure ou usando Visual Studio Code, a lista de regiões exclui regiões atualmente não suportadas.
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 ao nível do código, incluindo traços e registos 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 de plataforma com o comportamento da aplicação usando consultas personalizadas
Para obter mais informações, consulte Monitorizar Funções do Azure.
Métricas suportadas
Execute este script para ver todas as métricas da plataforma atualmente disponíveis para a sua aplicação:
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 nomes de grupos de recursos e de aplicações funcionais. 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)
echo -e "\nAlways-ready and on-demand 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-demand 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 Funções do Azure, consulte Monitorar o Funções do Azure.
Ver registros
Ao ligar a sua aplicação ao Application Insights, pode analisar melhor o desempenho da sua aplicação e resolver problemas durante a execução. No recurso Application Insights para a sua aplicação:
- Use Performance para analisar tempos de resposta e dependências.
- Use Falhas para identificar quaisquer erros que ocorram após a migração.
- Crie consultas personalizadas nos Logs para analisar o comportamento das funções.
Por exemplo, use esta consulta para comparar as taxas de sucesso por instância:
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 estão a processar ativamente a 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:
Na página do seu aplicativo de função no portal do Azure, selecione o link do grupo de recursos.
Na página do grupo de recursos, selecione Cost Management>Cost analysis.
Analise os custos atuais e a trajetória de custos do próprio aplicativo.
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:
- 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.