Compartilhar via


Opções de rede do Azure Functions

Este artigo descreve os recursos de rede disponíveis nas opções de hospedagem para o Azure Functions. As opções de rede a seguir podem ser categorizadas como recursos de rede de entrada e de saída. Com os recursos de entrada, é possível restringir o acesso ao aplicativo. Com os recursos de saída, é possível conectar o aplicativo a recursos protegidos por uma rede virtual e controlar como o tráfego de saída é roteado.

Os modelos de hospedagem têm diferentes níveis de isolamento de rede disponíveis. Escolher o correto ajuda a atender aos seus requisitos de isolamento de rede.

Recurso Plano de Consumo Flexível Plano de Consumo Plano Premium Plano Dedicado/ASE Aplicativos de Contêiner1
Restrições de IP de entrada
Pontos de extremidade privados de entrada
Integração de rede virtual 2 3
Restrições de IP de saída
  1. Para obter mais informações, consulteRede no ambiente de Aplicativos de Contêiner do Azure.
  2. Há considerações especiais ao trabalhar com gatilhos de rede virtual.
  3. Somente o plano Dedicado/ASE dá suporte à integração de rede virtual necessária para o gateway.

Recursos do início rápido

Use os recursos a seguir para iniciar rapidamente com os cenários de rede do Azure Functions. Esses recursos são referenciados em todo o artigo.

Recursos de rede de entrada

Os recursos a seguir permitem filtrar solicitações de entrada para seu aplicativo de funções.

Restrições de acesso de entrada

Você pode usar restrições de acesso para definir uma lista ordenada de prioridades dos endereços IP que podem ou não acessar o seu aplicativo. A lista pode incluir endereços IPv4 e IPv6 ou sub-redes específicas da rede virtual usando pontos de extremidade de serviço. Quando há uma ou mais entradas, há uma negação implícita de tudo no final da lista. As restrições de IP funcionam com todas as opções de hospedagem de função.

As restrições de acesso estão disponíveis nos planos Consumo Flex, Elástico Premium, Consumo e Serviço de Aplicativo.

Observação

Com as restrições de rede em vigor, você pode implantar somente de dentro de sua rede virtual ou quando tiver colocado o endereço IP do computador que está usando para acessar o portal do Azure na lista de destinatários seguros. No entanto, você ainda pode gerenciar a função usando o portal.

Para saber mais, confira Restrições de acesso ao serviço do Serviço de Aplicativo do Azure.

Pontos de extremidade privados

O Ponto de Extremidade Privado do Azure é um adaptador de rede que conecta você de maneira privada e segura a um serviço que conta com o Link Privado do Azure. O Ponto de Extremidade Privado usa um endereço IP privado da rede virtual, colocando efetivamente o serviço na sua rede virtual.

Você pode usar o ponto de extremidade privado para as funções hospedadas nos planos Consumo Flex, Elastic Premium e Dedicado (Serviço de Aplicativo).

Se você quiser fazer chamadas para Pontos de extremidade privados, deverá certificar-se de que suas pesquisas de DNS sejam resolvidas em relação ao ponto de extremidades privado. Você pode impor esse comportamento de uma das seguintes maneiras:

  • Integrar com as zonas privadas do DNS do Azure. Quando sua rede virtual não tem um servidor DNS personalizado, isso é feito automaticamente.
  • Gerenciar o ponto de extremidade privado no servidor DNS usado pelo seu aplicativo. Para gerenciar um ponto de extremidade privado que você esteja tentando acessar, é preciso conhecer o endereço dele e usar um registro A para referenciá-lo.
  • Configure seu próprio servidor DNS para encaminhar para as zonas privadas do DNS do Azure.

Para saber mais, confira usar Pontos de extremidade privados para Aplicativos Web.

Para chamar outros serviços que têm uma conexão de ponto de extremidade privada, como armazenamento ou barramento de serviço, certifique-se de configurar o aplicativo para fazer chamadas de saída para pontos de extremidade privados. Para obter mais detalhes sobre como usar pontos de extremidade privados com a conta de armazenamento do aplicativo de funções, visite restringir a conta de armazenamento a uma rede virtual.

Pontos de extremidade de serviço

Usando os pontos de extremidade de serviço, você pode restringir vários serviços do Azure a sub-redes de uma rede virtual selecionadas a fim de oferecer um nível mais alto de segurança. A integração de rede virtual regional permite alcançar serviços do Azure protegidos com pontos de extremidade de serviço. Essa configuração tem suporte em todos os planos que dão suporte à integração de rede virtual. Siga estas etapas para acessar um ponto de extremidade de serviço seguro:

  1. Configure a integração de rede virtual regional com seu aplicativo de funções para se conectar a uma sub-rede específica.
  2. Vá para o serviço de destino e configure os pontos de extremidade de serviço em relação à sub-rede de integração.

Para obter mais detalhes, confira Pontos de extremidade de serviço de rede virtual.

Usar pontos de extremidade de serviço

Para restringir o acesso a uma sub-rede específica, crie uma regra de restrição com um tipo de Rede Virtual. Você pode selecionar a assinatura, a rede virtual e a sub-rede às quais deseja permitir ou negar acesso.

Se os pontos de extremidade de serviço ainda não estiverem habilitados com Microsoft.Web para a sub-rede que você selecionou, eles serão automaticamente habilitados, a menos que você marque a caixa de seleção Ignorar os pontos de extremidade de serviço Microsoft.Web ausentes. O cenário em que você pode querer habilitar pontos de extremidade de serviço no aplicativo, mas não na sub-rede depende principalmente de você ter as permissões para habilitá-los na sub-rede.

Se você precisar que outra pessoa habilite os pontos de extremidade de serviço na sub-rede, marque a caixa de seleção Ignorar pontos de extremidade do serviço Microsoft.Web ausentes. O aplicativo é configurado para pontos de extremidade de serviço, que são habilitados posteriormente na sub-rede.

Captura de tela do painel

Você não pode usar pontos de extremidade de serviço para restringir o acesso a aplicativos que são executados em um Ambiente do Serviço de Aplicativo. Quando o seu aplicativo estiver em um Ambiente do Serviço de Aplicativo, você poderá controlar o acesso a ele aplicando as regras de acesso de IP.

Para saber como configurar os pontos de extremidade de serviço, consulte Estabelecer acesso ao site privado do Azure Functions.

Recursos de rede de saída

É possível usar os recursos desta seção para gerenciar as conexões de saída estabelecidas pelo aplicativo.

Integração de rede virtual

Esta seção detalha os recursos compatíveis com o Functions que ajudam você a controlar os dados de saída do aplicativo.

A integração de rede virtual dá ao aplicativo de funções acesso aos recursos na rede virtual. Uma vez integrado, o aplicativo roteia o tráfego de saída pela rede virtual. Com isso, ele pode acessar pontos de extremidade privados ou recursos com regras que permitem apenas o tráfego de sub-redes selecionadas. Quando o destino for um endereço IP fora da rede virtual, o IP de origem ainda será enviado de um dos endereços listados nas propriedades do aplicativo, a menos que você tenha configurado um Gateway da NAT.

O Azure Functions dá suporte a dois tipos de integração de rede virtual:

Para saber como configurar a integração de rede virtual, consulte Habilitar a integração de rede virtual.

Integração de rede virtual regional

O uso da integração de rede virtual regional permite que seu aplicativo acesse:

  • Recursos na mesma rede virtual do seu aplicativo.
  • Recursos em redes virtuais emparelhadas com a rede virtual à qual seu aplicativo está integrado.
  • Serviços protegidos por ponto de extremidade de serviço.
  • Recursos nas conexões do Azure ExpressRoute.
  • Recursos nas conexões emparelhadas, que incluem conexões do Azure ExpressRoute.
  • Pontos de extremidade privados

Usando a integração de rede virtual regional, você pode usar os seguintes recursos de rede do Azure:

  • NSGs (grupos de segurança de rede) : você pode bloquear o tráfego de saída com um NSG que é colocado em sua sub-rede de integração. As regras de entrada não se aplicam porque você não pode usar a integração de rede virtual para fornecer acesso de entrada ao seu aplicativo.
  • UDRs (tabelas de rotas) : você pode inserir uma tabela de rotas na sub-rede de integração para enviar o tráfego de saída para onde desejar.

Observação

Quando você roteia todo o tráfego de saída para sua rede virtual, ele está sujeito aos NSGs e UDRs aplicados à sua sub-rede de integração. Quando a rede virtual é integrada, o tráfego de saída do aplicativo de funções para endereços IP públicos ainda é enviado dos endereços listados nas propriedades do aplicativo, a menos que você forneça rotas que direcionem o tráfego para outro local.

A integração de rede virtual regional não pode usar a porta 25.

Considerações para o plano Consumo Flex:

  • Certifique-se de que o Microsoft.App provedor de recursos do Azure esteja habilitado para sua assinatura seguindo estas instruções. Ele é necessário para a delegação de sub-redes.
  • A delegação de sub-redes necessária ao fazer a execução em um plano de Consumo Flex é Microsoft.App/environments. Isso difere dos planos Elastic Premium e Dedicado (Serviço de Aplicativo), que têm um requisito de delegação diferente.
  • Você pode planejar 40 endereços IP a serem usados, no máximo, para um aplicativo de funções, mesmo que o aplicativo seja dimensionado para mais de 40. Por exemplo, se você tiver 15 aplicativos de funções de Consumo Flex integrados na mesma sub-rede, será necessário planejar o uso de 15 x 40 = 600 endereços IP ​​no máximo. Esse limite está sujeito a alterações e não é imposto.
  • A sub-rede não pode estar sendo usada para outros fins (como pontos de extremidade privados ou de serviço, ou delegada a qualquer outro plano ou serviço de hospedagem). Embora seja possível compartilhar a mesma sub-rede com diversos aplicativos de Consumo Flex, os recursos de rede são compartilhados entre esses aplicativos de funções, o que pode fazer com que um deles afete o desempenho dos outros na mesma sub-rede.

