Tutorial: Integrar Funções do Azure numa rede virtual do Azure com pontos finais privados

Este tutorial mostra-lhe como utilizar Funções do Azure para ligar a recursos numa rede virtual do Azure através de pontos finais privados. Pode criar uma nova aplicação de funções com uma nova conta de armazenamento bloqueada atrás de uma rede virtual através do portal do Azure. A rede virtual utiliza um acionador de fila do Service Bus.

Neste tutorial, irá:

  • Crie uma aplicação de funções no plano Elastic Premium com integração de rede virtual e pontos finais privados.
  • Criar recursos do Azure, como o Service Bus
  • Bloqueie o Service Bus atrás de um ponto final privado.
  • Implemente uma aplicação de funções que utilize os acionadores do Service Bus e http.
  • Teste para ver se a aplicação de funções está segura dentro da rede virtual.
  • Limpe os recursos.

Criar uma aplicação de funções num plano Premium

Pode criar uma aplicação de funções C# num plano Elastic Premium, que suporta capacidades de rede, como a integração da rede virtual na criação, juntamente com o dimensionamento sem servidor. Este tutorial utiliza C# e Windows. Também são suportados outros idiomas e Linux.

  1. No menu portal do Azure ou na Home page, selecione Criar um recurso.

  2. Na página Novo, selecione >Aplicação de Funções de Computação.

  3. Na página Informações básicas , utilize a seguinte tabela para configurar as definições da aplicação de funções.

    Definição Valor sugerido Descrição
    Subscrição A sua subscrição Subscrição na qual esta nova aplicação de funções é criada.
    Grupo de Recursos myResourceGroup Nome do novo grupo de recursos onde cria a sua aplicação de funções.
    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 Opte por publicar ficheiros de código ou um contentor do Docker.
    Pilha de runtime .NET Este tutorial utiliza .NET.
    Versão 6 (LTS) Este tutorial utiliza o .NET 6.0 em execução no mesmo processo que o anfitrião de Funções.
    Região Região preferencial Escolha uma região perto de si ou perto de outros serviços a que as suas funções acedem.
    Sistema operativo Windows Este tutorial utiliza o Windows, mas também funciona para o Linux.
    Planear Funções Premium O plano de alojamento que define a forma como os recursos são alocados à sua aplicação Function App. Por predefinição, quando seleciona Premium, é criado um novo plano de Serviço de Aplicações. O SKU e o tamanho predefinidos são O EP1, onde o EP significa elastic premium. Para obter mais informações, veja a lista de SKUs Premium.

    Quando executar funções JavaScript num plano Premium, escolha uma instância que tenha menos vCPUs. Para obter mais informações, veja Escolher planos Premium de núcleo único.
  4. Selecione Seguinte: Armazenamento. Na página Armazenamento , introduza as seguintes definições.

    Definição Valor sugerido Descrição
    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. Podem conter apenas números e letras minúsculas. Também pode utilizar uma conta existente que não seja restrita por regras de firewall e que cumpra os requisitos da conta de armazenamento. Ao utilizar funções com uma conta de armazenamento bloqueada, é necessária uma conta de armazenamento v2. Esta é a versão de armazenamento predefinida criada ao criar uma aplicação de funções com capacidades de rede através do painel criar.
  5. Selecione Seguinte: Rede. Na página Rede , introduza as seguintes definições.

    Nota

    Algumas destas definições não são visíveis até que sejam selecionadas outras opções.

    Definição Valor sugerido Descrição
    Ativar o acesso público Desativado Negar o acesso à rede pública bloqueará todo o tráfego de entrada, exceto o proveniente de pontos finais privados.
    Ativar injeção de rede Ativado A capacidade de configurar a sua aplicação com a integração da VNet durante a criação é apresentada na janela do portal depois de esta opção ser mudada para Ativada.
    Rede Virtual Criar Novo Selecione o campo Criar Novo . No ecrã de destaque, forneça um nome para a sua rede virtual e selecione Ok. São apresentadas as opções para restringir o acesso de entrada e saída à sua aplicação de funções durante a criação. Tem de ativar explicitamente a integração da VNet na parte Acesso de saída da janela para restringir o acesso de saída.

    Introduza as seguintes definições para a secção Acesso de entrada . Este passo cria um ponto final privado na sua aplicação de funções.

    Dica

    Para continuar a interagir com a sua aplicação de funções a partir do portal, terá de adicionar o seu computador local à rede virtual. Se não quiser restringir o acesso de entrada, ignore este passo.

    Definição Valor sugerido Descrição
    Ativar pontos finais privados Ativado A capacidade de configurar a sua aplicação com a integração da VNet durante a criação é apresentada no portal depois de esta opção estar ativada.
    Nome do ponto final privado myInboundPrivateEndpointName Nome que identifica o novo ponto final privado da aplicação de funções.
    Sub-rede de entrada Criar Novo Esta opção cria uma nova sub-rede para o ponto final privado de entrada. Podem ser adicionados vários pontos finais privados a uma sub-rede singular. Indique um Nome da Sub-rede. O Bloco de Endereços da Sub-rede pode ser deixado no valor predefinido. Selecione OK. Para saber mais sobre o dimensionamento da sub-rede, veja Sub-redes.
    DNS Zona DNS Privado do Azure Este valor indica o servidor DNS que o ponto final privado utiliza. Na maioria dos casos, se estiver a trabalhar no Azure, o Azure DNS Privado Zone é a zona DNS que deve utilizar como manual para zonas DNS personalizadas, o que aumentou a complexidade.

    Introduza as seguintes definições para a secção Acesso de saída . Este passo integra a sua aplicação de funções com uma rede virtual na criação. Também expõe opções para criar pontos finais privados na sua conta de armazenamento e restringir o acesso à sua conta de armazenamento na criação. Quando a aplicação de funções está integrada na vnet, todo o tráfego de saída, por predefinição, passa pela vnet..

    Definição Valor sugerido Descrição
    Ativar a Integração da VNet Ativado Isto integra a sua aplicação de funções com uma VNet na criação e direciona todo o tráfego de saída através da VNet.
    Sub-rede de saída Criar novo Esta ação cria uma nova sub-rede para a integração da VNet da sua aplicação de funções. Uma aplicação de funções só pode ser integrada na VNet com uma sub-rede vazia. Indique um Nome da Sub-rede. O Bloco de Endereços da Sub-rede pode ser deixado no valor predefinido. Se pretender configurá-lo, saiba mais sobre o dimensionamento da Sub-rede aqui. Selecione OK. É apresentada a opção para criar pontos finais privados de Armazenamento . Para utilizar a sua aplicação de funções com redes virtuais, tem de associá-la a uma sub-rede.

    Introduza as seguintes definições para a secção Ponto final privado do Armazenamento . Este passo cria pontos finais privados para os pontos finais de blobs, filas, ficheiros e tabelas na sua conta de armazenamento ao criar. Esta ação integra efetivamente a sua conta de armazenamento na VNet.

    Definição Valor sugerido Descrição
    Adicionar ponto final privado de armazenamento Ativado A capacidade de configurar a sua aplicação com a integração da VNet na criação é apresentada no portal depois de esta opção estar ativada.
    Nome do ponto final privado myInboundPrivateEndpointName Nome que identifica o ponto final privado da conta de armazenamento.
    Sub-rede de ponto final privado Criar Novo Esta ação cria uma nova sub-rede para o ponto final privado de entrada na conta de armazenamento. Podem ser adicionados vários pontos finais privados a uma sub-rede singular. Indique um Nome da Sub-rede. O Bloco de Endereços da Sub-rede pode ser deixado no valor predefinido. Se pretender configurá-lo, saiba mais sobre o dimensionamento da Sub-rede aqui. Selecione OK.
    DNS Zona DNS Privado do Azure Este valor indica o servidor DNS que o ponto final privado utiliza. Na maioria dos casos, se estiver a trabalhar no Azure, o Azure DNS Privado Zone é a zona DNS que deve utilizar como manual para zonas DNS personalizadas terá uma maior complexidade.
  6. Selecione Seguinte: Monitorização. Na página Monitorização , introduza as seguintes definições.

    Definição Valor sugerido Descrição
    Application Insights Predefinição Crie um recurso do Application Insights com o mesmo nome de aplicação na região suportada mais próxima. Expanda esta definição se precisar de alterar o Novo nome do recurso ou armazenar os seus dados numa Localização diferente numa geografia do Azure.
  7. Selecione Rever + criar para rever as seleções de configuração da aplicação.

  8. Na página Rever + criar , reveja as suas definições. Em seguida, selecione Criar para criar e implementar a aplicação de funções.

  9. No canto superior direito do portal, selecione o ícone Notificações e watch para a mensagem Implementação com êxito.

  10. Selecione Ir para o recurso para ver a sua nova aplicação de funções. Também pode selecionar Afixar ao dashboard. A afixação facilita o regresso a este recurso da aplicação de funções a partir do dashboard.

