Tutorial: Integrar o Azure Functions com uma rede virtual do Azure usando pontos de extremidade privados
Este tutorial mostra como usar o Azure Functions para se conectar a recursos em uma rede virtual do Azure usando pontos de extremidade privados. Você cria um novo aplicativo de função usando uma nova conta de armazenamento que está bloqueada atrás de uma rede virtual por meio do portal do Azure. A rede virtual usa um gatilho de fila do Service Bus.
Neste tutorial, você:
- Crie um aplicativo de função no plano Elastic Premium com integração de rede virtual e pontos de extremidade privados.
- Criar recursos do Azure, como o Service Bus
- Bloqueie o Service Bus atrás de um ponto de extremidade privado.
- Implante um aplicativo de função que use os gatilhos do Service Bus e HTTP.
- Teste para ver se seu aplicativo de função está seguro dentro da rede virtual.
- Limpe os recursos.
Criar um aplicativo de função em um plano Premium
Você cria um aplicativo de função C# em um plano Elastic Premium, que oferece suporte a recursos de rede, como integração de rede virtual na criação junto com escala sem servidor. Este tutorial usa C# e Windows. Outras linguagens e Linux também são suportadas.
No menu do portal do Azure ou na página inicial , selecione Criar um recurso.
Na página Novo, selecione Aplicativo de função de computação>.
Na página Noções básicas, use a tabela a seguir para definir as configurações do aplicativo de função.
Definição Valor sugerido Description Subscrição a sua subscrição Subscrição ao abrigo da qual esta nova aplicação funcional é criada. Grupo de Recursos myResourceGroup Nome para o novo grupo de recursos onde você cria seu aplicativo de função. 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 Escolha publicar arquivos de código ou um contêiner do Docker. Pilha de runtime .NET Este tutorial usa o .NET. Versão 6 (LTS) Este tutorial usa o .NET 6.0 em execução no mesmo processo que o host de funções. Região Região preferida Escolha uma região perto de si ou perto de outros serviços a que as suas funções acedam. Sistema Operativo Windows Este tutorial usa o Windows, mas também funciona para Linux. Planear Funções Premium O plano de alojamento que define a forma como os recursos são alocados à sua aplicação de funções. Por padrão, quando você seleciona Premium, um novo plano do Serviço de Aplicativo é criado. O Sku e tamanho padrão é EP1, onde EP significa prêmio elástico. Para obter mais informações, consulte a lista de SKUs Premium.
Ao executar funções JavaScript em um plano Premium, escolha uma instância que tenha menos vCPUs. Para obter mais informações, consulte Escolher planos Premium single-core.Selecione Next: Armazenamento. Na página Armazenamento, 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 devem ter entre 3 e 24 caracteres. Podem conter apenas números e letras minúsculas. Você também pode usar uma conta existente que não seja restrita pelas regras de firewall e atenda aos requisitos da conta de armazenamento. Ao usar o Functions com uma conta de armazenamento bloqueada, uma conta de armazenamento v2 é necessária. Esta é a versão de armazenamento padrão criada ao criar um aplicativo de função com recursos de rede por meio da folha de criação. Selecione Next: Networking. Na página Rede, insira as seguintes configurações.
Nota
Algumas dessas configurações não ficam visíveis até que outras opções sejam selecionadas.
Definição Valor sugerido Description Habilitar acesso público Inativo Negar acesso à rede pública bloqueará todo o tráfego de entrada, exceto o proveniente de pontos de extremidade privados. Ativar injeção de rede Ativado A capacidade de configurar seu aplicativo com integração VNet na criação aparece na janela do portal depois que essa opção é ativada. Rede Virtual Criar Novo Selecione o campo Criar novo . Na tela pop-out, forneça um nome para sua rede virtual e selecione Ok. As opções para restringir o acesso de entrada e saída ao seu aplicativo de função na criação são exibidas. Você deve habilitar explicitamente a integração de VNet na parte de acesso de saída da janela para restringir o acesso de saída. Insira as seguintes configurações para a seção Acesso de entrada. Esta etapa cria um ponto de extremidade privado em seu aplicativo de função.
Gorjeta
Para continuar a interagir com a sua aplicação funcional a partir do portal, terá de adicionar o seu computador local à rede virtual. Se não quiser restringir o acesso de entrada, ignore esta etapa.
Definição Valor sugerido Description Habilitar pontos de extremidade privados Ativado A capacidade de configurar seu aplicativo com integração VNet na criação aparece no portal depois que essa opção é ativada. Nome do ponto de extremidade privado myInboundPrivateEndpointName Nome que identifica o ponto de extremidade privado do aplicativo de nova função. Sub-rede de entrada Criar Novo Esta opção cria uma nova sub-rede para o seu ponto de extremidade privado de entrada. Vários pontos de extremidade privados podem ser adicionados a uma sub-rede singular. Forneça um nome de sub-rede. O bloco de endereço de sub-rede pode ser deixado no valor padrão. Selecione OK. Para saber mais sobre o dimensionamento de sub-redes, consulte Sub-redes. DNS Zona DNS Privado do Azure Esse valor indica qual servidor DNS seu ponto de extremidade privado usa. Na maioria dos casos, se estiver a trabalhar no Azure, a Zona DNS Privada do Azure é a zona DNS que deve utilizar como Manual para zonas DNS personalizadas que têm maior complexidade. Insira as seguintes configurações para a seção Acesso de saída. Esta etapa integra seu aplicativo de função com uma rede virtual na criação. Ele também expõe opções para criar pontos de extremidade privados em sua conta de armazenamento e restringir sua conta de armazenamento de acesso à rede ao criar. Quando o aplicativo de função é integrado vnet, todo o tráfego de saída por padrão passa pelo vnet..
Definição Valor sugerido Description Habilitar integração de rede virtual Ativado Isso integra seu aplicativo de função com uma VNet ao criar e direcionar todo o tráfego de saída através da VNet. Sub-rede de saída Criar nova Isso cria uma nova sub-rede para a integração VNet do seu aplicativo de função. Um aplicativo de função só pode ser VNet integrado com uma sub-rede vazia. Forneça um nome de sub-rede. O bloco de endereço de sub-rede pode ser deixado no valor padrão. Se você deseja configurá-lo, saiba mais sobre o dimensionamento da sub-rede aqui. Selecione OK. A opção para criar pontos de extremidade privados de armazenamento é exibida. Para usar seu aplicativo de função com redes virtuais, você precisa associá-lo a uma sub-rede. Insira as seguintes configurações para a seção Ponto de extremidade privado de armazenamento. Esta etapa cria pontos de extremidade privados para os pontos de extremidade de blob, fila, arquivo e tabela em sua conta de armazenamento na criação. Isso integra efetivamente sua conta de armazenamento com a rede virtual.
Definição Valor sugerido Description Adicionar ponto de extremidade privado de armazenamento Ativado A capacidade de configurar seu aplicativo com integração VNet na criação é exibida no portal depois que essa opção é ativada. Nome do ponto de extremidade privado myInboundPrivateEndpointName Nome que identifica o ponto de extremidade privado da sua conta de armazenamento. Sub-rede de ponto de extremidade privada Criar Novo Isso cria uma nova sub-rede para seu ponto de extremidade privado de entrada na conta de armazenamento. Vários pontos de extremidade privados podem ser adicionados a uma sub-rede singular. Forneça um nome de sub-rede. O bloco de endereço de sub-rede pode ser deixado no valor padrão. Se você deseja configurá-lo, saiba mais sobre o dimensionamento da sub-rede aqui. Selecione OK. DNS Zona DNS Privado do Azure Esse valor indica qual servidor DNS seu ponto de extremidade privado usa. Na maioria dos casos, se você estiver trabalhando no Azure, a Zona DNS Privada do Azure é a zona DNS que você deve usar, pois usar o Manual para zonas DNS personalizadas terá maior complexidade. Selecione Next: Monitoring. Na página Monitoramento, insira as seguintes configurações.
Definição Valor sugerido Description Application Insights Predefinido Crie um recurso do Application Insights com o mesmo nome de aplicativo na região suportada mais próxima. Expanda essa configuração se precisar alterar o nome do novo recurso ou armazenar seus dados em um local diferente em uma geografia do Azure. Selecione Rever + criar para rever as seleções de configuração da aplicação.
Na página Rever + criar, reveja as suas definições. Em seguida, selecione Criar para criar e implantar o aplicativo de função.
No canto superior direito do portal, selecione o ícone Notificações e observe a mensagem Implantação bem-sucedida .
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.
Parabéns! Você criou com sucesso seu aplicativo de função premium.
Nota
Algumas implantações podem ocasionalmente falhar ao criar os pontos de extremidade privados na conta de armazenamento com o erro 'StorageAccountOperationInProgress'. Essa falha ocorre mesmo que o próprio aplicativo de função seja criado com êxito. Quando você encontrar esse erro, exclua o aplicativo de função e tente novamente a operação. Em vez disso, você pode criar os pontos de extremidade privados na conta de armazenamento manualmente.
Criar um Service Bus
Em seguida, você cria uma instância do Service Bus que é usada para testar a funcionalidade dos recursos de rede do seu aplicativo de função neste tutorial.
No menu do portal do Azure ou na página inicial , selecione Criar um recurso.
Na página Novo, procure por Service Bus. Depois, selecione Criar.
Na guia Noções básicas, use a tabela a seguir para definir as configurações do Service Bus. Todas as outras configurações podem usar os valores padrão.
Definição Valor sugerido Description Subscrição a sua subscrição A subscrição na qual os seus recursos são criados. Grupo de recursos myResourceGroup O grupo de recursos que você criou com seu aplicativo de função. Nome do namespace myServiceBus O nome da instância do Service Bus para a qual o ponto de extremidade privado está habilitado. Location myFunctionRegion A região onde você criou seu aplicativo de função. Escalão de preço Premium Escolha esta camada para usar pontos de extremidade privados com o Barramento de Serviço do Azure. Selecione Rever + criar. Após a conclusão da validação, selecione Criar.
Bloqueie o Service Bus
Crie o ponto de extremidade privado para bloquear seu Service Bus:
No seu novo Service Bus, no menu à esquerda, selecione Rede.
Na guia Conexões de ponto de extremidade privado, selecione Ponto de extremidade privado.
Na guia Noções básicas, use as configurações de ponto de extremidade privado mostradas na tabela a seguir.
Definição Valor sugerido Description Subscrição a sua subscrição A subscrição na qual os seus recursos são criados. Grupo de recursos myResourceGroup O grupo de recursos que você criou com seu aplicativo de função. Nome SB-Ponto Final O nome do ponto de extremidade privado para o barramento de serviço. Região myFunctionRegion A região onde criou a sua conta de armazenamento. Na guia Recurso, use as configurações de ponto de extremidade privado mostradas na tabela a seguir.
Definição Valor sugerido Description Subscrição a sua subscrição A subscrição ao abrigo da qual os seus recursos são criados. Tipo de recurso Microsoft.ServiceBus/namespaces O tipo de recurso para o Service Bus. Recurso myServiceBus O Service Bus que você criou anteriormente no tutorial. Subrecurso de destino espaço de nomes O ponto de extremidade privado usado para o namespace do Service Bus. Na guia Rede Virtual, para a configuração Sub-rede, escolha padrão.
Selecione Rever + criar. Após a conclusão da validação, selecione Criar.
Depois que o ponto de extremidade privado for criado, retorne à seção Rede do namespace do Service Bus e marque a guia Acesso Público .
Verifique se a opção Redes selecionadas está selecionada.
Selecione + Adicionar rede virtual existente para adicionar a rede virtual criada recentemente.
Na guia Adicionar redes, use as configurações de rede da tabela a seguir:
Definição Valor sugerido Description Subscrição a sua subscrição A subscrição ao abrigo da qual os seus recursos são criados. Redes virtuais myVirtualNet O nome da rede virtual à qual seu aplicativo de função se conecta. Sub-redes functions O nome da sub-rede à qual seu aplicativo de função se conecta. Selecione Adicionar o endereço IP do cliente para dar ao IP do cliente atual acesso ao namespace.
Nota
Permitir o endereço IP do cliente é necessário para permitir que o portal do Azure publique mensagens na fila posteriormente neste tutorial.
Selecione Ativar para habilitar o ponto de extremidade de serviço.
Selecione Adicionar para adicionar a rede virtual e a sub-rede selecionadas às regras de firewall do Service Bus.
Selecione Salvar para salvar as regras de firewall atualizadas.
Os recursos na rede virtual agora podem se comunicar com o Service Bus usando o ponto de extremidade privado.
Criar uma fila
Crie a fila onde o gatilho do Barramento de Serviço do Azure Functions obtém eventos:
No Service Bus, no menu à esquerda, selecione Filas.
Selecione Fila. Para os fins deste tutorial, forneça a fila de nomes como o nome da nova fila.
Selecione Criar.
Obter uma cadeia de conexão do Service Bus
No Service Bus, no menu à esquerda, selecione Políticas de acesso compartilhado.
Selecione RootManageSharedAccessKey. Copie e salve a cadeia de conexão primária. Você precisa dessa cadeia de conexão quando define as configurações do aplicativo.
Definir as definições da aplicação de funções
No seu aplicativo de funções, no menu à esquerda, selecione Configuração.
Para usar seu aplicativo de função com redes virtuais e barramento de serviço, atualize as configurações do aplicativo mostradas na tabela a seguir. Para adicionar ou editar uma configuração, selecione + Nova configuração do aplicativo ou o ícone Editar na coluna mais à direita da tabela de configurações do aplicativo. Quando terminar, selecione Guardar.
Definição Valor sugerido Description SERVICEBUS_CONNECTION myServiceBusConnectionString Crie esta configuração de aplicativo para a cadeia de conexão do seu Service Bus. Essa cadeia de conexão de armazenamento é da seção Obter uma cadeia de conexão do Service Bus. WEBSITE_CONTENTOVERVNET 1 Crie esta configuração de aplicativo. Um valor de 1 permite que seu aplicativo de função seja dimensionado quando sua conta de armazenamento está restrita a uma rede virtual. Como você está usando um plano de hospedagem Elastic Premium, Na visualização Configuração, selecione a guia Configurações de tempo de execução da função. Defina o monitoramento da escala de tempo de execução como Ativado. Em seguida, selecione Guardar. O dimensionamento controlado por tempo de execução permite conectar funções de gatilho não HTTP a serviços executados dentro de sua rede virtual.
Nota
O dimensionamento em tempo de execução não é necessário para aplicativos funcionais hospedados em um plano do Serviço de Aplicativo Dedicado.
Implantar um gatilho do Service Bus e um gatilho HTTP
Nota
Habilitar pontos de extremidade privados em um aplicativo de função também torna o site do Gerenciador de Controle do Código-Fonte (SCM) publicamente inacessível. As instruções a seguir fornecem instruções de implantação usando o Centro de Implantação dentro do aplicativo de função. Como alternativa, use zip deploy ou agentes auto-hospedados que são implantados em uma sub-rede na rede virtual.
No GitHub, vá para o repositório de exemplo a seguir. Ele contém um aplicativo de função e duas funções, um gatilho HTTP e um gatilho de fila do Service Bus.
Na parte superior da página, selecione Fork para criar uma bifurcação deste repositório em sua própria conta ou organização do GitHub.
No seu aplicativo de função, no menu à esquerda, selecione Centro de Implantação. Em seguida, selecione Configurações.
Na guia Configurações, use as configurações de implantação mostradas na tabela a seguir.
Definição Valor sugerido Description Source GitHub Você deve ter criado um repositório GitHub para o código de exemplo na etapa 2. Organização myOrganization A organização em que seu repositório é verificado. Geralmente é a sua conta. Repositório funções-vnet-tutorial O repositório bifurcou de https://github.com/Azure-Samples/functions-vnet-tutorial. Ramo main A ramificação principal do repositório que você criou. Pilha de runtime .NET O código de exemplo está em C#. Versão .NET Core 3.1 A versão de tempo de execução. Selecione Guardar.
Sua implantação inicial pode levar alguns minutos. Quando seu aplicativo é implantado com êxito, na guia Logs, você vê uma mensagem de status Êxito (Ativo). Se necessário, atualize a página.
Parabéns! Você implantou com êxito seu aplicativo de função de exemplo.
Teste seu aplicativo de função bloqueado
No seu aplicativo de funções, no menu à esquerda, selecione Funções.
Selecione ServiceBusQueueTrigger.
No menu à esquerda, selecione Monitor.
Você vê que não pode monitorar seu aplicativo. Seu navegador não tem acesso à rede virtual, portanto, não pode acessar diretamente recursos dentro da rede virtual.
Aqui está uma maneira alternativa de monitorar sua função usando o Application Insights:
No seu aplicativo de funções, no menu à esquerda, selecione Application Insights. Em seguida, selecione Exibir dados do Application Insights.
No menu à esquerda, selecione Métricas dinâmicas.
Abra um novo separador. No Service Bus, no menu à esquerda, selecione Filas.
Selecione sua fila.
No menu à esquerda, selecione Service Bus Explorer. Em Enviar, para Tipo de Conteúdo, escolha Texto/Simples. Em seguida, insira uma mensagem.
Selecione Enviar para enviar a mensagem.
Na guia Métricas em tempo real, você verá que o gatilho da fila do Service Bus foi acionado. Se não tiver, reenvie a mensagem do Service Bus Explorer.
Parabéns! Você testou com sucesso a configuração do aplicativo de função com pontos de extremidade privados.
Compreender as zonas DNS privadas
Você usou um ponto de extremidade privado para se conectar aos recursos do Azure. Você está se conectando a um endereço IP privado em vez do ponto de extremidade público. Os serviços existentes do Azure são configurados para usar um DNS existente para se conectar ao ponto de extremidade público. Você deve substituir a configuração de DNS para se conectar ao ponto de extremidade privado.
Uma zona DNS privada é criada para cada recurso do Azure que foi configurado com um ponto de extremidade privado. Um registro DNS é criado para cada endereço IP privado associado ao ponto de extremidade privado.
As seguintes zonas DNS foram criadas neste tutorial:
- privatelink.file.core.windows.net
- privatelink.blob.core.windows.net
- privatelink.servicebus.windows.net
- privatelink.azurewebsites.net
Clean up resources (Limpar recursos)
Nos passos anteriores, criou os recursos do Azure num grupo de recursos. Se provavelmente não necessitar desses recursos no futuro, pode eliminá-los ao eliminar o grupo de recursos.
No menu do portal do Azure ou na página inicial , selecione Grupos de recursos. Em seguida, na página Grupos de recursos, selecione myResourceGroup.
Na página myResourceGroup, certifique-se de que os recursos listados são aqueles que você deseja excluir.
Selecione Excluir grupo de recursos, digite myResourceGroup na caixa de texto para confirmar e selecione Excluir.
Próximos passos
Neste tutorial, você criou um aplicativo de função Premium, uma conta de armazenamento e um Service Bus. Você garantiu todos esses recursos por trás de endpoints privados.
Use os links a seguir para saber mais sobre as opções de rede e os pontos de extremidade privados do Azure Functions: