Partilhar via


Tutorial: Controlar o IP de saída do Azure Functions com um gateway NAT de rede virtual do Azure

A NAT (conversão de endereços de rede virtual) simplifica a conectividade à Internet apenas de saída para redes virtuais. Quando configurada em uma sub-rede, toda a conectividade de saída usa seus endereços IP públicos estáticos especificados. Um NAT pode ser útil para aplicativos que precisam consumir um serviço de terceiros que usa uma lista permitida de endereços IP como medida de segurança. Para saber mais, consulte O que é o Azure NAT Gateway?.

Este tutorial mostra como usar gateways NAT para rotear o tráfego de saída de uma função acionada por HTTP. Esta função permite-lhe verificar o seu próprio endereço IP de saída. Durante este tutorial, você:

  • Criar uma rede virtual
  • Criar um aplicativo de função de plano Premium
  • Crie um endereço IP público
  • Criar um gateway NAT
  • Configurar o aplicativo de função para rotear o tráfego de saída através do gateway NAT

Topologia

O diagrama a seguir mostra a arquitetura da solução que você cria:

Interface do usuário para integração de gateway NAT

As funções em execução no plano Premium têm os mesmos recursos de hospedagem que os aplicativos Web no Serviço de Aplicativo do Azure, que inclui o recurso de Integração de Rede Real. Para saber mais sobre a Integração de VNet, incluindo solução de problemas e configuração avançada, consulte Integrar seu aplicativo a uma rede virtual do Azure.

Pré-requisitos

Para este tutorial, é importante que você entenda o endereçamento IP e a sub-rede. Você pode começar com este artigo que aborda os conceitos básicos de endereçamento e sub-rede. Muitos outros artigos e vídeos estão disponíveis online.

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Se já tiver concluído o tutorial de integração de Funções com uma rede virtual do Azure, pode saltar para Criar uma função de gatilho HTTP.

Criar uma rede virtual

  1. No menu do portal do Azure, selecione Criar um recurso. No Azure Marketplace, selecione Rede>Rede virtual.

  2. Em Criar rede virtual, insira ou selecione as configurações especificadas, conforme mostrado na tabela a seguir:

    Definição Value
    Subscrição Selecione a sua subscrição.
    Grupo de recursos Selecione Criar novo, insira myResourceGroup e selecione OK.
    Nome Digite myResourceGroup-vnet.
    Location Selecione E.U.A. Leste.
  3. Selecione Seguinte: Endereços IP e, para Espaço de endereços IPv4, introduza 10.10.0.0/16.

  4. Selecione Adicionar sub-rede e, em seguida, digite Tutorial-Net para Nome da sub-rede e 10.10.1.0/24 para Intervalo de endereços da sub-rede.

    Guia Endereços IP para criar uma vnet

  5. Selecione Adicionar e, em seguida, selecione Rever + criar. Deixe o restante como padrão e selecione Criar.

  6. Em Criar rede virtual, selecione Criar.

Em seguida, você cria um aplicativo de função no plano Premium. Este plano fornece escala sem servidor enquanto suporta a integração de rede virtual.

Criar um aplicativo de função em um plano Premium

Este tutorial mostra como criar seu aplicativo de função em um plano Premium. A mesma funcionalidade também está disponível ao usar um plano Dedicado (Serviço de Aplicativo).

Nota