Parabéns! Criou com êxito a sua aplicação de funções premium.

Nota

Algumas implementações podem não conseguir criar os pontos finais privados na conta de armazenamento com o erro "StorageAccountOperationInProgress". Esta falha ocorre mesmo que a própria aplicação de funções seja criada com êxito. Quando encontrar tal erro, elimine a aplicação de funções e repita a operação. Em vez disso, pode criar os pontos finais privados na conta de armazenamento manualmente.

Criar um Service Bus

Em seguida, vai criar uma instância do Service Bus que é utilizada para testar a funcionalidade das capacidades de rede da sua aplicação de funções neste tutorial.

  1. No menu portal do Azure ou na Home page, selecione Criar um recurso.

  2. Na página Novo , procure Service Bus. Em seguida, selecione Criar.

  3. No separador Noções Básicas , utilize a seguinte tabela para configurar as definições do Service Bus. Todas as outras definições podem utilizar os valores predefinidos.

    Definição Valor sugerido Descrição
    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 criou com a sua aplicação de funções.
    Nome do espaço de nomes myServiceBus O nome da instância do Service Bus para a qual o ponto final privado está ativado.
    Localização myFunctionRegion A região onde criou a sua aplicação de funções.
    Escalão de preço Premium Selecione este escalão para utilizar pontos finais privados com Azure Service Bus.
  4. Selecione Rever + criar. Após a conclusão da validação, selecione Criar.