Considerações para os planos Elastic Premium, Dedicado (Serviço de Aplicativo) e Aplicativos de Contêiner:

  • O recurso está disponível para Elastic Premium e Serviço de Aplicativo Premium V2 e Premium V3. Ele também está disponível em Standard, mas somente em implantações mais recentes do Serviço de Aplicativo. Se você estiver em uma implantação mais antiga, só poderá usar esse recurso em um plano do Serviço de Aplicativo Premium V2. Se você quiser ter certeza de que pode usar a funcionalidade em um plano do Serviço de Aplicativo Standard, crie seu aplicativo em um plano do Serviço de Aplicativo Premium V3. Só há suporte para esses planos nas implantações mais recentes. Se quiser, você poderá reduzir verticalmente depois disso.
  • A funcionalidade não pode ser usada por aplicativos de plano isolado que estejam em um Ambiente do Serviço de Aplicativo.
  • O aplicativo e a rede virtual precisam estar na mesma região.
  • O recurso requer uma sub-rede /28 ou maior não utilizada em uma rede virtual do Azure Resource Manager.
  • A sub-rede de integração pode ser usada por apenas um plano do Serviço de Aplicativo.
  • Você pode ter até duas integrações de rede virtual regional por plano do Serviço de Aplicativo. Vários aplicativos no mesmo plano do Serviço de Aplicativo podem usar a mesma sub-rede de integração.
  • Você não pode excluir uma rede virtual com um aplicativo integrado. Remova a integração antes de excluir a rede virtual.
  • Você não pode alterar a assinatura de um aplicativo ou plano enquanto há um aplicativo usando a integração de rede virtual regional.

Habilitar a integração de rede virtual

  1. Em seu aplicativo de funções no portal do Azure, selecione Rede e, em Integração VNet, selecione Clique aqui para configurar.

  2. Selecione Adicionar VNet.

    Captura de tela da página Integração de VNet, em que é possível habilitar a integração de rede virtual no aplicativo.

  3. A lista suspensa contém todas as redes virtuais do Azure Resource Manager na sua assinatura na mesma região. Selecione a rede à qual você deseja se integrar.

    Selecionar a VNET

    • Os planos de hospedagem Consumo Flex e Elastic Premium só são compatíveis com a integração de redes virtuais regionais. Se a rede virtual estiver na mesma região, crie uma sub-rede ou selecione uma sub-rede vazia existente.

    • Para selecionar uma rede virtual em outra região, você precisará ter um gateway de rede virtual provisionado com o recurso ponto a site habilitado. A integração de rede virtual entre regiões só tem suporte para planos Dedicados, mas emparelhamentos globais funcionam com a integração de rede virtual regional.

Durante a integração, o aplicativo é reiniciado. Quando a integração for concluída, você verá detalhes sobre a rede virtual à qual está integrado. Por padrão, Rotear Todos está habilitado e todo o tráfego é roteado para sua rede virtual.

Se você preferir rotear apenas o tráfego privado (tráfego RFC1918), siga as etapas neste artigo do Serviço de Aplicativo.

Sub-redes

A integração de rede virtual depende de uma sub-rede dedicada. Quando você provisiona uma sub-rede, a sub-rede do Azure perde cinco IPs desde o início. Para os planos Elástico Premium e Serviço de Aplicativo, é usado um endereço da sub-rede de integração para cada instância do plano. Quando você dimensiona seu aplicativo para quatro instâncias, são usados quatro endereços. Para o Consumo Flex, isso não se aplica e as instâncias compartilham os endereços IP.

Nos planos Elastic Premium e Dedicado (Serviço de Aplicativo), o espaço de endereço necessário é duplicado por um curto período quando você aumenta ou diminui o tamanho da instância. Isso afeta as instâncias reais disponíveis, com suporte, para um determinado tamanho de sub-rede. A tabela a seguir mostra os endereços máximos disponíveis por bloco CIDR e o efeito que isso tem na escala horizontal:

Tamanho do bloco CIDR Máximo de endereços disponíveis: Escala horizontal máxima (instâncias)*
/ 28 11 5
/ 27 27 13
/ 26 59 29

*Pressupõe que você precisa aumentar ou reduzir verticalmente em qualquer tamanho ou SKU em algum momento.

