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 Flex Funções do Azure Disponível de Forma Generalizada (GA) 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
Plano de consumo Funções do Azure GA Nenhuma

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 Flex Obtenha escalonamento horizontal rápido com opções de computação, rede virtual 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.
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.

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 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
Plano de consumo ✅ Apenas código
❌ Contentor (não suportado)
✅ Apenas código
  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 Flex 30 Sem limites2
Plano Premium 304 Sem limites2
Plano dedicado 304 Sem limites3
Aplicativos de contêiner 30 Sem limites5
Plano de consumo 5 10
  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 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
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
  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 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.
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.

Limites de serviço

Recurso Plano de consumo Flex Plano Premium Plano específico/ASE Aplicativos de contêiner Plano de consumo
Duração do tempo limite padrão (min) 30 30 301 3016 5
Duração máxima do tempo limite (min) ilimitado 9 ilimitado 9 ilimitado 2 ilimitado 17 10
Máximo de conexões de saída (por instância) ilimitado ilimitado ilimitado ilimitado 600 ativos (1200 no total)
Tamanho máximo da solicitação (MB)3 210 210 210 210 210
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 210-840 100-840/210-25010 varia 100 varia
Memória máxima (GB por instância) <4 sup4 3.5-14 1.75-256/8-256 varia 1.5
Contagem máxima de instâncias (Windows/Linux) 100/20 varia por SKU/10011 10-30018 200/100 1000 15
Aplicativos de função por plano13 100 100 ilimitado 4 ilimitado 4 100
Planos do Serviço de Aplicações n/d 100 por grupo de recursos 100 por grupo de recursos n/d 100 por região
Slots de implantação por aplicativo12 n/d 3 1-2011 não suportado 2
Armazenamento (temporário)5 0,8 GB 21-140 GB 11-140 GB n/d 0,5 GB
Armazenamento (persistente) 0 GB7 250 GB 10-1000 GB11 n/d 1 GB6,7
Domínios personalizados por aplicativo 500 500 500 não suportado 5007
Suporte SSL de domínio personalizado 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 conexão SNI SSL não limitada incluída

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.
  7. No Linux, você deve montar explicitamente seu próprio compartilhamento de Arquivos do Azure.
  8. 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.
  9. 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.
  10. 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.
  11. Consulte Limites do Serviço de Aplicativo para obter detalhes.
  12. Incluindo o slot de produção.
  13. Atualmente, há um limite de 5000 aplicativos de função em uma determinada assinatura.
  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 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 Flex Plano de consumo Plano Premium Plano específico/ASE Aplicativosde contêiner 1
Restrições de IP de entrada
Pontos de extremidade privados de entrada
Integração da rede virtual 3
Restrições de IP de saída
  1. Para obter mais informações, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.
  2. Há considerações especiais ao trabalhar com gatilhos de rede virtual.
  3. Apenas o plano Dedicado/ASE suporta a integração de rede virtual necessária pelo gateway.

Faturação

Planear Detalhes
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.
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.

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