Bloquear o Service Bus

Crie o ponto final privado para bloquear o Service Bus:

  1. No seu novo Service Bus, no menu à esquerda, selecione Rede.

  2. No separador Ligações de ponto final privado , selecione Ponto final privado.

    Captura de ecrã a mostrar como aceder a pontos finais privados do Service Bus.

  3. No separador Noções básicas , utilize as definições de ponto final privado apresentadas na tabela seguinte.

    Definição Valor sugerido Descrição
    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 criou com a sua aplicação de funções.
    Nome ponto final de sb O nome do ponto final privado do service bus.
    Region myFunctionRegion A região onde criou a sua conta de armazenamento.
  4. No separador Recurso , utilize as definições de ponto final privado apresentadas na tabela seguinte.

    Definição Valor sugerido Descrição
    Subscrição A sua subscrição A subscrição na qual os seus recursos são criados.
    Tipo de recurso Microsoft.ServiceBus/espaços de nomes O tipo de recurso do Service Bus.
    Recurso myServiceBus O Service Bus que criou anteriormente no tutorial.
    Sub-origem de destino espaço de nomes O ponto final privado que é utilizado para o espaço de nomes do Service Bus.
  5. No separador Rede Virtual, na definição Sub-rede, selecione predefinição.

  6. Selecione Rever + criar. Após a conclusão da validação, selecione Criar.

  7. Após a criação do ponto final privado, regresse à secção Rede do espaço de nomes do Service Bus e verifique o separador Acesso Público .

  8. Certifique-se de que as Redes selecionadas estão selecionadas.

  9. Selecione + Adicionar rede virtual existente para adicionar a rede virtual criada recentemente.

  10. No separador Adicionar redes , utilize as definições de rede da seguinte tabela:

    Definição Valor sugerido Descrição
    Subscrição A sua subscrição A subscrição na qual os seus recursos são criados.
    Redes virtuais myVirtualNet O nome da rede virtual à qual a sua aplicação de funções se liga.
    Sub-redes funções O nome da sub-rede à qual a sua aplicação de funções se liga.
  11. Selecione Adicionar o endereço IP do cliente para conceder ao seu ip de cliente atual acesso ao espaço de nomes.

    Nota

    Permitir o endereço IP do cliente é necessário para permitir que o portal do Azure publique mensagens na fila mais adiante neste tutorial.

  12. Selecione Ativar para ativar o ponto final de serviço.

  13. Selecione Adicionar para adicionar a rede virtual e a sub-rede selecionadas às regras de firewall do Service Bus.

  14. Selecione Guardar para guardar as regras de firewall atualizadas.

Os recursos na rede virtual podem agora comunicar com o Service Bus com o ponto final privado.

Criar uma fila

Crie a fila onde o acionador Funções do Azure Service Bus obtém eventos:

  1. No Service Bus, no menu à esquerda, selecione Filas.

  2. Selecione Fila. Para efeitos deste tutorial, indique a fila de nomes como o nome da nova fila.

    Captura de ecrã a mostrar como criar uma fila do Service Bus.

  3. Selecione Criar.

Obter uma cadeia de ligação do Service Bus

  1. No Service Bus, no menu à esquerda, selecione Políticas de acesso partilhado.

  2. Selecione RootManageSharedAccessKey. Copie e guarde a Cadeia de Ligação Primária. Precisa desta cadeia de ligação quando configurar as definições da aplicação.

    Captura de ecrã a mostrar como obter uma cadeia de ligação do Service Bus.

Configurar as definições da aplicação de funções

  1. Na sua aplicação de funções, no menu à esquerda, selecione Configuração.

  2. Para utilizar a sua aplicação de funções com redes virtuais e service bus, atualize as definições da aplicação apresentadas na tabela seguinte. Para adicionar ou editar uma definição, selecione + Nova definição da aplicação ou o ícone Editar na coluna mais à direita da tabela de definições da aplicação. Quando terminar, selecione Guardar.

    Definição Valor sugerido Descrição
    SERVICEBUS_CONNECTION myServiceBusConnectionString Crie esta definição de aplicação para a cadeia de ligação do Service Bus. Esta cadeia de ligação de armazenamento é da secção Obter uma cadeia de ligação do Service Bus .
    WEBSITE_CONTENTOVERVNET 1 Crie esta definição de aplicação. Um valor de 1 permite que a sua aplicação de funções seja dimensionada quando a sua conta de armazenamento está restrita a uma rede virtual.
  3. Uma vez que está a utilizar um plano de alojamento Elastic Premium, na vista Configuração , selecione o separador Definições do runtime da função . Defina Monitorização da Escala de Runtime como Ativada. Em seguida, selecione Guardar. O dimensionamento orientado por runtime permite-lhe ligar funções de acionador não HTTP a serviços que são executados dentro da sua rede virtual.

    Captura de ecrã a mostrar como ativar o dimensionamento orientado por runtime para Funções do Azure.

Nota

O dimensionamento do runtime não é necessário para aplicações de funções alojadas num plano de Serviço de Aplicações dedicado.

Implementar um acionador do Service Bus e um acionador HTTP

Nota