Como o tamanho da sub-rede não pode ser alterado após a atribuição, use uma sub-rede que seja grande o suficiente para acomodar qualquer escala que seu aplicativo possa alcançar. Para evitar problemas com a capacidade da sub-rede para os planos Functions Elástico Premium, você deve usar um /24 com 256 endereços para Windows e um /26 com 64 endereços para Linux. Ao criar sub-redes no portal do Azure como parte da integração com a rede virtual, é necessário um tamanho mínimo de /24 e /26 para Windows e Linux, respectivamente.

O plano Consumo Flex permite que diversos aplicativos em execução sejam integrados à mesma sub-rede. Esse não é o caso dos planos de hospedagem Elastic Premium e Dedicado (Serviço de Aplicativo). Esses planos só permitem que duas redes virtuais sejam conectadas a cada plano do Serviço de Aplicativo. Diversos aplicativos de um único plano do Serviço de Aplicativo podem ingressar na mesma sub-rede, mas aplicativos de planos diferentes não podem usar essa mesma sub-rede.

A funcionalidade tem suporte total para aplicativos Windows e Linux, incluindo contêineres personalizados. Todos os comportamentos agem da mesma entre aplicativos do Windows e aplicativos do Linux.

Grupos de segurança de rede

É possível usar grupos de segurança de rede para controlar o tráfego entre recursos na rede virtual. Por exemplo, você pode criar uma regra de segurança que bloqueie o tráfego de saída do aplicativo para que ele não chegue a um recurso na rede virtual ou saia da rede. Essas regras de segurança se aplicam a aplicativos com a integração de rede virtual configurada. Para bloquear o tráfego para endereços públicos, habilite a integração de rede virtual e a opção Rotear tudo. As regras de entrada em um NSG não se aplicam ao seu aplicativo porque a integração de rede virtual afeta apenas o tráfego de saída de seu aplicativo.

Para controlar o tráfego de entrada para seu aplicativo, use a funcionalidade de Restrições de acesso. Um NSG aplicado à sua sub-rede de integração estará em vigor independentemente de quaisquer rotas aplicadas à sua sub-rede de integração. Se o aplicativo de funções for integrado à rede virtual com a opção Rotear tudo habilitada e você não tiver rotas que afetem o tráfego de endereços públicos na sub-rede de integração, todo o tráfego de saída ainda estará sujeito aos NSGs atribuídos à sub-rede de integração. Quando a rota All não está habilitada, os NSGs são aplicados somente ao tráfego RFC1918.

Rotas

Você pode usar tabelas de rotas para rotear o tráfego de saída do seu aplicativo para onde quiser. Por padrão, as tabelas de rotas afetam apenas o tráfego de destino RFC1918. Quando a opção Rotear tudo estiver habilitada, todas as chamadas de saída serão afetadas. Quando Route All está desabilitada, somente o tráfego privado (RFC1918) é afetado pelas tabelas de rotas. As rotas definidas em sua sub-rede de integração não afetarão as respostas a solicitações de aplicativo de entrada. Os destinos comuns podem incluir dispositivos de firewall ou gateways.

Se você quiser rotear todo o tráfego de saída local, poderá usar uma tabela de rotas para enviar todo o tráfego de saída para o gateway de ExpressRoute. Se você rotear o tráfego para um gateway, certifique-se de definir rotas na rede externa para enviar respostas.

As rotas de BGP (Border Gateway Protocol) também afetam o tráfego do aplicativo. Se você tiver rotas de BGP de, por exemplo, um gateway de ExpressRoute, o tráfego de saída do aplicativo será afetado. Por padrão, as rotas de BGP afetam apenas o tráfego de destino RFC1918. Quando seu aplicativo de função é integrado à rede virtual com a opção Rotear Todos habilitada, todo o tráfego de saída pode ser afetado por suas rotas BGP.

Restrições de IP de saída

As restrições de IP de saída estão disponíveis em um plano Consumo Flex, plano Elástico Premium, plano do Serviço de Aplicativo ou Ambiente do Serviço de Aplicativo. Você pode configurar as restrições de saída para a rede virtual em que seu Ambiente do Serviço de Aplicativo está implantado.

Quando você integra um aplicativo de função em um plano Elástico Premium ou em um plano do Serviço de Aplicativo com uma rede virtual, o aplicativo ainda pode fazer chamadas de saída para a Internet por padrão. Integrando seu aplicativo de funções a uma rede virtual com a opção Rotear Todos habilitada, você força todo o tráfego de saída a ser enviado para sua rede virtual, onde as regras do grupo de segurança de rede podem ser usadas para restringir o tráfego. Para o Consumo Flex, todo o tráfego já é roteado pela rede virtual e a opção Rotear tudo não é necessária.