Para obter a melhor experiência neste tutorial, escolha .NET para pilha de tempo de execução e escolha Windows para sistema operacional. Além disso, crie seu aplicativo de função na mesma região da sua rede virtual.

  1. A partir do menu do portal do Azure ou a partir da Home page, selecione Criar um recurso.

  2. Na página Novo, selecione Aplicativo de função de computação>.

  3. Na página Noções básicas, use as configurações do aplicativo de função conforme especificado na tabela a seguir:

    Definição Valor sugerido Description
    Subscrição a sua subscrição A subscrição no âmbito da qual esta nova aplicação de funções é criada.
    Grupo de Recursos myResourceGroup Nome do grupo de recursos novo no qual a aplicação Function App vai ser criada.
    Nome da Aplicação de Funções Nome globalmente exclusivo Nome que identifica a sua aplicação Function App nova. Os carateres válidos são a-z (não sensível a maiúsculas e minúsculas), 0-9 e -.
    Publicar Código Opção para publicar ficheiros de código ou um contentor de Docker.
    Pilha de runtime Idioma Preferencial Escolha um tempo de execução que suporte a sua linguagem de programação de funções favorita. Atualmente, a edição no portal não é suportada para desenvolvimento em Python.
    Região Região preferida Escolha uma região perto de si ou de outros serviços aos quais as suas funções acedem.
  4. Selecione Next: Hosting. Na página Hospedagem, insira as seguintes configurações:

    Definição Valor sugerido Description
    Conta de armazenamento Nome globalmente exclusivo Crie uma conta de armazenamento para ser utilizada pela sua aplicação de funções. Os nomes das contas de armazenamento têm de ter entre 3 e 24 carateres de comprimento e apenas podem conter números e letras minúsculas. Você também pode usar uma conta existente, que deve atender aos requisitos da conta de armazenamento.
    Sistema Operativo Sistema operativo preferido Um sistema operacional é pré-selecionado para você com base na seleção da pilha de tempo de execução, mas você pode alterar a configuração, se necessário. Python só é suportado em Linux. A edição no portal só é suportada no Windows.
    Planear Premium O plano de alojamento que define a forma como os recursos são alocados à sua aplicação de funções. Selecione Premium. Por padrão, um novo plano do Serviço de Aplicativo é criado. O Sku e tamanho padrão é EP1, onde EP significa prêmio elástico. Para saber mais, consulte a lista de SKUs Premium.
    Ao executar funções JavaScript em um plano Premium, você deve escolher uma instância que tenha menos vCPUs. Para obter mais informações, consulte Escolher planos Premium single-core.
  5. Selecione Next: Monitoring. Na página Monitoramento, insira as seguintes configurações:

    Definição Valor sugerido Description
    Application Insights Predefinido Cria um recurso do Application Insights com o mesmo nome de aplicativo na região suportada mais próxima. Ao expandir essa configuração, você pode alterar o nome do novo recurso ou escolher um local diferente em uma geografia do Azure para armazenar seus dados.
  6. Selecione Rever + criar para rever as seleções de configuração da aplicação.

  7. Na página Rever + criar, reveja as suas definições e, em seguida, selecione Criar para provisionar e implementar a aplicação funcional.

  8. Selecione o ícone Notificações no canto superior direito do portal e observe a mensagem Implantação bem-sucedida .

  9. Selecione Ir para o recurso para ver a sua nova aplicação de funções. Você também pode selecionar Fixar no painel. A fixação facilita o retorno a esse recurso de aplicativo funcional a partir do seu painel.

    Notificação de implantação

Conecte seu aplicativo de função à rede virtual

Agora você pode conectar seu aplicativo de função à rede virtual.

  1. No seu aplicativo de função, selecione Rede no menu à esquerda e, em Integração VNet, selecione Clique aqui para configurar.

    Escolha rede no aplicativo de função

  2. Na página Integração VNET, selecione Adicionar VNet.

  3. Em Status do recurso de rede, use as configurações na tabela abaixo da imagem:

    Definir a função de rede virtual do aplicativo

    Definição Valor sugerido Description
    Rede Virtual MyResourceGroup-vnet Esta rede virtual é a que você criou anteriormente.
    Sub-rede Criar nova sub-rede Crie uma sub-rede na rede virtual para seu aplicativo de função usar. A integração de VNet deve ser configurada para usar uma sub-rede vazia.
    Nome da sub-rede Função-Rede Nome da nova sub-rede.
    Bloco de endereços de rede virtual 10.10.0.0/16 Você deve ter apenas um bloco de endereço definido.
    Bloco de endereços de sub-rede 10.10.2.0/24 O tamanho da sub-rede restringe o número total de instâncias para as quais seu aplicativo de função do plano Premium pode ser dimensionado. Este exemplo usa uma /24 sub-rede com 254 endereços de host disponíveis. Esta sub-rede é sobre-provisionada, mas fácil de calcular.
  4. Selecione OK para adicionar a sub-rede. Feche as páginas de Integração de VNet e Status de Recurso de Rede para retornar à página do seu aplicativo de função.

O aplicativo de função agora pode acessar a rede virtual. Quando a conectividade está habilitada, a configuração do vnetrouteallenabled site é definida como 1. Você deve ter essa configuração de site ou a configuração de aplicativo herdado WEBSITE_VNET_ROUTE_ALL definida como 1.

Em seguida, você adicionará uma função acionada por HTTP ao aplicativo de função.

Criar uma função de gatilho HTTP

  1. No menu esquerdo da janela Funções , selecione Funções e, em seguida, selecione Adicionar no menu superior.

  2. Na janela Nova Função, selecione Gatilho Http e aceite o nome padrão para Nova Função ou insira um novo nome.

  3. Em Code + Test, substitua o código de script C# (.csx) gerado por modelo pelo seguinte código:

    #r "Newtonsoft.Json"
    
    using System.Net;
    using Microsoft.AspNetCore.Mvc;
    using Microsoft.Extensions.Primitives;
    using Newtonsoft.Json;
    
    public static async Task<IActionResult> Run(HttpRequest req, ILogger log)
    {
        log.LogInformation("C# HTTP trigger function processed a request.");
    
        var client = new HttpClient();
        var response = await client.GetAsync(@"https://ifconfig.me");
        var responseMessage = await response.Content.ReadAsStringAsync();
    
        return new OkObjectResult(responseMessage);
    }
    

    Esse código chama um site externo que retorna o endereço IP do chamador, que neste caso é essa função. Esse método permite que você determine facilmente o endereço IP de saída que está sendo usado pelo seu aplicativo de função.

Agora você está pronto para executar a função e verificar os IPs de saída atuais.

Verificar IPs de saída atuais

Agora, você pode executar a função. Mas primeiro, verifique no portal e veja quais IPs de saída estão sendo usados pelo aplicativo de função.

  1. No seu aplicativo de função, selecione Propriedades e revise o campo Endereços IP de saída .

  2. Agora, retorne à sua função de gatilho HTTP, selecione Código + Teste e, em seguida , Teste/Executar.

    Função de teste

  3. Selecione Executar para executar a função e, em seguida, alterne para a Saída e verifique se o endereço IP no corpo da resposta HTTP é um dos valores dos endereços IP de saída visualizados anteriormente.

Agora, você pode criar um IP público e usar um gateway NAT para modificar esse endereço IP de saída.

Criar IP público

  1. No seu grupo de recursos, selecione Adicionar, pesquise o endereço IP público no Azure Marketplace e selecione Criar. Use as configurações na tabela abaixo da imagem:

    Criar endereço IP público

    Definição Valor sugerido
    Versão IP IPv4
    SKU Standard
    Nível Regional
    Nome IP de saída
    Subscrição Certifique-se de que a sua subscrição é apresentada
    Grupo de recursos myResourceGroup (ou nome atribuído ao seu grupo de recursos)
    Location Leste dos EUA (ou local que atribuiu aos seus outros recursos)
    Zona de Disponibilidade Sem Zona
  2. Selecione Criar para enviar a implantação.

  3. Quando a implantação for concluída, navegue até o recurso Endereço IP Público recém-criado e exiba o Endereço IP na Visão geral.

    Ver Endereço IP Público

Criar um NAT gateway

Agora, vamos criar o gateway NAT. Quando você começa com o tutorial de rede virtual anterior, Function-Net era o nome de sub-rede sugerido e MyResourceGroup-vnet era o nome de rede virtual sugerido nesse tutorial.

  1. No seu grupo de recursos, selecione Adicionar, pesquise o gateway NAT do Azure Marketplace e selecione Criar. Use as configurações na tabela abaixo da imagem para preencher a guia Noções básicas :

    Criar um NAT gateway

    Definição Valor sugerido
    Subscrição a sua subscrição
    Grupo de recursos myResourceGroup (ou nome atribuído ao seu grupo de recursos)
    Nome do gateway NAT myNatGateway
    Região Leste dos EUA (ou local que atribuiu aos seus outros recursos)
    Zona de Disponibilidade Nenhuma
  2. Selecione Next: Outbound IP. No campo Endereços IP públicos, selecione o endereço IP público criado anteriormente. Deixe Prefixos IP públicos desmarcados.

  3. Selecione Next: Sub-rede. Selecione o recurso myResourceGroup-vnet no campo Rede virtual e sub-rede Function-Net.

    Selecionar sub-rede

  4. Selecione Rever + Criar e, em seguida, Criar para submeter a implementação.

Quando a implantação for concluída, o gateway NAT estará pronto para rotear o tráfego da sub-rede do aplicativo de função para a Internet.

Verificar novos IPs de saída

Repita as etapas anteriores para executar a função novamente. Agora você deve ver o endereço IP de saída que você configurou no NAT mostrado na saída da função.

Clean up resources (Limpar recursos)

Você criou recursos para concluir este tutorial. Você será cobrado por esses recursos, dependendo do status da sua conta e do preço do serviço. Para evitar incorrer em custos adicionais, exclua os recursos quando souber que há mais tempo precisa deles.

  1. No portal do Azure, visite a página Grupo de recursos.

    Para aceder a essa página a partir da página da aplicação de funções, selecione o separador Descrição Geral e, em seguida, selecione a ligação em Grupo de recursos.

    Captura de tela que mostra a seleção do grupo de recursos a ser excluído da página do aplicativo de função.

    Para aceder a essa página a partir do dashboard, selecione Grupos de recursos e, em seguida, selecione o grupo de recursos que utilizou para este artigo.

  2. Na página Grupo de recursos, revise a lista de recursos incluídos e verifique se eles são aqueles que você deseja excluir.

  3. Selecione Excluir grupo de recursos e siga as instruções.

    A exclusão pode levar alguns minutos. Quando terminar, é apresentada uma notificação durante alguns segundos. Também pode selecionar o ícone de sino na parte superior da página para ver a notificação.

Próximos passos