Esercitazione: Controllare Funzioni di Azure IP in uscita con un gateway NAT di rete virtuale di Azure

La traduzione degli indirizzi di rete virtuale (NAT) semplifica la connettività Internet solo in uscita per le reti virtuali. Quando viene configurato in una subnet, per tutta la connettività in uscita vengono usati gli indirizzi IP pubblici statici specificati. Un NAT può essere utile per le app che devono usare un servizio di terze parti che usa un elenco di indirizzi IP consentiti come misura di sicurezza. Per altre informazioni, vedere Informazioni sul gateway NAT di Azure?

Questa esercitazione illustra come usare i gateway NAT per instradare il traffico in uscita da una funzione attivata HTTP. Questa funzione consente di controllare il proprio indirizzo IP in uscita. Durante questa esercitazione si otterrà:

  • Creare una rete virtuale
  • Creare un'app per le funzioni di piano Premium
  • Creare un indirizzo IP pubblico
  • Creare un gateway NAT
  • Configurare l'app per le funzioni per instradare il traffico in uscita tramite il gateway NAT

Topologia

Il diagramma seguente illustra l'architettura della soluzione creata:

Interfaccia utente per l'integrazione del gateway NAT

Le funzioni in esecuzione nel piano Premium hanno le stesse funzionalità di hosting delle app Web in Servizio app di Azure, che include la funzionalità di integrazione della rete virtuale. Per altre informazioni sull'integrazione della rete virtuale, inclusa la risoluzione dei problemi e la configurazione avanzata, vedere Integrare l'app con una rete virtuale di Azure.

Prerequisiti

Per questa esercitazione è importante comprendere l'indirizzamento IP e la creazione di subnet. Si può iniziare con questo articolo che illustra le nozioni di base dell'indirizzamento e della creazione di subnet. Molti altri articoli e video sono disponibili online.

Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.

Se sono già state completate le funzioni di integrazione con un'esercitazione sulla rete virtuale di Azure , è possibile passare a Creare una funzione trigger HTTP.

Crea rete virtuale

  1. Nel menu del portale di Azure selezionare Crea una risorsa. In Azure Marketplace selezionare Rete>Rete virtuale.

  2. In Crea rete virtuale immettere o selezionare le impostazioni specificate come illustrato nella tabella seguente:

    Impostazione Valore
    Subscription Selezionare la propria sottoscrizione.
    Resource group Selezionare Crea nuovo, immettere myResourceGroup e selezionare OK.
    Nome Immettere myResourceGroup-vnet.
    Location Selezionare Stati Uniti orientali.
  3. Selezionare Avanti: indirizzi IP e per lo spazio indirizzi IPv4 immettere 10.10.0.0/16.

  4. Selezionare Aggiungi subnet, quindi immettere Tutorial-Net per il nome della subnet e 10.10.1.0/24 per l'intervallo di indirizzi della subnet.

    Scheda Indirizzi IP per la creazione di una rete virtuale

  5. Selezionare Aggiungi e quindi Rivedi e crea. Lasciare le altre impostazioni sui valori predefiniti e selezionare Crea.

  6. In Crea rete virtuale selezionare Crea.

Successivamente, si crea un'app per le funzioni nel piano Premium. Questo piano offre scalabilità serverless, supportando l'integrazione della rete virtuale.

Creare un'app per le funzioni in un piano Premium

Questa esercitazione illustra come creare l'app per le funzioni in un piano Premium. La stessa funzionalità è disponibile anche quando si usa un piano dedicato (servizio app).

Nota

Per la migliore esperienza in questa esercitazione, scegliere .NET per stack di runtime e scegliere Windows per il sistema operativo. Creare anche l'app per le funzioni nella stessa area della rete virtuale.

  1. Nel menu del portale di Azure o dalla pagina Home selezionare Crea una risorsa.

  2. Nella pagina Nuovo, selezionare Calcolo>App per le funzioni.

  3. Nella pagina Informazioni di base usare le impostazioni dell'app per le funzioni specificate nella tabella seguente:

    Impostazione Valore consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui viene creata questa nuova app per le funzioni.
    Gruppo di risorse myResourceGroup Nome del nuovo gruppo di risorse in cui creare l'app per le funzioni.
    Nome dell'app per le funzioni Nome univoco a livello globale Nome che identifica la nuova app per le funzioni. I caratteri validi sono a-z (senza distinzione tra maiuscole e minuscole), 0-9 e -.
    Pubblica Codice Opzione per la pubblicazione di file di codice o di un contenitore Docker.
    Stack di runtime Lingua preferita Scegliere un runtime che supporti il linguaggio di programmazione della funzione preferito. La modifica all'interno del portale non è attualmente supportata per lo sviluppo Python.
    Area Area preferita Scegliere un'area nelle vicinanze o vicino ad altri servizi a cui accedono le funzioni.
  4. Selezionare Avanti: Hosting. Nella pagina Hosting immettere le impostazioni seguenti:

    Impostazione Valore consigliato Descrizione
    Account di archiviazione Nome globalmente univoco Creare un account di archiviazione usato dall'app per le funzioni. I nomi degli account di archiviazione devono avere una lunghezza compresa tra 3 e 24 caratteri e possono contenere solo numeri e lettere minuscole. È anche possibile usare un account esistente, che deve soddisfare i requisiti dell'account di archiviazione.
    Sistema operativo Sistema operativo preferito Viene preselezionato automaticamente un sistema operativo in base alla selezione dello stack di runtime, ma, se necessario, è possibile modificare l'impostazione. Python è supportato solo in Linux. La modifica all'interno del portale è supportata solo in Windows.
    Piano Premium Piano di hosting che definisce come vengono allocate le risorse all'app per le funzioni. Selezionare Premium. Per impostazione predefinita, viene creato un nuovo piano di servizio app. Il valore predefinito di SKU e dimensioni è EP1, dove EP è l'acronimo di Elastic Premium, ovvero elastico Premium. Per altre informazioni, vedere l'elenco di SKU Premium.
    Quando si eseguono funzioni JavaScript in un piano Premium, è necessario scegliere un'istanza con un minor numero di vCPU. Per altre informazioni, vedere Scegliere piani Premium con core singolo.
  5. Selezionare Avanti: Monitoraggio. Nella pagina Monitoraggio immettere le impostazioni seguenti:

    Impostazione Valore consigliato Descrizione
    Application Insights Predefinito Crea una risorsa di Application Insights con lo stesso nome di app nell'area più vicina supportata. Espandendo questa impostazione, è possibile cambiare il valore di Nome nuova risorsa oppure scegliere un valore per Località in un'area geografica di Azure per archiviare i dati.
  6. Selezionare Rivedi e crea per rivedere le selezioni effettuate per la configurazione dell'app.

  7. Nella pagina Rivedi e crea esaminare le impostazioni e quindi selezionare Crea per effettuare il provisioning e distribuire l'app per le funzioni.

  8. Selezionare l'icona Notifiche nell'angolo superiore destro del portale e attendere che venga visualizzato il messaggio La distribuzione è riuscita.

  9. Selezionare Vai alla risorsa per visualizzare la nuova app per le funzioni. È anche possibile selezionare Aggiungi al dashboard. In questo modo è più facile tornare in questa risorsa di app per le funzioni dal dashboard.

    Notifica della distribuzione

Connettere l'app per le funzioni alla rete virtuale

È ora possibile connettere l'app per le funzioni alla rete virtuale.

  1. Nell'app per le funzioni selezionare Rete nel menu a sinistra, quindi in Integrazione rete virtuale selezionare Fare clic qui per configurare.

    Scegliere la rete nell'app per le funzioni

  2. Nella pagina Integrazione rete virtuale selezionare Aggiungi rete virtuale.

  3. In Stato funzionalità di rete usare le impostazioni nella tabella sotto l'immagine:

    Definire la rete virtuale dell'app per le funzioni

    Impostazione Valore consigliato Descrizione
    Rete virtuale MyResourceGroup-vnet Questa rete virtuale è quella creata in precedenza.
    Subnet Crea nuova subnet Creare una subnet nella rete virtuale da usare per l'app per le funzioni. L'integrazione rete virtuale deve essere configurata per l'uso di una subnet vuota.
    Nome della subnet Function-Net Nome della nuova subnet.
    Blocco di indirizzi di rete virtuale 10.10.0.0/16 È necessario definire un solo blocco di indirizzi.
    Blocco di indirizzi della subnet 10.10.2.0/24 Le dimensioni della subnet limitano il numero totale di istanze a cui l'app per le funzioni del piano Premium può aumentare. Questo esempio usa una /24 subnet con 254 indirizzi host disponibili. Questa subnet è con provisioning eccessivo, ma facile da calcolare.
  4. Selezionare OK per aggiungere la subnet. Chiudere le pagine Integrazione rete virtuale e Stato funzionalità di rete per tornare alla pagina dell'app per le funzioni.

L'app per le funzioni può ora accedere alla rete virtuale. Quando la connettività è abilitata, l'impostazione del vnetrouteallenabled sito è impostata su 1. È necessario avere questa impostazione del sito o l'impostazione dell'applicazione legacy WEBSITE_VNET_ROUTE_ALL impostata su 1.

Si aggiungerà quindi una funzione attivata tramite HTTP all'app per le funzioni.

Creare una funzione trigger HTTP

  1. Selezionare Funzioni nel menu a sinistra della finestra Funzioni e quindi Aggiungi nel menu in alto.

  2. Nella finestra Nuova funzione selezionare Trigger HTTP e accettare il nome predefinito per Nuova funzione oppure immettere un nuovo nome.

  3. In Codice e test sostituire il codice C# generato dal modello (con estensione csx) con il codice seguente:

    #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);
    }
    

    Questo codice chiama un sito Web esterno che restituisce l'indirizzo IP del chiamante, che in questo caso è questa funzione. Questo metodo consente di determinare facilmente l'indirizzo IP in uscita usato dall'app per le funzioni.

A questo momento si è pronti per eseguire la funzione e controllare gli indirizzi IP in uscita correnti.

Verificare gli indirizzi IP in uscita correnti

È ora possibile eseguire la funzione . Prima di tutto, archiviare il portale e vedere quali indirizzi IP in uscita vengono usati dall'app per le funzioni.

  1. Nell'app per le funzioni selezionare Proprietà ed esaminare il campo Indirizzi IP in uscita .

    Visualizzare gli indirizzi IP in uscita dell'app per le funzioni

  2. Tornare ora alla funzione trigger HTTP, selezionare Codice e test e quindi Test/Esegui.

    Funzione test

  3. Selezionare Esegui per eseguire la funzione e quindi passare all'output.

    Output della funzione di test

  4. Verificare che l'indirizzo IP nel corpo della risposta HTTP sia uno dei valori degli indirizzi IP in uscita visualizzati in precedenza.

È ora possibile creare un indirizzo IP pubblico e usare un gateway NAT per modificare questo indirizzo IP in uscita.

Creare un indirizzo IP pubblico

  1. Nel gruppo di risorse selezionare Aggiungi, cercare Indirizzo IP pubblico nella Azure Marketplace e selezionare Crea. Usare le impostazioni della tabella sotto l'immagine:

    Creare un indirizzo IP pubblico

    Impostazione Valore consigliato
    Versione IP IPv4
    SKU Standard
    Livello Regionale
    Nome IP in uscita
    Sottoscrizione verificare che venga visualizzata la sottoscrizione
    Gruppo di risorse myResourceGroup (o nome assegnato al gruppo di risorse)
    Posizione Stati Uniti orientali (o località assegnate alle altre risorse)
    Availability Zone (Zona di disponibilità) Nessuna zona
  2. Selezionare Crea per inviare la distribuzione.

  3. Al termine della distribuzione, passare alla risorsa Indirizzo IP pubblico appena creato e visualizzare l'indirizzo IP nella panoramica.

    Visualizzare l'indirizzo IP pubblico

Creare il gateway NAT

A questo punto si crei il gateway NAT. Quando si inizia con l'esercitazione precedente sulla rete virtuale, Function-Net è stato il nome della subnet suggerito ed MyResourceGroup-vnet è stato il nome della rete virtuale suggerito in questa esercitazione.

  1. Nel gruppo di risorse selezionare Aggiungi, cercare gateway NAT nella Azure Marketplace e selezionare Crea. Usare le impostazioni nella tabella sotto l'immagine per popolare la scheda Informazioni di base :

    Creare il gateway NAT

    Impostazione Valore consigliato
    Sottoscrizione Sottoscrizione in uso
    Gruppo di risorse myResourceGroup (o nome assegnato al gruppo di risorse)
    Nome del gateway NAT myNatGateway
    Area Stati Uniti orientali (o località assegnate alle altre risorse)
    Availability Zone (Zona di disponibilità) Nessuno
  2. Selezionare Avanti: IP in uscita. Nel campo Indirizzi IP pubblici selezionare l'indirizzo IP pubblico creato in precedenza. Lasciare deselezionata l'opzione Prefissi IP pubblici .

  3. Selezionare Avanti: Subnet. Selezionare la risorsa myResourceGroup-vnet nel campo Rete virtuale e nella subnet Function-Net .

    Selezionare la subnet

  4. Selezionare Rivedi e crea e quindi Crea per inviare la distribuzione.

Al termine della distribuzione, il gateway NAT è pronto per instradare il traffico dalla subnet dell'app per le funzioni a Internet.

Verificare i nuovi indirizzi IP in uscita

Ripetere i passaggi precedenti per eseguire di nuovo la funzione. Verrà ora visualizzato l'indirizzo IP in uscita configurato nel nat visualizzato nell'output della funzione.

Pulire le risorse

Sono state create risorse per completare questa esercitazione. Queste risorse verranno fatturate, a seconda dello stato dell'account e dei prezzi del servizio. Per evitare di incorrere in costi aggiuntivi, eliminare le risorse quando sono più necessarie.

  1. Nel portale di Azure passare alla pagina Gruppo di risorse.

    Per accedere a tale pagina dalla pagina dell'app per le funzioni, selezionare la scheda Panoramica e quindi selezionare il collegamento in Gruppo di risorse.

    Screenshot che mostra la selezione del gruppo di risorse da eliminare dalla pagina dell'app per le funzioni.

    Per accedere a tale pagina dal dashboard, selezionare Gruppi di risorse e quindi selezionare il gruppo di risorse usato per questo articolo.

  2. Nella pagina Gruppo di risorse esaminare l'elenco delle risorse incluse e verificare che siano quelle da eliminare.

  3. Selezionare Elimina gruppo di risorse e seguire le istruzioni.

    L'eliminazione potrebbe richiedere alcuni minuti. Al termine, viene visualizzata una notifica per pochi secondi. È anche possibile selezionare l'icona a forma di campana nella parte superiore della pagina per visualizzare la notifica.

Passaggi successivi