Partilhar via


Opções de hospedagem do Azure Functions

Ao criar um aplicativo de função no Azure, você deve escolher uma opção de hospedagem para seu aplicativo. O Azure fornece estas opções de hospedagem para seu código de função:

Opção de hospedagem Serviço Disponibilidade Suporte de contentor
Plano de consumo Funções do Azure Disponível de Forma Generalizada (GA) Nenhuma
Plano de consumo Flex Funções do Azure Pré-visualizar Nenhuma
Plano Premium Funções do Azure GA Linux
Plano dedicado Funções do Azure GA Linux
Aplicativos de contêiner Azure Container Apps GA Linux

As opções de hospedagem do Azure Functions são facilitadas pela infraestrutura do Serviço de Aplicativo do Azure em máquinas virtuais Linux e Windows. A opção de hospedagem escolhida dita os seguintes comportamentos:

  • Como seu aplicativo de função é dimensionado.
  • Os recursos disponíveis para cada instância do aplicativo de função.
  • Suporte para funcionalidades avançadas, como conectividade de Rede Virtual do Azure.
  • Suporte para contêineres Linux.

O plano escolhido também afeta os custos de execução do código de função. Para obter mais informações, consulte Faturamento.

Este artigo fornece uma comparação detalhada entre as várias opções de hospedagem. Para saber mais sobre como executar e gerenciar seu código de função em contêineres Linux, consulte Suporte a contêineres Linux no Azure Functions.

Visão geral dos planos

A seguir está um resumo dos benefícios das várias opções de hospedagem do Azure Functions:

Opção Benefícios
Plano de consumo Pague pelos recursos de computação apenas quando as suas funções estiverem em execução (pay-as-you-go) com escala automática.

No Plano de consumo, as instâncias do anfitrião das Funções são adicionadas e removidas dinamicamente com base no número de eventos de entrada.

✔ Plano de hospedagem padrão que fornece hospedagem sem servidor verdadeira.
✔ Pague apenas quando as suas funções estiverem em execução.
✔ Dimensiona automaticamente, mesmo durante períodos de carga elevada.
Plano de consumo Flex Obtenha alta escalabilidade com opções de computação, redes virtuais e faturamento pré-pago.

No plano Flex Consumption, as instâncias do host Functions são adicionadas e removidas dinamicamente com base na simultaneidade configurada por instância e no número de eventos de entrada.

✔ Reduza as partidas a frio especificando várias instâncias pré-provisionadas (sempre prontas).
✔ Suporta redes virtuais para maior segurança.
✔ Pague quando as suas funções estiverem em execução.
✔ Dimensiona automaticamente, mesmo durante períodos de carga elevada.
Plano Premium Dimensiona automaticamente com base na demanda usando trabalhadores pré-aquecidos, que executam aplicativos sem atraso depois de ficarem ociosos, são executados em instâncias mais poderosas e se conectam a redes virtuais.

Considere o plano Azure Functions Premium nas seguintes situações:

✔ Seus aplicativos funcionais são executados continuamente ou quase continuamente.
✔ Você quer mais controle de suas instâncias e deseja implantar vários aplicativos de função no mesmo plano com dimensionamento controlado por eventos.
✔ Você tem um alto número de pequenas execuções e uma alta conta de execução, mas poucos segundos de GB no plano de consumo.
✔ Você precisa de mais opções de CPU ou memória do que as fornecidas pelos planos de consumo.
✔ Seu código precisa ser executado por mais tempo do que o tempo máximo de execução permitido no plano de consumo.
✔ Você precisa de conectividade de rede virtual.
✔ Você deseja fornecer uma imagem Linux personalizada para executar suas funções.
Plano dedicado Execute suas funções dentro de um plano do Serviço de Aplicativo com as taxas regulares do plano do Serviço de Aplicativo.

Ideal para cenários de longa duração em que as funções duráveis não podem ser usadas. Considere um plano do Serviço de Aplicativo nas seguintes situações:

✔ Você tem máquinas virtuais existentes e subutilizadas que já estão executando outras instâncias do Serviço de Aplicativo.
✔ Você deve ter faturamento totalmente previsível ou precisa dimensionar instâncias manualmente.
✔ Você deseja executar vários aplicativos Web e aplicativos funcionais no mesmo plano
✔ Você precisa ter acesso a opções de tamanho de computação maiores.
✔ Isolamento de computação completo e acesso seguro à rede fornecido por um Ambiente de Serviço de Aplicativo (ASE).
✔ Uso de memória muito alto e alta escala (ASE).
Aplicativos de contêiner Crie e implante aplicativos de função em contêineres em um ambiente totalmente gerenciado hospedado pelos Aplicativos de Contêiner do Azure.

Use o modelo de programação do Azure Functions para criar aplicativos de função nativos da nuvem, sem servidor e orientados a eventos. Execute suas funções ao lado de outros microsserviços, APIs, sites e fluxos de trabalho como programas hospedados em contêiner. Considere hospedar suas funções em aplicativos de contêiner nas seguintes situações:

✔ Você deseja empacotar bibliotecas personalizadas com seu código de função para oferecer suporte a aplicativos de linha de negócios.
✔ Você precisa migrar a execução de código de aplicativos locais ou herdados para microsserviços nativos da nuvem executados em contêineres.
✔ Quando você quiser evitar a sobrecarga e a complexidade do gerenciamento de clusters Kubernetes e computação dedicada.
✔ Suas funções precisam de poder de processamento high-end fornecido por recursos de computação GPU dedicados.

As tabelas restantes neste artigo comparam as opções de hospedagem com base em vários recursos e comportamentos.

Suporte de sistema operativo

Esta tabela mostra o suporte do sistema operacional para as opções de hospedagem.

Alojamento Implantação do Linux1 Implantação do Windows2
Plano de consumo ✅ Apenas código
❌ Contentor (não suportado)
✅ Apenas código
Plano de consumo Flex ✅ Apenas código
❌ Contentor (não suportado)
❌ Não suportado
Plano Premium ✅ Apenas código
✅ Contentor
✅ Apenas código
Plano dedicado ✅ Apenas código
✅ Contentor
✅ Apenas código
Aplicativos de contêiner ✅ Apenas contentores ❌ Não suportado
  1. Linux é o único sistema operacional suportado para a pilha de tempo de execução do Python.
  2. As implantações do Windows são somente código. Atualmente, o Functions não suporta contêineres do Windows.

Duração do tempo limite do aplicativo de função

A duração do functionTimeout tempo limite para funções em um aplicativo de função é definida pela propriedade no arquivo de projeto host.json . Esta propriedade aplica-se especificamente a execuções de funções. Depois que o gatilho inicia a execução da função, a função precisa retornar/responder dentro da duração do tempo limite. Para evitar tempos limites, é importante escrever funções robustas. Para obter mais informações, consulte Melhorar o desempenho e a confiabilidade do Azure Functions.

A tabela a seguir mostra os valores padrão e máximo (em minutos) para planos específicos:

Planear Predefinido Máximo1
Plano de consumo 5 10
Plano de consumo Flex 30 Sem limites2
Plano Premium 304 Sem limites2
Plano dedicado 304 Sem limites3
Aplicativos de contêiner 30 Sem limites4
  1. Independentemente da definição de tempo limite da aplicação de funções, 230 segundos é a quantidade máxima de tempo que uma função acionada por HTTP pode demorar a responder a um pedido. Isso ocorre devido ao tempo limite ocioso padrão do Balanceador de Carga do Azure. Para tempos de processamento mais longos, considere usar o padrão assíncrono de Funções Duráveis ou adie o trabalho real e retorne uma resposta imediata.
  2. Não há uma duração máxima de tempo limite de execução imposta. No entanto, o período de carência dado à execução de uma função é de 60 minutos durante a escala para os planos Flex Consumption e Premium, e um período de carência de 10 minutos é dado durante as atualizações da plataforma.
  3. Requer que o plano do Serviço de Aplicativo esteja definido como Sempre Ativado. Um período de carência de 10 minutos é dado durante as atualizações da plataforma.
  4. O tempo limite padrão para a versão 1.x do tempo de execução do host Functions é ilimitado.
  5. Quando o número mínimo de réplicas é definido como zero, o tempo limite padrão depende dos gatilhos específicos usados no aplicativo.

Suporte de idiomas

Para obter detalhes sobre o suporte atual à pilha de idiomas nativos no Functions, consulte Idiomas suportados no Azure Functions.

Escala

A tabela a seguir compara os comportamentos de dimensionamento dos vários planos de hospedagem.
As instâncias máximas são dadas por aplicativo por função (Consumo) ou por plano (Premium/Dedicado), salvo indicação em contrário.

Planear Aumentar horizontalmente Máximo de # instâncias
Plano de consumo Impulsionado por eventos. Dimensiona-se automaticamente, mesmo durante períodos de carga elevada. A infraestrutura de funções dimensiona os recursos de CPU e memória adicionando mais instâncias do host Functions, com base no número de eventos de gatilho de entrada. Janelas: 200
Linux: 1001
Plano de consumo Flex Dimensionamento por função. As decisões de dimensionamento orientadas por eventos são calculadas por função, o que fornece uma maneira mais determinística de dimensionar as funções em seu aplicativo. Com exceção de HTTP, armazenamento de Blob (grade de eventos) e funções duráveis, todos os outros tipos de gatilho de função em seu aplicativo são dimensionados em instâncias independentes. Todos os gatilhos HTTP em seu aplicativo são dimensionados juntos como um grupo nas mesmas instâncias, assim como todos os gatilhos de armazenamento de Blob (Grade de Eventos). Todos os gatilhos de Funções Duráveis também compartilham instâncias e são dimensionados juntos. Limitado apenas pelo uso total de memória de todas as instâncias em uma determinada região. Para obter mais informações, consulte Memória de instância.
Plano Premium Impulsionado por eventos. Dimensione automaticamente, mesmo durante períodos de carga elevada. A infraestrutura do Azure Functions dimensiona recursos de CPU e memória adicionando mais instâncias do host do Functions, com base no número de eventos nos quais suas funções são acionadas. Janelas: 100
Linux: 20-1002
Plano dedicado3 Manual/dimensionamento automático 10-30
100.º (ASE)
Aplicativos de contêiner Impulsionado por eventos. Dimensione automaticamente, mesmo durante períodos de carga elevada. A infraestrutura do Azure Functions dimensiona recursos de CPU e memória adicionando mais instâncias do host do Functions, com base no número de eventos nos quais suas funções são acionadas. 300-10004
  1. Durante a expansão, atualmente há um limite de 500 instâncias por assinatura por hora para aplicativos Linux em um plano de consumo.
  2. Em algumas regiões, os aplicativos Linux em um plano Premium podem ser dimensionados para 100 instâncias. Para obter mais informações, consulte o artigo do plano Premium.
  3. Para obter limites específicos para as várias opções do plano do Serviço de Aplicativo, consulte os limites do plano do Serviço de Aplicativo.
  4. Em Aplicativos de Contêiner, o padrão é 10 instâncias, mas você pode definir o número máximo de réplicas, que tem um máximo geral de 1000. Essa configuração é respeitada desde que haja cota de núcleos suficiente disponível. Quando cria a sua aplicação funcional a partir do portal do Azure, está limitado a 300 instâncias.

Comportamento de arranque a frio

Planear Detalhes
Plano de consumo Os aplicativos podem ser dimensionados para zero quando ociosos, o que significa que algumas solicitações podem ter mais latência na inicialização. O plano de consumo tem algumas otimizações para ajudar a diminuir o tempo de inicialização a frio, incluindo a extração de funções de espaço reservado pré-aquecidas que já têm os processos de host e idioma em execução.
Plano de consumo Flex Suporta instâncias sempre prontas para reduzir o atraso ao provisionar novas instâncias.
Plano Premium Suporta instâncias sempre prontas para evitar partidas a frio, permitindo que você mantenha uma ou mais instâncias perpetuamente quentes .
Plano dedicado Ao executar em um plano dedicado, o host Functions pode ser executado continuamente em um número prescrito de instâncias, o que significa que o arranque a frio não é realmente um problema.
Aplicativos de contêiner Depende do número mínimo de réplicas:
• Quando definido como zero: os aplicativos podem ser dimensionados para zero quando ociosos e algumas solicitações podem ter mais latência na inicialização.
• Quando definido como um ou mais: o processo do host é executado continuamente, o que significa que o arranque a frio não é um problema.

Limites de serviço

Recurso Plano de consumo Planode consumo Flex 13 Plano Premium Plano específico/ASE Aplicativos de contêiner
Duração do tempo limite padrão (min) 5 30 30 301 3016
Duração máxima do tempo limite (min) 10 ilimitado 8 ilimitado 8 ilimitado 2 ilimitado 17
Máximo de conexões de saída (por instância) 600 ativos (1200 no total) ilimitado ilimitado ilimitado ilimitado
Tamanho máximo da solicitação (MB)3 100 100 100 100 100
Comprimento máximo dacadeia de caracteres de consulta 3 4096 4096 4096 4096 4096
Comprimento máximo do URL desolicitação 3 8192 8192 8192 8192 8192
ACU por instância 100 varia 210-840 100-840/210-2509 varia
Memória máxima (GB por instância) 1.5 4 14 3.5-14 1.75-14/3.5-14 varia
Contagem máxima de instâncias (Windows/Linux) 200/100 1000 15 100/20 varia por SKU/10010 10-30018
Aplicativos de função por plano12 100 100 100 ilimitado 4 ilimitado 4
Planos do Serviço de Aplicações 100 por região n/d 100 por grupo de recursos 100 por grupo de recursos n/d
Slots de implantação por aplicativo11 2 n/d 3 1-2010 não suportado
Armazenamento (temporário)5 0,5 GB 0,8 GB 21-140 GB 11-140 GB n/d
Armazenamento (persistente) 1 GB6 0 GB6 250 GB 10-1000 GB10 n/d
Domínios personalizados por aplicativo 5007 500 500 500 não suportado
Suporte SSL de domínio personalizado conexão SNI SSL não limitada incluída SNI SSL não limitado e 1 conexões IP SSL incluídas SNI SSL não limitado e 1 conexões IP SSL incluídas SNI SSL não limitado e 1 conexões IP SSL incluídas não suportado

Notas sobre os limites de serviço:

  1. Por padrão, o tempo limite para o tempo de execução do Functions 1.x em um plano do Serviço de Aplicativo é ilimitado.
  2. Requer que o plano do Serviço de Aplicativo esteja definido como Sempre Ativado. Pague à taxa normal. Um período de carência de 10 minutos é dado durante as atualizações da plataforma.
  3. Esses limites são definidos no host.
  4. O número real de aplicativos de função que você pode hospedar depende da atividade dos aplicativos, do tamanho das instâncias da máquina e da utilização de recursos correspondente.
  5. O limite de armazenamento é o tamanho total do conteúdo em armazenamento temporário em todos os aplicativos no mesmo plano do Serviço de Aplicativo. Para planos de consumo no Linux, o armazenamento é atualmente de 1,5 GB.
  6. O plano de consumo usa um compartilhamento do Azure Files para armazenamento persistente. Quando você fornece seu próprio compartilhamento de Arquivos do Azure, os limites de tamanho de compartilhamento específicos dependem da conta de armazenamento definida para WEBSITE_CONTENTAZUREFILECONNECTIONSTRING. No Linux, você deve montar explicitamente seu próprio compartilhamento de Arquivos do Azure para os planos Flex Consumption e Consumption.
  7. Quando seu aplicativo de função é hospedado em um plano de consumo, somente a opção CNAME é suportada. Para aplicativos de função em um plano Premium ou um plano do Serviço de Aplicativo, você pode mapear um domínio personalizado usando um registro CNAME ou A.
  8. Não há uma duração máxima de tempo limite de execução imposta. No entanto, o período de carência dado à execução de uma função é de 60 minutos durante a escala e 10 minutos durante as atualizações da plataforma.
  9. Os trabalhos são funções que alojam aplicações de cliente. Os trabalhadores estão disponíveis em três tamanhos fixos: Uma vCPU/3,5 GB de RAM; Dois vCPU/7 GB de RAM; Quatro vCPU/14 GB de RAM.
  10. Consulte Limites do Serviço de Aplicativo para obter detalhes.
  11. Incluindo o slot de produção.
  12. Atualmente, há um limite de 5000 aplicativos de função em uma determinada assinatura.
  13. O plano Flex Consumption está atualmente em pré-visualização.
  14. Atualmente, os tamanhos das instâncias do plano Flex Consumption são definidos como 2.048 MB ou 4.096 MB. Para obter mais informações, consulte Memória de instância.
  15. O plano Flex Consumption durante a visualização tem uma cota de assinatura regional que limita o uso total de memória de todas as instâncias em uma determinada região. Para obter mais informações, consulte Memória de instância.
  16. Quando o número mínimo de réplicas é definido como zero, o tempo limite padrão depende dos gatilhos específicos usados no aplicativo.
  17. Quando o número mínimo de réplicas é definido como uma ou mais.
  18. Em Aplicativos de Contêiner, você pode definir o número máximo de réplicas, que é respeitado desde que haja cota de núcleos suficiente disponível.

Funcionalidades de rede

Caraterística Plano de consumo Plano de consumo Flex Plano Premium Plano específico/ASE Aplicativos de contêiner*
Restrições de IP de entrada ✅Sim ✅Sim ✅Sim ✅Sim ✅Sim
Pontos de extremidade privados de entrada ❌Não ✅Sim ✅Sim ✅Sim ❌Não
Integração da rede virtual ❌Não ✅Sim (Regional) ✅Sim (Regional) ✅Sim (Regional e Gateway) ✅Sim
Gatilhos de rede virtual (não HTTP) ❌Não ✅Sim ✅Sim ✅Sim ✅Sim
Conexões híbridas (somente Windows) ❌Não ❌ Não ✅Sim ✅Sim ❌Não
Restrições de IP de saída ❌Não ✅Sim ✅Sim ✅Sim ✅Sim

*Para obter mais informações, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.

Faturação

Planear Detalhes
Plano de consumo Pague apenas pelo tempo de execução das suas funções. A faturação baseia-se no número de execuções, no tempo de execução e na memória utilizada.
Plano de consumo Flex O faturamento é baseado no número de execuções, na memória das instâncias quando elas estão executando funções ativamente, além do custo de todas as instâncias sempre prontas. Para obter mais informações, consulte Faturamento do plano Flex Consumption.
Plano Premium O plano Premium baseia-se no número de segundos principais e na memória utilizada nas instâncias necessárias e pré-aquecidas. Pelo menos uma instância por plano deve ser sempre mantida aquecida. Este plano fornece os preços mais previsíveis.
Plano dedicado Você paga o mesmo por aplicativos funcionais em um Plano do Serviço de Aplicativo como pagaria por outros recursos do Serviço de Aplicativo, como aplicativos Web.

Para um ASE, há uma taxa mensal fixa que paga pela infraestrutura e não muda com o tamanho do ambiente. Há também um custo por vCPU do plano do Serviço de Aplicativo. Todas as aplicações alojadas num ASE estão na SKU de preços Isolada. Para obter mais informações, consulte o artigo de visão geral do ASE.
Aplicativos de contêiner A cobrança nos Aplicativos de Contêiner do Azure é baseada no seu tipo de plano. Para obter mais informações, consulte Cobrança em aplicativos de contêiner do Azure.

Para obter uma comparação direta de custos entre planos de hospedagem dinâmica (Consumo, Consumo Flexível e Premium), consulte a página de preços do Azure Functions. Para obter os preços das várias opções de plano dedicado, consulte a página de preços do Serviço de Aplicativo. Para obter preços de hospedagem de Aplicativos de Contêiner, consulte Preços de Aplicativos de Contêiner do Azure.

Limitações para criar novos aplicativos de função em um grupo de recursos existente

Em alguns casos, ao tentar criar um novo plano de hospedagem para seu aplicativo de função em um grupo de recursos existente, você pode receber um dos seguintes erros:

  • O nível de preços não é permitido neste grupo de recursos
  • <> SKU_name trabalhadores não estão disponíveis no grupo <de recursos resource_group_name>

Isso pode acontecer quando as seguintes condições são atendidas:

  • Você cria um aplicativo de função em um grupo de recursos existente que já continha outro aplicativo de função ou aplicativo Web. Por exemplo, os aplicativos de consumo do Linux não são suportados no mesmo grupo de recursos que os planos Linux Dedicated ou Linux Premium.
  • Seu novo aplicativo de função é criado na mesma região do aplicativo anterior.
  • A aplicação anterior é, de alguma forma, incompatível com a sua nova aplicação. Esse erro pode acontecer entre SKUs, sistemas operacionais ou devido a outros recursos no nível da plataforma, como suporte à zona de disponibilidade.

A razão pela qual isso acontece é devido à forma como os planos de aplicativo de função e aplicativo Web são mapeados para diferentes pools de recursos ao serem criados. SKUs diferentes exigem um conjunto diferente de recursos de infraestrutura. Quando você cria um aplicativo em um grupo de recursos, esse grupo de recursos é mapeado e atribuído a um pool específico de recursos. Se você tentar criar outro plano nesse grupo de recursos e o pool mapeado não tiver os recursos necessários, esse erro ocorrerá.

Quando esse erro ocorrer, em vez disso, crie seu aplicativo de função e plano de hospedagem em um novo grupo de recursos.

Próximos passos