Para saber como controlar o IP de saída usando uma rede virtual, consulte Tutorial: Controlar o IP de saída do Azure Functions com um gateway da NAT da rede virtual do Azure.

Zonas privadas do DNS do Azure

Depois que seu aplicativo se integra à sua rede virtual, ele usa o mesmo servidor DNS com o qual sua rede virtual está configurada e funcionará com as zonas privadas DNS do Azure vinculadas à rede virtual.

Automação

As APIs a seguir permitem gerenciar programaticamente integrações de rede virtual regional:

Conexões Híbridas

Conexões Híbridas é um recurso da Retransmissão do Azure que você pode usar para acessar recursos do aplicativo em outras redes. Ele fornece acesso de seu aplicativo para um ponto de extremidade do aplicativo. Não é possível usá-lo para acessar seu aplicativo. O recurso Conexões Híbridas está disponível para funções executadas no Windows em todos os planos, exceto no plano de Consumo.

Conforme usado no Azure Functions, cada conexão híbrida se correlaciona com uma única combinação de host e de porta TCP. Isso significa que o ponto de extremidade de conexões híbridas pode estar em qualquer sistema operacional e em qualquer aplicativo, desde que você esteja acessando uma porta de escuta TCP. O recurso Conexões Híbridas não sabe e nem se importa com o protocolo de aplicativo ou o que você está acessando. Ele apenas fornece acesso à rede.

Para saber mais, confira a Documentação do Serviço de Aplicativo para Conexões Híbridas. Essas mesmas etapas de configuração dão suporte ao Azure Functions.

Importante

As Conexões Híbridas só são aceitas quando o aplicativo de funções é executado no Windows. Aplicativos Linux não são aceitos.

Como conectar-se aos serviços do Azure usando uma rede virtual

A integração de rede virtual permite que o aplicativo de funções acesse recursos em uma rede virtual. Esta seção apresenta uma visão geral das considerações ao tentar conectar o aplicativo a determinados serviços.

Restringir a sua conta de armazenamento a uma rede virtual

Observação

Para implantar rapidamente um aplicativo de funções com pontos de extremidade privados habilitados na conta de armazenamento, consulte o seguinte modelo: Aplicativo de funções com pontos de extremidade privados do Armazenamento do Microsoft Azure.

Quando você cria um aplicativo de funções, é necessário criar ou vincular uma conta de Armazenamento do Azure de uso geral que dá ao armazenamento de Tabelas, Blobs e Filas. Você pode substituir essa conta de armazenamento por uma que seja protegida por pontos de extremidade de serviço ou pontos de extremidade privados.

Você pode usar uma conta de armazenamento com restrição de rede com aplicativos de funções nos planos Consumo Flex, Elastic Premium e Dedicado (Serviço de Aplicativo). O plano Consumo não é compatível. Para os planos Elastic Premium e Dedicado, você precisa verificar se o roteamento de compartilhamento de conteúdo privado está configurado. Para saber como configurar o aplicativo de funções com uma conta de armazenamento protegida com uma rede virtual, confira Restringir a conta de armazenamento a uma rede virtual.

Usar referências de Key Vault

Você pode usar referências do Azure Key Vault para usar segredos do Azure Key Vault no seu aplicativo Azure Functions sem exigir alterações de código. O Azure Key Vault é um serviço que fornece gerenciamento centralizado de segredos, com controle total sobre políticas de acesso e histórico de auditoria.

Se a integração de rede virtual estiver configurada para o aplicativo, as referências do Key Vault poderão ser usadas para retirar segredos de um cofre restrito à rede.

Gatilhos de rede virtual (não HTTP)

A carga de trabalho pode exigir que o aplicativo seja disparado por meio de uma fonte de eventos protegida por uma rede virtual. Há duas opções para dimensionar o aplicativo dinamicamente com base no número de eventos recebidos de fontes de gatilho não HTTP:

  • Execute o aplicativo de funções em um plano Consumo Flex.
  • Execute seu aplicativo de funções em um plano Elastic Premium e habilite o suporte ao gatilho de rede virtual.

Os aplicativos de funções executados nos planos Dedicado (Serviço de Aplicativo) não são dimensionados dinamicamente com base em eventos. Em vez disso, o dimensionamento horizontal é determinado pelas regras de dimensionamento automático definidas por você.

Plano Elástico Premium com gatilhos de rede virtual

O plano Elastic Premium permite que você crie funções que são disparadas por serviços protegidos por uma rede virtual. Esses gatilhos não HTTP são conhecidos como gatilhos de rede virtual.

Por padrão, os gatilhos de rede virtual não fazem com que o aplicativo de funções seja dimensionado além da contagem de instâncias pré-ativadas. No entanto, determinadas extensões dão suporte a gatilhos de rede virtual que fazem com que seu aplicativo de funções seja dimensionado dinamicamente. Você pode habilitar esse monitoramento de dimensionamento dinâmico em seu aplicativo de funções para extensões com suporte de uma destas maneiras:

  1. No portal do Azure, navegue até o aplicativo de funções.

  2. Em Configurações, selecione Configuração e, na guia Configurações de runtime da função, defina o Monitoramento de Dimensionamento de Runtime como Ativado.

  3. Selecione Salvar para atualizar a configuração do aplicativo de funções e reinicie o aplicativo.

VNETToggle

Dica

Habilitar o monitoramento de gatilhos de rede virtual pode ter um impacto no desempenho do aplicativo, embora esse impacto provavelmente seja muito pequeno.

O suporte para monitoramento de dimensionamento dinâmico de gatilhos de rede virtual não está disponível na versão 1.x do runtime do Functions.

As extensões nesta tabela dão suporte ao monitoramento de dimensionamento dinâmico de gatilhos de rede virtual. Para obter o melhor desempenho do dimensionamento, você deverá atualizar para versões que também dão suporte ao dimensionamento baseado em destino.

Extensão (versão mínima) Somente monitoramento de dimensionamento de runtime Com dimensionamento baseado em destino
Microsoft.Azure.WebJobs.Extensions.CosmosDB > 3.0.5 > 4.1.0
Microsoft.Azure.WebJobs.Extensions.DurableTask > 2.0.0 N/D
Microsoft.Azure.WebJobs.Extensions.EventHubs > 4.1.0 > 5.2.0
Microsoft.Azure.WebJobs.Extensions.ServiceBus > 3.2.0 > 5.9.0
Microsoft.Azure.WebJobs.Extensions.Storage > 3.0.10 > 5.1.0*

* Somente armazenamento de filas.

Importante

Quando você habilita o monitoramento de gatilho de rede virtual, apenas os gatilhos dessas extensões podem fazer com que seu aplicativo seja dimensionado dinamicamente. Você ainda pode usar os gatilhos de extensões que não estão nesta tabela, mas eles não causarão dimensionamento além da contagem de instâncias previamente inicializadas. Para obter uma lista completa de todas as extensões de gatilho e associação, confira Gatilhos e associações.

Plano do Serviço de Aplicativo e Ambiente do Serviço de Aplicativo com gatilhos de rede virtual

Quando o aplicativo de funções é executado em um plano do Serviço de Aplicativo ou em um ambiente do Serviço de Aplicativo, é possível escrever funções que são disparadas por recursos protegidos por uma rede virtual. Para que as funções sejam disparadas corretamente, o aplicativo deve estar conectado a uma rede virtual com acesso ao recurso definido na conexão do gatilho.

Por exemplo, suponha que você deseja configurar o Azure Cosmos DB para aceitar o tráfego somente de uma rede virtual. Nesse caso, você deve implantar seu aplicativo de funções em um plano do Serviço de Aplicativo que fornece integração de rede virtual com essa rede virtual. A integração permite que uma função seja disparada por esse recurso do Azure Cosmos DB.

Considerações sobre os testes

Ao testar funções em um aplicativo de funções com pontos de extremidade privados, você deve fazer seus testes dentro da mesma rede virtual, como em uma máquina virtual (VM) nessa rede. Para usar a opção Código + Teste no portal daquela VM, você precisa adicionar as seguintes origens de CORS ao seu aplicativo de funções:

  • https://functions-next.azure.com
  • https://functions-staging.azure.com
  • https://functions.azure.com
  • https://portal.azure.com

Se você restringiu o acesso ao seu aplicativo de funções com pontos de extremidade privados ou qualquer outra restrição de acesso, também deve adicionar a marca de serviço AzureCloud à lista de permissões. Para atualizar a lista de permissões:

  1. Navegue até seu aplicativo de funções e selecione Configurações>Rede e selecione configuração de acesso de entrada>Acesso à rede pública.

  2. Verifique se Acesso à rede pública está definido como Habilitado em redes virtuais selecionadas e endereços IP.

  3. Adicionar uma regra em regras e acesso ao site:

    1. Selecione Service Tag como as configurações de origem Tipo e AzureCloud como Marca de Serviço.

    2. Verifique se a ação está Permitire defina o nome e a prioridade desejados.

Solução de problemas

Embora o recurso seja fácil de configurar, isso não significa que sua experiência estará livre de problemas. Se tiver problemas para acessar o ponto de extremidade desejado, existem alguns utilitários que você pode usar para testar a conectividade do console do aplicativo. Há dois consoles que você pode usar. Um deles é o console do Kudu e o outro é o console no portal do Azure. Para acessar o console do Kudu do aplicativo, vá para Ferramentas>Kudu. Você também pode acessar o console do Kudo em [sitename].scm.azurewebsites.net. Depois que o site for carregado, vá para a guia Console de depuração. Para acessar o console do portal do Azure hospedado do seu aplicativo, vá para o > Consolede ferramentas.

Ferramentas

Em aplicativos nativos do Windows, as ferramentas ping, nslookup e tracert não funcionam por meio do console devido a restrições de segurança (funcionam em contêineres personalizados do Windows). Para compensar essa ausência, duas ferramentas separadas foram adicionadas. Para testar a funcionalidade do DNS, adicionamos uma ferramenta chamada nameresolver.exe. A sintaxe do é:

nameresolver.exe hostname [optional: DNS Server]

Você pode usar a nameresolver para verificar os nomes de host de que seu aplicativo depende. Desta forma, você pode testar se há algo configurado incorretamente com o seu DNS ou talvez não tenha acesso ao seu servidor DNS. Você pode ver o servidor DNS que seu aplicativo usa no console, observando as variáveis de ambiente WEBSITE_DNS_SERVER e WEBSITE_DNS_ALT_SERVER.

Observação

A ferramenta nameresolver.exe atualmente não funciona em contêineres personalizados do Windows.

Você pode usar a próxima ferramenta para testar a conectividade TCP para uma combinação de host e porta. Essa ferramenta é chamada tcpping e a sintaxe é:

tcpping.exe hostname [optional: port]

O utilitário tcpping informa se você pode acessar um host específico e uma porta. Ele pode mostrar sucesso apenas se houver um aplicativo escutando na combinação de host e porta, e houver acesso à rede de seu aplicativo para o host e porta especificados.

Depurar o acesso a recursos hospedados na rede virtual

Há várias coisas que podem impedir que seu aplicativo alcance um host e uma porta específicos. Na maioria das vezes, é uma destas coisas:

  • Há um firewall no caminho. Se você tiver um firewall no caminho, atingiu o tempo limite do TCP. O tempo limite de TCP é 21 segundos neste caso. Use a ferramenta tcpping para testar a conectividade. Os tempos limite de TCP podem ser causados por muitas coisas além dos firewalls, mas comece por aí.
  • O DNS não está acessível. O tempo limite do DNS é de 3 segundos por servidor DNS. Se você tiver dois servidores DNS, o tempo limite será de seis segundos. Use nameresolver para ver se o DNS está funcionando. Você não pode usar o nslookup, porque ele não usa o DNS com o qual sua rede virtual está configurada. Se estiver inacessível, você pode ter um firewall ou NSG bloqueando o acesso ao DNS ou pode estar inoperante.

Se esses itens não resolverem seu problema, procure por coisas simples primeiro, como:

Integração de rede virtual regional

  • Seu destino é um endereço não RFC1918 e você não tem Rotear Todos habilitado?
  • Há um NSG bloqueando a saída de sua sub-rede de integração?
  • Se você estiver entrando no Azure ExpressRoute ou em uma VPN, seu gateway local será configurado para rotear o tráfego de volta para o Azure? Se você puder acessar pontos de extremidade em sua rede virtual, mas não no local, verifique suas rotas.
  • Você tem permissões suficientes para definir a delegação na sub-rede de integração? Durante a configuração de integração da rede virtual regional, sua sub-rede de integração é delegada para Microsoft.Web/serverFarms. A interface do usuário de integração da VNet delega a sub-rede para Microsoft. Web/serverFarms automaticamente. Se sua conta não tiver permissões de rede suficientes para definir a delegação, você precisará de alguém que possa definir atributos em sua sub-rede de integração para delegar a sub-rede. Para delegar manualmente a sub-rede de integração, vá para a interface do usuário da sub-rede da rede virtual do Azure e defina a delegação para Microsoft. Web/serverFarms.

Integração de rede virtual exigida por gateway

  • O intervalo de endereços ponto a site está nos intervalos RFC 1918 (10.0.0.0-10.255.255.255 / 172.16.0.0-172.31.255.255 / 192.168.0.0-192.168.255.255)?
  • O gateway aparece como em execução no portal? Se o gateway estiver inativo, ative-o.
  • Os certificados estão sincronizados ou você suspeita que a configuração da rede foi alterada? Se os certificados estiverem fora de sincronia ou se você suspeitar que uma alteração foi feita em sua configuração de rede virtual que não foi sincronizada com seus ASPs, selecione Sincronizar rede.
  • Se você estiver entrando no Azure ExpressRoute ou em uma VPN, seu gateway local será configurado para rotear o tráfego de volta para o Azure? Se você puder acessar pontos de extremidade em sua rede virtual, mas não no local, verifique suas rotas.
  • Você está tentando usar um gateway de coexistência que dá suporte a ponto a site e ExpressRoute? Não há suporte para gateways de coexistência com integração de rede virtual.