Ativar pontos finais privados numa aplicação de funções também torna o site do Gestor de Controlo de Código Fonte (SCM) publicamente inacessível. As seguintes instruções fornecem direções de implementação através do Centro de Implementação na aplicação de funções. Em alternativa, utilize a implementação zip ou os agentes autoalojados que são implementados numa sub-rede na rede virtual.

  1. No GitHub, aceda ao seguinte repositório de exemplo. Contém uma aplicação de funções e duas funções, um acionador HTTP e um acionador de fila do Service Bus.

    https://github.com/Azure-Samples/functions-vnet-tutorial

  2. Na parte superior da página, selecione Fork para criar um fork deste repositório na sua própria conta ou organização do GitHub.

  3. Na sua aplicação de funções, no menu à esquerda, selecione Centro de Implementação. Em seguida, selecione Definições.

  4. No separador Definições , utilize as definições de implementação apresentadas na tabela seguinte.

    Definição Valor sugerido Descrição
    Origem GitHub Deverá ter criado um repositório do GitHub para o código de exemplo no passo 2.
    Organização myOrganization A organização na que o seu repositório está registado. Normalmente, é a sua conta.
    Repositório functions-vnet-tutorial O repositório forked de https://github.com/Azure-Samples/functions-vnet-tutorial.
    Ramo main O ramo principal do repositório que criou.
    Pilha de runtime .NET O código de exemplo está em C#.
    Versão .NET Core 3.1 A versão do runtime.
  5. Selecione Guardar.

    Captura de ecrã a mostrar como implementar Funções do Azure código através do portal.

  6. A implementação inicial pode demorar alguns minutos. Quando a aplicação for implementada com êxito, no separador Registos , verá uma mensagem de estado Êxito (Ativo ). Se necessário, atualize a página.

Parabéns! Implementou com êxito a sua aplicação de funções de exemplo.

Testar a aplicação de funções bloqueada

  1. Na sua aplicação de funções, no menu à esquerda, selecione Funções.

  2. Selecione ServiceBusQueueTrigger.

  3. No menu à esquerda, selecione Monitorizar.

Verá que não consegue monitorizar a sua aplicação. O browser não tem acesso à rede virtual, pelo que não pode aceder diretamente aos recursos na rede virtual.

Eis uma forma alternativa de monitorizar a sua função com o Application Insights:

  1. Na sua aplicação de funções, no menu à esquerda, selecione Application Insights. Em seguida, selecione Ver dados do Application Insights.

    Captura de ecrã a mostrar como ver o Application Insights para uma aplicação de funções.

  2. No menu à esquerda, selecione Métricas em direto.

  3. Abra um novo separador. No Service Bus, no menu à esquerda, selecione Filas.

  4. Selecione a sua fila.

  5. No menu à esquerda, selecione Service Bus Explorer. Em Enviar, em Tipo de Conteúdo, selecione Texto/Simples. Em seguida, introduza uma mensagem.

  6. Selecione Enviar para enviar a mensagem.

    Captura de ecrã a mostrar como enviar mensagens do Service Bus com o portal.

  7. No separador Métricas dinâmicas , deverá ver que o acionador da fila do Service Bus foi acionado. Se não tiver sido, reenvie a mensagem do Service Bus Explorer.

    Captura de ecrã a mostrar como ver mensagens com métricas dinâmicas para aplicações de funções.

Parabéns! Testou com êxito a configuração da aplicação de funções com pontos finais privados.

Compreender as zonas DNS privadas

Utilizou um ponto final privado para ligar aos recursos do Azure. Está a ligar a um endereço IP privado em vez do ponto final público. Os serviços existentes do Azure estão configurados para utilizar um DNS existente para ligar ao ponto final público. Tem de substituir a configuração de DNS para ligar ao ponto final privado.

É criada uma zona DNS privada para cada recurso do Azure que foi configurado com um ponto final privado. É criado um registo DNS para cada endereço IP privado associado ao ponto final 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

Limpar os 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 portal do Azure ou home page, 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 os que pretende eliminar.

Selecione Eliminar grupo de recursos, escreva myResourceGroup na caixa de texto a confirmar e, em seguida, selecione Eliminar.

Passos seguintes

Neste tutorial, criou uma aplicação de funções Premium, uma conta de armazenamento e o Service Bus. Garantiu todos estes recursos atrás de pontos finais privados.

Utilize as seguintes ligações para saber mais Funções do Azure opções de rede e pontos finais privados: