Opções de rede das Funções do Azure
Este artigo descreve os recursos de rede disponíveis nas opções de hospedagem do Azure Functions. As seguintes opções de rede podem ser categorizadas como recursos de rede de entrada e saída. Os recursos de entrada permitem que você restrinja o acesso ao seu aplicativo, enquanto os recursos de saída permitem que você conecte seu aplicativo a recursos protegidos por uma rede virtual e controle 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 você a atender aos requisitos de isolamento 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 | ✔ | ✔2º | ✔3 | ✔ | |
Restrições de IP de saída | ✔ | ✔ | ✔ | ✔ |
- Para obter mais informações, consulte Rede no ambiente de Aplicativos de Contêiner do Azure.
- Há considerações especiais ao trabalhar com gatilhos de rede virtual.
- Apenas o plano Dedicado/ASE suporta a integração de rede virtual necessária pelo gateway.
Recursos de início rápido
Use os recursos a seguir para começar rapidamente a usar cenários de rede do Azure Functions. Esses recursos são referenciados ao longo do artigo.
- Modelos ARM, arquivos Bicep e modelos Terraform:
- Apenas modelos ARM:
- Aplicativo de função com pontos de extremidade privados do Armazenamento do Azure.
- Aplicativo de função do Azure com Integração de Rede Virtual.
- Tutoriais:
Recursos de rede de entrada
Os recursos a seguir permitem filtrar solicitações de entrada para seu aplicativo de função.
Restrições de acesso de entrada
Você pode usar restrições de acesso para definir uma lista ordenada por prioridade de endereços IP que têm acesso permitido ou negado ao seu aplicativo. A lista pode incluir endereços IPv4 e IPv6 ou sub-redes de rede virtual específicas usando pontos de extremidade de serviço. Quando existem uma ou mais entradas, existe uma indicação “negar tudo” implícita no final da lista. As restrições de IP funcionam com todas as opções de hospedagem de funções.
As restrições de acesso estão disponíveis no plano Flex Consumption, Elastic Premium, Consumo e Serviço de aplicativo.
Nota
Com restrições de rede em vigor, você pode implantar somente de dentro de sua rede virtual ou quando tiver colocado o endereço IP da máquina que está usando para acessar o portal do Azure na lista Destinatários seguros. No entanto, você ainda pode gerenciar a função usando o portal.
Para saber mais, consulte Restrições de acesso estático do Serviço de Aplicativo do Azure.
Pontos finais privados
O Ponto Final Privado do Azure é uma interface de rede que o liga em privado e com segurança a um serviço com a tecnologia do Azure Private Link. O Ponto Final Privado utiliza um endereço IP privado a partir da rede virtual, o que leva de forma eficaz o serviço até à sua rede virtual.
Você pode usar o Private Endpoint para suas funções hospedadas nos planos Flex Consumption, Elastic Premium e Dedicated (App Service).
Se você quiser fazer chamadas para pontos de extremidade privados, então você deve certificar-se de que suas pesquisas de DNS resolvem para o ponto de extremidade privado. Você pode impor esse comportamento de uma das seguintes maneiras:
- Integre com zonas privadas de DNS do Azure. Quando sua rede virtual não tem um servidor DNS personalizado, isso é feito automaticamente.
- Gerencie o ponto de extremidade privado no servidor DNS usado pelo seu aplicativo. Para gerenciar um ponto de extremidade privado, você deve saber o endereço do ponto de extremidade e usar um registro A para fazer referência ao ponto de extremidade que está tentando alcançar.
- Configure seu próprio servidor DNS para encaminhar para zonas privadas do DNS do Azure.
Para saber mais, consulte Usando pontos de extremidade privados para aplicativos Web.
Para chamar outros serviços que tenham uma conexão de ponto de extremidade privada, como armazenamento ou barramento de serviço, certifique-se de configurar seu 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 para seu aplicativo de função, visite restringir sua conta de armazenamento a uma rede virtual.
Pontos finais de serviço
Usando pontos de extremidade de serviço, você pode restringir muitos serviços do Azure a sub-redes de rede virtual selecionadas para fornecer um nível mais alto de segurança. A integração de rede virtual regional permite que seu aplicativo de função alcance os serviços do Azure que são protegidos com pontos de extremidade de serviço. Esta configuração é suportada em todos os planos que suportam a integração de rede virtual. Siga estas etapas para acessar um ponto de extremidade de serviço seguro:
- Configure a integração de rede virtual regional com seu aplicativo de função para se conectar a uma sub-rede específica.
- Vá para o serviço de destino e configure os pontos de extremidade de serviço na sub-rede de integração.
Para saber mais, consulte 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. Em seguida, você pode selecionar a assinatura, a rede virtual e a sub-rede à qual deseja permitir ou negar acesso.
Se os pontos de extremidade de serviço ainda não estiverem habilitados para Microsoft.Web
a sub-rede selecionada, eles serão habilitados automaticamente, a menos que você marque a caixa de seleção Ignorar 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 se você tem as permissões para habilitá-los na sub-rede.
Se você precisar de outra pessoa para habilitar pontos de extremidade de serviço na sub-rede, marque a caixa de seleção Ignorar pontos de extremidade de serviço Microsoft.Web ausentes . Seu aplicativo está configurado para pontos de extremidade de serviço, que você habilita posteriormente na sub-rede.
Não é possível usar pontos de extremidade de serviço para restringir o acesso a aplicativos executados em um Ambiente do Serviço de Aplicativo. Quando seu aplicativo está em um Ambiente do Serviço de Aplicativo, você pode controlar o acesso a ele aplicando regras de acesso IP.
Para saber como configurar pontos de extremidade de serviço, consulte Estabelecer acesso ao site privado do Azure Functions.
Recursos de rede de saída
Você pode usar os recursos desta seção para gerenciar conexões de saída feitas pelo seu aplicativo.
Integração da rede virtual
Esta seção detalha os recursos suportados pelo Functions para controlar a saída de dados do seu aplicativo.
A integração de rede virtual dá ao seu aplicativo de função acesso a recursos em sua rede virtual. Uma vez integrado, seu aplicativo roteia o tráfego de saída através da rede virtual. Isso permite que seu aplicativo acesse pontos de extremidade ou recursos privados com regras que permitem o tráfego de apenas 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 seu aplicativo, a menos que você tenha configurado um Gateway NAT.
O Azure Functions suporta dois tipos de integração de rede virtual:
- Integração de rede virtual regional para aplicativos executados nos planos de hospedagem Flex Consumption, Elastic Premium, Dedicated (App Service) e Container Apps (recomendado)
- Integração de rede virtual necessária pelo gateway para aplicativos executados no plano de hospedagem Dedicado (Serviço de Aplicativo)
Para saber como configurar a integração de rede virtual, consulte Habilitar integração de rede virtual.
Integração regional de redes virtuais
O uso da integração de rede virtual regional permite que seu aplicativo acesse:
- Recursos na mesma rede virtual que seu aplicativo.
- Recursos em redes virtuais emparelhados com a rede virtual à qual seu aplicativo está integrado.
- Serviços seguros de ponto de extremidade de serviço.
- Recursos em conexões do Azure ExpressRoute.
- Recursos entre conexões emparelhadas, que incluem conexões do Azure ExpressRoute.
- Pontos finais privados
Ao usar a integração de rede virtual regional, você pode usar os seguintes recursos de rede do Azure:
- Grupos de segurança de rede (NSGs): você pode bloquear o tráfego de saída com um NSG 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.
- Tabelas de rotas (UDRs): Você pode colocar uma tabela de rotas na sub-rede de integração para enviar o tráfego de saída para onde quiser.
Nota
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ção 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 lugar.
A integração de rede virtual regional não pode usar a porta 25.
Considerações para o plano Flex Consumption :
- Certifique-se de que o provedor de recursos do Azure esteja habilitado
Microsoft.App
para sua assinatura seguindo estas instruções. Isso é necessário para a delegação de sub-redes. - A delegação de sub-rede necessária ao ser executada em um plano Flex Consumption é
Microsoft.App/environments
. Isso difere dos planos Elastic Premium e Dedicated (App Service), que têm um requisito de delegação diferente. - Você pode planejar o uso máximo de 40 endereços IP para um aplicativo de função, mesmo que o aplicativo seja dimensionado além de 40. Por exemplo, se você tiver 15 aplicativos da função Flex Consumption integrados na mesma sub-rede, deverá planejar 15x40 = 600 endereços IP usados no máximo. Este limite está sujeito a alterações e não é aplicado.
- A sub-rede ainda não pode estar em uso para outros fins (como pontos de extremidade privados ou de serviço, ou delegados a qualquer outro plano ou serviço de hospedagem). Embora você possa compartilhar a mesma sub-rede com vários aplicativos Flex Consumption, os recursos de rede são compartilhados entre esses aplicativos de função, o que pode levar a que um aplicativo afete o desempenho de 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 App Service Premium V2 e Premium V3. Ele também está disponível no Padrão, mas apenas em implantações mais recentes do Serviço de Aplicativo. Se você estiver em uma implantação mais antiga, só poderá usar o recurso de um plano do Serviço de Aplicativo Premium V2. Se você quiser ter certeza de que pode usar o recurso em um plano do Serviço de Aplicativo Padrão, crie seu aplicativo em um plano do Serviço de Aplicativo Premium V3. Esses planos só são suportados em nossas implantações mais recentes. Você pode reduzir se desejar depois disso.
- O recurso não pode ser usado por aplicativos de plano isolados que estão em um Ambiente do Serviço de Aplicativo.
- A aplicação e a rede virtual têm de estar na mesma região.
- O recurso requer uma sub-rede não utilizada que seja /28 ou maior 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 regionais de rede virtual 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.
- Não é possível excluir uma rede virtual com um aplicativo integrado. Remova a integração antes de excluir a rede virtual.
- Não é possível alterar a assinatura de um aplicativo ou plano enquanto houver um aplicativo que esteja usando a integração de rede virtual regional.
Habilite a integração de rede virtual
No seu aplicativo de função no portal do Azure, selecione Rede e, em Integração VNet, selecione Clique aqui para configurar.
Selecione Adicionar rede virtual.
A lista suspensa contém todas as redes virtuais do Azure Resource Manager em sua assinatura na mesma região. Selecione a rede virtual com a qual deseja integrar.
Os planos de hospedagem Flex Consumption e Elastic Premium suportam apenas a integração de rede virtual regional. Se a rede virtual estiver na mesma região, crie uma nova sub-rede ou selecione uma sub-rede vazia e preexistente.
Para selecionar uma rede virtual em outra região, você deve ter um gateway de rede virtual provisionado com ponto a site habilitado. A integração de rede virtual entre regiões só é suportada para planos dedicados, mas os pares globais funcionam com integração de rede virtual regional.
Durante a integração, seu aplicativo é reiniciado. Quando a integração estiver concluída, você verá detalhes na rede virtual com a qual está integrado. Por padrão, o Route All está habilitado e todo o tráfego é roteado para sua rede virtual.
Se preferir que apenas o seu tráfego privado (RFC1918 tráfego privado) seja encaminhado, siga os passos neste artigo do Serviço de Aplicação.
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 Elastic Premium e App Service, um endereço é usado da sub-rede de integração para cada instância do plano. Quando você dimensiona seu aplicativo para quatro instâncias, quatro endereços são usados. Para o Flex Consumption, isso não se aplica e as instâncias compartilham endereços IP.
Nos planos Elastic Premium e Dedicated (Serviço de Aplicativo), o espaço de endereçamento necessário é dobrado por um curto período de tempo quando você aumenta ou diminui o tamanho da instância. Isso afeta as instâncias reais com suporte disponíveis 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ê precise aumentar ou diminuir a escala 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 grande o suficiente para acomodar qualquer escala que seu aplicativo possa alcançar. Para evitar problemas com a capacidade de sub-rede para os planos Functions Elastic 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 Flex Consumption permite que vários aplicativos executados no plano Flex Consumption se integrem à mesma sub-rede. Este não é o caso dos planos de hospedagem Elastic Premium e Dedicated (App Service). Esses planos permitem que apenas duas redes virtuais sejam conectadas a cada plano do Serviço de Aplicativo. Vários aplicativos de um único plano do Serviço de Aplicativo podem ingressar na mesma sub-rede, mas os aplicativos de um plano diferente não podem usar essa mesma sub-rede.
O recurso é totalmente compatível com aplicativos Windows e Linux, incluindo contêineres personalizados. Todos os comportamentos agem da mesma forma entre aplicativos do Windows e aplicativos do Linux.
Grupos de segurança de rede
Você pode usar grupos de segurança de rede para controlar o tráfego entre recursos em sua rede virtual. Por exemplo, você pode criar uma regra de segurança que impeça o tráfego de saída do seu aplicativo de alcançar um recurso em sua rede virtual ou sair da rede. Essas regras de segurança se aplicam a aplicativos que configuraram a integração de rede virtual. Para bloquear o tráfego para endereços públicos, você deve ter a integração de rede virtual e o Route All habilitado. 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 do seu aplicativo.
Para controlar o tráfego de entrada para seu aplicativo, use o recurso Restrições de acesso. Um NSG aplicado à sua sub-rede de integração está em vigor independentemente de quaisquer rotas aplicadas à sua sub-rede de integração. Se o seu aplicativo de função estiver integrado à rede virtual com o Route All habilitado e você não tiver nenhuma rota que afete o tráfego de endereço público em sua sub-rede de integração, todo o tráfego de saída ainda estará sujeito a NSGs atribuídos à sua sub-rede de integração. Quando o Route All não está habilitado, os NSGs são aplicados apenas 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 RFC1918 de destino. Quando a opção Rotear Tudo está ativada, todas as suas chamadas de saída são afetadas. Quando a opção Rota Tudo está desativada, apenas o tráfego privado (RFC1918) é afetado pelas tabelas de rotas. As rotas definidas na sub-rede de integração não afetarão as respostas às solicitações de entrada do aplicativo. Destinos comuns podem incluir dispositivos de firewall ou gateways.
Se quiser rotear todo o tráfego de saída local, você pode usar uma tabela de rotas para enviar todo o tráfego de saída para o gateway da Rota Expressa. Se você rotear o tráfego para um gateway, certifique-se de definir rotas na rede externa para enviar as respostas de volta.
As rotas BGP (Border Gateway Protocol) também afetam o tráfego do aplicativo. Se você tiver rotas BGP de algo como um gateway de Rota Expressa, o tráfego de saída do aplicativo será afetado. Por padrão, as rotas BGP afetam apenas o tráfego RFC1918 de destino. Quando seu aplicativo de função é rede virtual integrada com o Route All habilitado, 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 Flex Consumption, plano Elastic Premium, plano do Serviço de Aplicativo ou Ambiente do Serviço de Aplicativo. Você pode configurar restrições de saída para a rede virtual onde o Ambiente do Serviço de Aplicativo está implantado.
Quando você integra um aplicativo funcional em um plano Elastic Premium ou 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. Ao integrar seu aplicativo de função com uma rede virtual com o Route All habilitado, 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 Flex Consumption todo o tráfego já é roteado através da rede virtual e o Route All não é necessário.
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 NAT de 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 do DNS do Azure vinculadas à rede virtual.
Automatização
As APIs a seguir permitem gerenciar programaticamente integrações de rede virtual regional:
- CLI do Azure: use os
az functionapp vnet-integration
comandos para adicionar, listar ou remover uma integração de rede virtual regional. - Modelos ARM: a integração de rede virtual regional pode ser habilitada usando um modelo do Azure Resource Manager. Para obter um exemplo completo, consulte este modelo de início rápido do Functions.
Ligações Híbridas
As Conexões Híbridas são um recurso do Azure Relay que você pode usar para acessar recursos de aplicativos em outras redes. Ele fornece acesso do seu aplicativo a um ponto de extremidade do aplicativo. Você não pode usá-lo para acessar seu aplicativo. As Conexões Híbridas estão disponíveis para funções executadas no Windows em todos, exceto no plano de Consumo.
Conforme usado no Azure Functions, cada conexão híbrida se correlaciona a uma única combinação de host e porta TCP. Isso significa que o ponto de extremidade da conexão híbrida pode estar em qualquer sistema operacional e qualquer aplicativo, desde que você esteja acessando uma porta de escuta TCP. O recurso Conexões híbridas não sabe nem se importa com o que é o protocolo do aplicativo ou o que você está acessando. Ele apenas fornece acesso à rede.
Para saber mais, consulte 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 Ligações Híbridas só são suportadas quando a sua aplicação funcional é executada no Windows. Não há suporte para aplicativos Linux.
Ligar aos Serviços do Azure através de uma rede virtual
A integração de rede virtual permite que seu aplicativo de função acesse recursos em uma rede virtual. Esta seção apresenta uma visão geral de coisas que você deve considerar ao tentar conectar seu aplicativo a determinados serviços.
Restringir a conta de armazenamento a uma rede virtual
Nota
Para implantar rapidamente um aplicativo de função com pontos de extremidade privados habilitados na conta de armazenamento, consulte o seguinte modelo: Aplicativo de função com pontos de extremidade privados do Armazenamento do Azure.
Ao criar um aplicativo funcional, você deve criar ou vincular a uma conta de Armazenamento do Azure de uso geral que ofereça suporte ao armazenamento de Blob, Fila e Tabela. Você pode substituir essa conta de armazenamento por uma que esteja protegida com pontos de extremidade de serviço ou pontos de extremidade privados.
Você pode usar uma conta de armazenamento restrito de rede com aplicativos de função nos planos Flex Consumption, Elastic Premium e Dedicated (App Service); o plano de consumo não é suportado. Para os planos Elastic Premium e Dedicado, você precisa garantir que o roteamento de compartilhamento de conteúdo privado esteja configurado. Para saber como configurar seu aplicativo de função com uma conta de armazenamento protegida por uma rede virtual, consulte Restringir sua conta de armazenamento a uma rede virtual.
Utilizar as referências do Key Vault
Você pode usar referências do Azure Key Vault para usar segredos do Azure Key Vault em seu aplicativo do Azure Functions sem exigir nenhuma alteração de código. O Azure Key Vault é um serviço que fornece gestão centralizada de segredos, com controlo 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 Cofre da Chave poderão ser usadas para recuperar segredos de um cofre restrito à rede.
Gatilhos de rede virtual (não HTTP)
Sua carga de trabalho pode exigir que seu aplicativo seja acionado a partir de uma fonte de eventos protegida por uma rede virtual. Há duas opções se você quiser que seu aplicativo seja dimensionado dinamicamente com base no número de eventos recebidos de fontes de gatilho não-HTTP:
- Execute seu aplicativo de função em um Flex Consumption.
- Execute seu aplicativo de função em um plano Elastic Premium e habilite o suporte a gatilhos de rede virtual.
Os aplicativos de função executados nos planos Dedicado (Serviço de Aplicativo) não são dimensionados dinamicamente com base em eventos. Em vez disso, a expansão é ditada por regras de dimensionamento automático definidas por você.
Plano Elastic Premium com gatilhos de rede virtual
O plano Elastic Premium permite criar funções que são acionadas 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 seu aplicativo de função seja dimensionado além da contagem de instâncias pré-aquecidas. No entanto, certas extensões suportam gatilhos de rede virtual que fazem com que seu aplicativo de função seja dimensionado dinamicamente. Você pode habilitar esse monitoramento de escala dinâmica em seu aplicativo de função para extensões suportadas de uma destas maneiras:
No portal do Azure, navegue até seu aplicativo de função.
Em Configurações, selecione Configuração e, na guia Configurações de tempo de execução da função, defina Monitoramento de escala de tempo de execução como Ativado.
Selecione Salvar para atualizar a configuração do aplicativo de função e reinicie o aplicativo.
Gorjeta
Habilitar o monitoramento de gatilhos de rede virtual pode ter um impacto no desempenho do seu aplicativo, embora esse impacto provavelmente seja muito pequeno.
O suporte para monitoramento de escala dinâmica de gatilhos de rede virtual não está disponível na versão 1.x do tempo de execução do Functions.
As extensões nesta tabela suportam o monitoramento de escala dinâmica de gatilhos de rede virtual. Para obter o melhor desempenho de dimensionamento, você deve atualizar para versões que também ofereçam suporte ao dimensionamento baseado em destino.
Extensão (versão mínima) | Somente monitoramento de escala de tempo de execução | Com dimensionamento baseado em destino |
---|---|---|
Microsoft.Azure.WebJobs.Extensões.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* |
* Apenas armazenamento em fila.
Importante
Quando você habilita o monitoramento de gatilhos de rede virtual, somente gatilhos para essas extensões podem fazer com que seu aplicativo seja dimensionado dinamicamente. Você ainda pode usar 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 pré-aquecidas. Para obter uma lista completa de todas as extensões de gatilho e vinculação, consulte Gatilhos e associações.
Plano do Serviço de Aplicativo e Ambiente do Serviço de Aplicativo com gatilhos de rede virtual
Quando seu aplicativo de função é executado em um plano do Serviço de Aplicativo ou em um Ambiente do Serviço de Aplicativo, você pode escrever funções que são acionadas por recursos protegidos por uma rede virtual. Para que suas funções sejam acionadas corretamente, seu aplicativo deve estar conectado a uma rede virtual com acesso ao recurso definido na conexão de gatilho.
Por exemplo, suponha que você queira configurar o Azure Cosmos DB para aceitar tráfego somente de uma rede virtual. Nesse caso, você deve implantar seu aplicativo de função em um plano do Serviço de Aplicativo que forneça integração de rede virtual com essa rede virtual. A integração permite que uma função seja acionada por esse recurso do Azure Cosmos DB.
Considerações sobre testes
Ao testar funções em um aplicativo de função com pontos de extremidade privados, você deve fazer o teste de dentro da mesma rede virtual, como em uma máquina virtual (VM) nessa rede. Para usar a opção Código + Teste no portal dessa VM, você precisa adicionar as seguintes origens CORS ao seu aplicativo de função:
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ção com pontos de extremidade privados ou qualquer outra restrição de acesso, também deve adicionar a tag AzureCloud
de serviço à lista de permissões. Para atualizar a lista de permitidos:
Navegue até o aplicativo de função e selecione Configurações>de rede e, em seguida, selecione Configuração>de acesso de entrada Acesso à rede pública.
Certifique-se de que Acesso à rede pública está definido como Ativado a partir de redes virtuais e endereços IP selecionados.
Adicione uma regra em Acesso ao site e regras:
Selecione
Service Tag
como Tipo de configurações de origem eAzureCloud
como Etiqueta de serviço.Certifique-se de que a ação é Permitir e defina o nome e a prioridade desejados.
Resolução de Problemas
O recurso é fácil de configurar, mas isso não significa que sua experiência será livre de problemas. Se você tiver problemas para acessar o ponto de extremidade desejado, há alguns utilitários que você pode usar para testar a conectividade a partir do console do aplicativo. Há dois consoles que você pode usar. Um é o console Kudu e o outro é o console no portal do Azure. Para aceder à consola Kudu a partir da sua aplicação, aceda a Ferramentas>Kudu. Você também pode acessar o console do Kudo em [sitename].scm.azurewebsites.net. Depois que o site carregar, vá para a guia Console de depuração. Para aceder à consola alojada no portal do Azure a partir da sua aplicação, aceda a Consola de Ferramentas>.
Ferramentas
Em aplicativos nativos do Windows, as ferramentas ping, nslookup e tracert não funcionarão no console devido a restrições de segurança (elas funcionam em contêineres personalizados do Windows). Para preencher o vazio, duas ferramentas separadas são adicionadas. Para testar a funcionalidade do DNS, adicionámos uma ferramenta denominada nameresolver.exe. A sintaxe é:
nameresolver.exe hostname [optional: DNS Server]
Você pode usar nameresolver para verificar os nomes de host dos quais seu aplicativo depende. Desta forma, pode testar se tem algo mal configurado 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 ambientais WEBSITE_DNS_SERVER e WEBSITE_DNS_ALT_SERVER.
Nota
Atualmente, a ferramenta nameresolver.exe não funciona em contêineres personalizados do Windows.
Você pode usar a próxima ferramenta para testar a conectividade TCP com uma combinação de host e porta. Esta ferramenta é chamada tcpping e a sintaxe é:
tcpping.exe hostname [optional: port]
O utilitário tcpping informa se você pode alcançar um host e uma porta específicos. Ele pode mostrar sucesso somente se houver um aplicativo escutando na combinação de host e porta, e houver acesso à rede do seu aplicativo para o host e a porta especificados.
Depurar o acesso a recursos hospedados na rede virtual
Várias coisas podem impedir que seu aplicativo alcance um host e uma porta específicos. Na maioria das vezes é uma destas coisas:
- Um firewall está no caminho. Se você tiver um firewall no caminho, você atinge o tempo limite de TCP. Neste caso, o tempo limite do TCP é de 21 segundos. 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 de DNS é de 3 segundos por servidor DNS. Se você tiver dois servidores DNS, o tempo limite é de 6 segundos. Use nameresolver para ver se o DNS está funcionando. Você não pode usar nslookup, porque isso não usa o DNS com o qual sua rede virtual está configurada. Se inacessível, você pode ter um firewall ou NSG bloqueando o acesso ao DNS ou ele pode estar inativo.
Se esses itens não responderem aos seus problemas, procure primeiro por coisas como:
Integração regional de redes virtuais
- O seu destino é um endereço não RFC1918 e não tem o Route All ativado?
- Existe um NSG bloqueando a saída da sua sub-rede de integração?
- Se você estiver usando o Azure ExpressRoute ou uma VPN, seu gateway local está configurado para rotear o tráfego de volta para o Azure? Se você puder alcançar pontos de extremidade em sua rede virtual, mas não localmente, 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 de rede virtual regional, sua sub-rede de integração é delegada a Microsoft.Web/serverFarms. A interface do usuário de integração 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 necessária pelo 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 estando no portal? Se o seu gateway estiver inativo, então traga-o de volta para cima.
- Os certificados são apresentados como estando sincronizados ou suspeita que a configuração de rede foi alterada? Se os certificados estiverem fora de sincronia ou se suspeitar que foi feita uma alteração na configuração da rede virtual que não foi sincronizada com os ASPs, selecione Sincronizar rede.
- Se você estiver passando por uma VPN, o gateway local está configurado para rotear o tráfego de volta para o Azure? Se você puder alcançar pontos de extremidade em sua rede virtual, mas não localmente, verifique suas rotas.
- Você está tentando usar um gateway de coexistência que suporte ponto a site e Rota Expressa? Os gateways de coexistência não são suportados com a integração de rede virtual.
Depurar problemas de rede é um desafio porque você não pode ver o que está bloqueando o acesso a uma combinação específica host:port. Algumas causas incluem:
- Você tem um firewall instalado no host que impede o acesso à porta do aplicativo a partir do intervalo de IP ponto a site. O cruzamento de sub-redes geralmente requer acesso público.
- Seu host alvo está inativo.
- Seu aplicativo está inativo.
- Você tinha o IP ou nome de host errado.
- Seu aplicativo está escutando em uma porta diferente do que você esperava. Você pode combinar seu ID de processo com a porta de escuta usando "netstat -aon" no host do ponto final.
- Os grupos de segurança de rede são configurados de tal forma que impedem o acesso ao host e à porta do aplicativo a partir 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 ponto-a-site, portanto, você precisa permitir o acesso de todo o intervalo de endereços.
Outros passos de depuração incluem:
- Conecte-se a uma VM em sua rede virtual e tente acessar seu recurso host:port a partir daí. Para testar o acesso TCP, use o comando do PowerShell Test-NetConnection. A sintaxe é:
Test-NetConnection hostname [optional: -Port]
- Abra um aplicativo em uma VM e teste o acesso a esse host e porta do console do seu aplicativo usando tcpping.
Recursos no local
Se a sua aplicação não conseguir aceder a um recurso no local, verifique se consegue aceder ao recurso a partir da sua rede virtual. Use o comando Test-NetConnection PowerShell para verificar o acesso TCP. Se sua VM não puder acessar seu recurso local, sua conexão VPN ou ExpressRoute pode não estar configurada corretamente.
Se sua VM hospedada na rede virtual puder acessar seu sistema local, mas seu aplicativo não puder, a causa provavelmente será um dos seguintes motivos:
- Suas rotas não estão configuradas com sua sub-rede ou intervalos de endereços ponto a site em seu gateway local.
- Seus grupos de segurança de rede estão bloqueando o acesso para seu intervalo de IP ponto a site.
- Seus firewalls locais estão bloqueando o tráfego do seu intervalo de IP ponto a site.
- Você está tentando alcançar um endereço não RFC 1918 usando o recurso de integração de rede virtual regional.
Excluindo o plano do Serviço de Aplicativo ou o aplicativo Web antes de desconectar a integração da rede virtual
Se você excluiu o aplicativo Web ou o plano do Serviço de Aplicativo sem desconectar a integração da rede virtual primeiro, não poderá fazer nenhuma operação de atualização/exclusão na rede virtual ou sub-rede que foi 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 fazer a atualização/exclusão da sub-rede ou rede virtual novamente, você precisa recriar a integração VNet e, em seguida, desconectá-la:
- Recrie o plano do Serviço de Aplicativo e o aplicativo Web (é obrigatório usar exatamente o mesmo nome do aplicativo Web como antes).
- Navegue até a folha 'Rede' no aplicativo Web e configure a integração de rede virtual.
- Depois que a integração da rede virtual estiver configurada, selecione o botão 'Desconectar'.
- Exclua o plano do Serviço de Aplicativo ou o aplicativo Web.
- Atualizar/excluir a sub-rede ou rede virtual.
Se você ainda encontrar problemas com a integração de rede virtual depois de seguir as etapas acima, entre em contato com o Suporte da Microsoft.
Resolução de problemas de rede
Também pode utilizar a Resolução de problemas de Rede para resolver problemas de ligação. Para abrir a resolução de problemas de rede, aceda à aplicação no portal do Azure. Selecione Diagnosticar e resolver problema e, em seguida, procure Resolução de problemas de rede.
Problemas de conexão - Verifica o status da integração de rede virtual, incluindo a verificação se o IP privado foi atribuído a todas as instâncias do plano e as configurações de DNS. Se um DNS personalizado não estiver configurado, o DNS padrão do Azure será aplicado. A solução de problemas também verifica se há dependências comuns do aplicativo Function, incluindo conectividade para o Armazenamento do Azure e outras dependências de vinculação.
Problemas de configuração - Esta resolução de problemas verifica se a sua sub-rede é válida para a Integração de rede virtual.
Problema de exclusão de sub-rede/VNet - Esta solução de problemas verifica se sua sub-rede tem algum bloqueio e se tem algum link de associação de serviço não utilizado que possa estar bloqueando a exclusão da VNet/sub-rede.
Próximos passos
Para saber mais sobre rede e Azure Functions:
- Siga o tutorial sobre como começar a usar a integração de rede virtual
- Leia as perguntas frequentes sobre a rede de funções
- Saiba mais sobre a integração de rede virtual com o Serviço de Aplicativo/Funções
- Saiba mais sobre redes virtuais no Azure
- Habilite mais recursos de rede e controle com os Ambientes do Serviço de Aplicativo
- Conectar-se a recursos locais individuais sem alterações de firewall usando Conexões Híbridas