A depuração de problemas de rede é um desafio porque você não pode ver o que está bloqueando o acesso a uma combinação de hosts:porta específica. Esses motivos incluem:

  • você tem um firewall no seu host que impede o acesso à porta do aplicativo usando o intervalo de IP ponto a site. o cruzamento de sub-redes geralmente exige acesso Público.
  • o host de destino está inoperante.
  • seu aplicativo está inoperante.
  • você tinha o IP ou nome de host incorreto.
  • seu aplicativo está escutando em uma porta diferente da que você esperava. Você pode corresponder a sua ID de processo com a porta de escuta usando "netstat -aon" no host do ponto de extremidade.
  • Os grupos de segurança de rede estão configurados de modo a impedir o acesso ao host do aplicativo e à porta do intervalo de IP ponto a site.

Você não sabe qual endereço seu aplicativo realmente usa. Pode ser qualquer endereço na sub-rede de integração ou intervalo de endereços de ponto a site, portanto, você precisa permitir o acesso de todo o intervalo de endereços.

Mais etapas de depuração incluem:

  • Conecte-se a uma VM na sua VNet e tente acessar o host:porta do recurso de lá. Para testar o acesso TCP, use o comando do PowerShell Test-NetConnection. A sintaxe do é:
Test-NetConnection hostname [optional: -Port]
  • Abra um aplicativo em uma VM e teste o acesso a esse host e porta a partir do console do seu aplicativo usando tcpping.

Recursos locais

Se o aplicativo não puder acessar um recurso local, verifique se é possível acessar o recurso da sua VNet. Use o comando do PowerShell Test-NetConnection para verificar se há acesso TCP. Se sua VM não conseguir acessar seu recurso local, sua conexão VPN ou ExpressRoute pode não estar configurada corretamente.

Se sua VM hospedada em rede virtual pode alcançar seu sistema local, mas seu aplicativo não, a causa é provavelmente um dos seguintes motivos:

  • As rotas não estão configuradas com sua sub-rede ou intervalos de endereços ponto a site em seu gateway local.
  • Os grupos de segurança de rede estão bloqueando o acesso ao seu intervalo de IP ponto a site.
  • Os firewalls locais estão bloqueando o tráfego de seu intervalo de IP ponto a site.
  • Você está tentando acessar um endereço não RFC 1918 usando o recurso de integração de rede virtual regional.

Como excluir o plano do Serviço de Aplicativo ou o aplicativo Web antes de desconectar a integração VNet

Se você excluiu o aplicativo Web ou o plano do Serviço de Aplicativo antes de desconectar a integração VNet, não poderá fazer operações de atualização/exclusão na rede virtual ou na sub-rede usada para a integração com o recurso excluído. Uma delegação de sub-rede "Microsoft.Web/serverFarms" permanecerá atribuída à sua sub-rede e impedirá as operações de atualização/exclusão.

Para atualizar/excluir a sub-rede ou a rede virtual novamente, você precisa criar novamente a integração VNet e desconectá-la:

  1. Crie o plano do Serviço de Aplicativo e o aplicativo Web (é obrigatório usar exatamente o mesmo nome do aplicativo Web anterior).
  2. Navegue até a folha "Rede" no aplicativo Web e configure a integração VNet.
  3. Depois que a integração VNet estiver configurada, escolha o botão "Desconectar".
  4. Exclua o plano do Serviço de Aplicativo ou o aplicativo Web.
  5. Atualize ou exclua a sub-rede ou a rede virtual.

Se você ainda encontrar problemas com a integração VNet depois de seguir as etapas acima, entre em contato com Suporte da Microsoft.

Solução de problemas de rede

Você também pode usar a solução de problemas de rede para resolver problemas de conexão. Para abrir a solução de problemas de rede, acesse o aplicativo no portal do Azure. Selecione Diagnóstico e solução de problemas e pesquise Solução de problemas de rede.

Problemas de conexão – Verifica o status da integração de rede virtual, incluindo verificar se o IP privado foi atribuído a todas as instâncias do plano e às configurações do DNS. Se um DNS personalizado não estiver configurado, o DNS padrão do Azure será aplicado. A solução de problemas também verificar se há dependências comuns do aplicativo de funções, incluindo conectividade para o Armazenamento do Microsoft Azure e outras dependências de associação.

Captura de tela que mostra a solução de problemas para problemas de conexão.

Problemas de configuração – Essa solução de problemas verifica se sua sub-rede é válida para a integração de rede virtual.

Captura de tela que mostra a execução da solução de problemas para problemas de configuração.

Problema de exclusão de sub-rede/VNet – Essa solução de problemas verifica se sua sub-rede tem bloqueios e se tem Links de Associação de Serviço não utilizados que podem estar bloqueando a exclusão da VNet/sub-rede.

Próximas etapas

Para saber mais sobre rede e o Azure Functions: