Condividi tramite


Esercitazione: Integrare Funzioni di Azure con una rete virtuale di Azure usando endpoint privati

Questa esercitazione illustra come usare Funzioni di Azure per connettersi alle risorse in una rete virtuale di Azure usando endpoint privati. Si crea una nuova app per le funzioni usando un nuovo account di archiviazione bloccato dietro una rete virtuale tramite il portale di Azure. La rete virtuale usa un trigger della coda del bus di servizio.

In questa esercitazione si apprenderà come:

  • Creare un'app per le funzioni nel piano Elastic Premium con l'integrazione della rete virtuale e gli endpoint privati.
  • Creare risorse di Azure, ad esempio il bus di servizio
  • Bloccare il bus di servizio dietro un endpoint privato.
  • Distribuire un'app per le funzioni che usa sia i trigger del bus di servizio che i trigger HTTP.
  • Testare per verificare che l'app per le funzioni sia sicura all'interno della rete virtuale.
  • Pulire le risorse.

Creare un'app per le funzioni in un piano Premium

Si crea un'app per le funzioni C# in un piano Elastic Premium, che supporta funzionalità di rete come l'integrazione della rete virtuale in fase di creazione insieme alla scalabilità serverless. Questa esercitazione usa C# e Windows. Sono supportati anche altri linguaggi e Linux.

  1. Nel menu portale di Azure o nella home page selezionare Crea una risorsa.

  2. Nella pagina Nuovoselezionare App per le>funzioni di calcolo.

  3. Nella pagina Informazioni di base usare la tabella seguente per configurare le impostazioni dell'app per le funzioni.

    Impostazione Valore consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui viene creata la nuova app per le funzioni.
    Gruppo di risorse myResourceGroup Nome del nuovo gruppo di risorse in cui si crea 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 Scegliere di pubblicare file di codice o un contenitore Docker.
    Stack di runtime .NET Questa esercitazione usa .NET.
    Versione 6 (LTS) Questa esercitazione usa .NET 6.0 in esecuzione nello stesso processo dell'host funzioni.
    Area Area preferita Scegliere un'area vicina ad altri servizi a cui accedono le funzioni.
    Sistema operativo Windows Questa esercitazione usa Windows, ma funziona anche per Linux.
    Piano Funzioni Premium Piano di hosting che definisce come vengono allocate le risorse all'app per le funzioni. Per impostazione predefinita, quando si seleziona Premium, viene creato un nuovo piano di servizio app. Lo SKU e le dimensioni predefinite sono EP1, dove EP è l'acronimo di Elastic Premium. Per altre informazioni, vedere l'elenco degli SKU Premium.

    Quando si eseguono funzioni JavaScript in un piano Premium, scegliere un'istanza con meno vCPU. Per altre informazioni, vedere Scegliere piani Premium con core singolo.
  4. Selezionare Avanti: Archiviazione. Nella pagina Archiviazione 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. Possono contenere solo numeri e lettere minuscole. È anche possibile usare un account esistente che non è limitato dalle regole del firewall e soddisfa i requisiti dell'account di archiviazione. Quando si usano Funzioni con un account di archiviazione bloccato, è necessario un account di archiviazione v2. Questa è la versione di archiviazione predefinita creata durante la creazione di un'app per le funzioni con funzionalità di rete tramite il pannello di creazione.
  5. Al termine, selezionare Avanti: Rete. Nella pagina Rete immettere le impostazioni seguenti.

    Nota

    Alcune di queste impostazioni non sono visibili finché non vengono selezionate altre opzioni.

    Impostazione Valore consigliato Descrizione
    Abilitare l'accesso pubblico Off Negare l'accesso alla rete pubblica bloccherà tutto il traffico in ingresso, ad eccezione del fatto che proviene da endpoint privati.
    Abilitare l'inserimento di rete On La possibilità di configurare l'applicazione con l'integrazione della rete virtuale al momento della creazione viene visualizzata nella finestra del portale dopo che questa opzione è stata attivata.
    Rete virtuale Creazione di un nuovo sito Selezionare il campo Crea nuovo . Nella schermata popup specificare un nome per la rete virtuale e selezionare Ok. Vengono visualizzate le opzioni per limitare l'accesso in ingresso e in uscita all'app per le funzioni in fase di creazione. È necessario abilitare in modo esplicito l'integrazione della rete virtuale nella parte accesso in uscita della finestra per limitare l'accesso in uscita.

    Immettere le impostazioni seguenti per la sezione Accesso in ingresso . Questo passaggio crea un endpoint privato nell'app per le funzioni.

    Suggerimento

    Per continuare a interagire con l'app per le funzioni dal portale, è necessario aggiungere il computer locale alla rete virtuale. Se non si vuole limitare l'accesso in ingresso, ignorare questo passaggio.

    Impostazione Valore consigliato Descrizione
    Abilitare gli endpoint privati On La possibilità di configurare l'applicazione con l'integrazione della rete virtuale al momento della creazione viene visualizzata nel portale dopo l'abilitazione di questa opzione.
    Nome endpoint privato myInboundPrivateEndpointName Nome che identifica il nuovo endpoint privato dell'app per le funzioni.
    Subnet in ingresso Creazione di un nuovo sito Questa opzione crea una nuova subnet per l'endpoint privato in ingresso. È possibile aggiungere più endpoint privati a una subnet singolare. Specificare un nome di subnet. Il blocco di indirizzi subnet può essere lasciato al valore predefinito. Selezionare OK. Per altre informazioni sul dimensionamento delle subnet, vedere Subnet.
    DNS Zona del DNS privato di Azure Questo valore indica il server DNS usato dall'endpoint privato. Nella maggior parte dei casi, se si lavora all'interno di Azure, La zona DNS privato di Azure è la zona DNS da usare come manuale per le zone DNS personalizzate ha aumentato la complessità.

    Immettere le impostazioni seguenti per la sezione Accesso in uscita . Questo passaggio integra l'app per le funzioni con una rete virtuale durante la creazione. Espone anche le opzioni per creare endpoint privati nell'account di archiviazione e limitare l'account di archiviazione dall'accesso alla rete alla creazione. Quando l'app per le funzioni è integrata nella rete virtuale, tutto il traffico in uscita per impostazione predefinita passa attraverso la rete virtuale.

    Impostazione Valore consigliato Descrizione
    Abilitare l'integrazione rete virtuale On Questa funzionalità integra l'app per le funzioni con una rete virtuale in caso di creazione e indirizzamento di tutto il traffico in uscita attraverso la rete virtuale.
    Subnet in uscita Creare un nuovo gruppo di risorse Verrà creata una nuova subnet per l'integrazione della rete virtuale dell'app per le funzioni. Un'app per le funzioni può essere integrata solo con una subnet vuota. Specificare un nome di subnet. Il blocco di indirizzi subnet può essere lasciato al valore predefinito. Se si vuole configurarlo, vedere Altre informazioni sul ridimensionamento della subnet qui. Selezionare OK. Viene visualizzata l'opzione per creare endpoint privati di archiviazione . Per usare l'app per le funzioni con reti virtuali, è necessario aggiungerla a una subnet.

    Immettere le impostazioni seguenti per la sezione Endpoint privato di archiviazione . Questo passaggio crea endpoint privati per gli endpoint BLOB, coda, file e tabella nell'account di archiviazione in fase di creazione. In questo modo l'account di archiviazione viene integrato in modo efficace con la rete virtuale.

    Impostazione Valore consigliato Descrizione
    Aggiungere un endpoint privato di archiviazione On La possibilità di configurare l'applicazione con l'integrazione della rete virtuale al momento della creazione viene visualizzata nel portale dopo l'abilitazione di questa opzione.
    Nome endpoint privato myInboundPrivateEndpointName Nome che identifica l'endpoint privato dell'account di archiviazione.
    Subnet dell'endpoint privato Creazione di un nuovo sito Verrà creata una nuova subnet per l'endpoint privato in ingresso nell'account di archiviazione. È possibile aggiungere più endpoint privati a una subnet singolare. Specificare un nome di subnet. Il blocco di indirizzi subnet può essere lasciato al valore predefinito. Se si vuole configurarlo, vedere Altre informazioni sul ridimensionamento della subnet qui. Selezionare OK.
    DNS Zona del DNS privato di Azure Questo valore indica il server DNS usato dall'endpoint privato. Nella maggior parte dei casi, se si lavora all'interno di Azure, La zona DNS privato di Azure è la zona DNS da usare come manuale per le zone DNS personalizzate avrà una maggiore complessità.
  6. Selezionare Avanti: Monitoraggio. Nella pagina Monitoraggio immettere le impostazioni seguenti.

    Impostazione Valore consigliato Descrizione
    Application Insights Predefinito Creare una risorsa di Application Insights con lo stesso nome dell'app nell'area supportata più vicina. Espandere questa impostazione se è necessario modificare il nome della nuova risorsa o archiviare i dati in un'altra località in un'area geografica di Azure.
  7. Selezionare Rivedi e crea per rivedere le selezioni effettuate per la configurazione dell'app.

  8. Nella pagina Rivedi e crea esaminare le impostazioni. Selezionare quindi Crea per creare e distribuire l'app per le funzioni.

  9. Nell'angolo in alto a destra del portale selezionare l'icona Notifiche e watch per il messaggio Distribuzione completata.

  10. 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.

Congratulazioni! L'app per le funzioni Premium è stata creata correttamente.

Nota

Alcune distribuzioni potrebbero non riuscire a creare gli endpoint privati nell'account di archiviazione con l'errore "StorageAccountOperationInProgress". Questo errore si verifica anche se l'app per le funzioni stessa viene creata correttamente. Quando si verifica un errore di questo tipo, eliminare l'app per le funzioni e ripetere l'operazione. È invece possibile creare manualmente gli endpoint privati nell'account di archiviazione.

Creare un bus di servizio

Verrà quindi creata un'istanza del bus di servizio usata per testare le funzionalità delle funzionalità di rete dell'app per le funzioni in questa esercitazione.

  1. Nel menu portale di Azure o nella home page selezionare Crea una risorsa.

  2. Nella pagina Nuovo cercare Bus di servizio. Quindi selezionare Crea.

  3. Nella scheda Informazioni di base usare la tabella seguente per configurare le impostazioni del bus di servizio. Tutte le altre impostazioni possono usare i valori predefiniti.

    Impostazione Valore consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Gruppo di risorse myResourceGroup Gruppo di risorse creato con l'app per le funzioni.
    Nome spazio dei nomi myServiceBus Nome dell'istanza del bus di servizio per cui è abilitato l'endpoint privato.
    Posizione myFunctionRegion Area in cui è stata creata l'app per le funzioni.
    Piano tariffario Premium Scegliere questo livello per usare gli endpoint privati con bus di servizio di Azure.
  4. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.

Bloccare il bus di servizio

Creare l'endpoint privato per bloccare il bus di servizio:

  1. Nel nuovo bus di servizio, nel menu a sinistra selezionare Rete.

  2. Nella scheda Connessioni endpoint private selezionare Endpoint privato.

    Screenshot di come passare agli endpoint privati per il bus di servizio.

  3. Nella scheda Nozioni di base usare le impostazioni dell'endpoint privato visualizzate nella tabella seguente.

    Impostazione Valore consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Gruppo di risorse myResourceGroup Gruppo di risorse creato con l'app per le funzioni.
    Nome sb-endpoint Nome dell'endpoint privato per il bus di servizio.
    Area myFunctionRegion Area in cui è stato creato l'account di archiviazione.
  4. Nella scheda Risorsa usare le impostazioni dell'endpoint privato visualizzate nella tabella seguente.

    Impostazione Valore consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Tipo di risorsa Microsoft.ServiceBus/namespaces Tipo di risorsa per il bus di servizio.
    Risorsa myServiceBus Il bus di servizio creato in precedenza nell'esercitazione.
    Sottorisorsa di destinazione namespace Endpoint privato usato per lo spazio dei nomi dal bus di servizio.
  5. Nella scheda Rete virtuale scegliere impostazione predefinita per l'impostazione Subnet.

  6. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.

  7. Dopo aver creato l'endpoint privato, tornare alla sezione Rete dello spazio dei nomi del bus di servizio e selezionare la scheda Accesso pubblico .

  8. Assicurarsi che le reti selezionate siano selezionate.

  9. Selezionare + Aggiungi rete virtuale esistente per aggiungere la rete virtuale creata di recente.

  10. Nella scheda Aggiungi reti usare le impostazioni di rete dalla tabella seguente:

    Impostazione Valore consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Reti virtuali myVirtualNet Nome della rete virtuale a cui si connette l'app per le funzioni.
    Subnet functions Nome della subnet a cui si connette l'app per le funzioni.
  11. Selezionare Aggiungi l'indirizzo IP client per concedere all'indirizzo IP client corrente l'accesso allo spazio dei nomi.

    Nota

    È necessario consentire all'indirizzo IP client di abilitare l'portale di Azure per pubblicare messaggi nella coda più avanti in questa esercitazione.

  12. Selezionare Abilita per abilitare l'endpoint del servizio.

  13. Selezionare Aggiungi per aggiungere la rete virtuale selezionata e la subnet alle regole del firewall per il bus di servizio.

  14. Selezionare Salva per salvare le regole del firewall aggiornate.

Le risorse nella rete virtuale possono ora comunicare con il bus di servizio usando l'endpoint privato.

Creare una coda

Creare la coda in cui il trigger del bus di servizio Funzioni di Azure ottiene eventi:

  1. Nel bus di servizio selezionare Code nel menu a sinistra.

  2. Selezionare Coda. Ai fini di questa esercitazione, specificare la coda dei nomi come nome della nuova coda.

    Screenshot di come creare una coda del bus di servizio.

  3. Selezionare Crea.

Ottenere una stringa di connessione del bus di servizio

  1. Nel bus di servizio selezionare Criteri di accesso condiviso nel menu a sinistra.

  2. Selezionare RootManageSharedAccessKey. Copiare e salvare la stringa di connessione primaria. Questa stringa di connessione è necessaria quando si configurano le impostazioni dell'app.

    Screenshot di come ottenere una stringa di connessione del bus di servizio.

Configurare le impostazioni dell'app per le funzioni

  1. Nell'app per le funzioni selezionare Configurazione nel menu a sinistra.

  2. Per usare l'app per le funzioni con reti virtuali e bus di servizio, aggiornare le impostazioni dell'app visualizzate nella tabella seguente. Per aggiungere o modificare un'impostazione, selezionare + Nuova impostazione dell'applicazione o l'icona Modifica nella colonna più a destra della tabella delle impostazioni dell'app. Al termine, selezionare Salva.

    Impostazione Valore consigliato Descrizione
    SERVICEBUS_CONNECTION myServiceBusConnectionString Creare questa impostazione dell'app per la stringa di connessione del bus di servizio. Questa stringa di connessione di archiviazione proviene dalla sezione Recupera una stringa di connessione del bus di servizio .
    WEBSITE_CONTENTOVERVNET 1 Creare questa impostazione dell'app. Un valore pari a 1 consente all'app per le funzioni di ridimensionare quando l'account di archiviazione è limitato a una rete virtuale.
  3. Poiché si usa un piano di hosting Elastic Premium, nella visualizzazione Configurazione selezionare la scheda Impostazioni runtime funzione . Impostare Monitoraggio scalabilità di runtime su Attivato. Selezionare quindi Salva. Il ridimensionamento basato sul runtime consente di connettere funzioni trigger non HTTP ai servizi eseguiti all'interno della rete virtuale.

    Screenshot di come abilitare la scalabilità basata su runtime per Funzioni di Azure.

Nota

Il ridimensionamento del runtime non è necessario per le app per le funzioni ospitate in un piano di servizio app dedicato.

Distribuire un trigger del bus di servizio e un trigger HTTP

Nota

L'abilitazione di endpoint privati in un'app per le funzioni rende anche il sito di Gestione controllo del codice sorgente (SCM) accessibile pubblicamente. Le istruzioni seguenti forniscono indicazioni sulla distribuzione usando il Centro distribuzione all'interno dell'app per le funzioni. In alternativa, usare gli agenti di distribuzione zip o self-hosted distribuiti in una subnet nella rete virtuale.

  1. In GitHub passare al repository di esempio seguente. Contiene un'app per le funzioni e due funzioni, un trigger HTTP e un trigger della coda del bus di servizio.

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

  2. Nella parte superiore della pagina selezionare Fork per creare un fork di questo repository nell'account GitHub o nell'organizzazione.

  3. Nell'app per le funzioni selezionare Centro distribuzione nel menu a sinistra. Selezionare quindi Impostazioni.

  4. Nella scheda Impostazioni usare le impostazioni di distribuzione visualizzate nella tabella seguente.

    Impostazione Valore consigliato Descrizione
    Origine GitHub È necessario creare un repository GitHub per il codice di esempio nel passaggio 2.
    Organizzazione myOrganization Il repository viene controllato dall'organizzazione. È in genere il tuo account.
    Repository functions-vnet-tutorial Il repository forked da https://github.com/Azure-Samples/functions-vnet-tutorial.
    Ramo main Ramo principale del repository creato.
    Stack di runtime .NET Il codice di esempio è in C#.
    Versione .NET Core 3.1 Versione di runtime.
  5. Selezionare Salva.

    Screenshot di come distribuire Funzioni di Azure codice tramite il portale.

  6. La distribuzione iniziale potrebbe richiedere alcuni minuti. Quando l'app viene distribuita correttamente, nella scheda Log viene visualizzato un messaggio di stato Success (Active). Se necessario, aggiornare la pagina.

Congratulazioni! L'app per le funzioni di esempio è stata distribuita correttamente.

Testare l'app per le funzioni bloccata

  1. Nell'app per le funzioni selezionare Funzioni nel menu a sinistra.

  2. Selezionare ServiceBusQueueTrigger.

  3. Scegliere Monitoraggio dal menu a sinistra.

Si noterà che non è possibile monitorare l'app. Il browser non ha accesso alla rete virtuale, quindi non può accedere direttamente alle risorse all'interno della rete virtuale.

Ecco un modo alternativo per monitorare la funzione usando Application Insights:

  1. Nell'app per le funzioni selezionare Application Insights nel menu a sinistra. Selezionare quindi Visualizza i dati di Application Insights.

    Screenshot di come visualizzare application insights per un'app per le funzioni.

  2. Nel menu a sinistra selezionare Metriche live.

  3. Aprire una nuova scheda. Nel bus di servizio selezionare Code nel menu a sinistra.

  4. Selezionare la coda.

  5. Nel menu a sinistra selezionare Esplora bus di servizio. In Invia, per Tipo di contenuto, scegliere Testo/normale. Immettere quindi un messaggio.

  6. Selezionare Invia per inviare il messaggio.

    Screenshot di come inviare messaggi del bus di servizio usando il portale.

  7. Nella scheda Metriche live si noterà che il trigger della coda del bus di servizio è stato attivato. Se non è stato eseguito, inviare nuovamente il messaggio da Esplora bus di servizio.

    Screenshot di come visualizzare i messaggi usando le metriche live per le app per le funzioni.

Congratulazioni! L'installazione dell'app per le funzioni è stata testata correttamente con endpoint privati.

Informazioni sulle zone DNS private

È stato usato un endpoint privato per connettersi alle risorse di Azure. Si sta connettendo a un indirizzo IP privato anziché all'endpoint pubblico. I servizi di Azure esistenti sono configurati per usare un DNS esistente per connettersi all'endpoint pubblico. È necessario eseguire l'override della configurazione DNS per connettersi all'endpoint privato.

Viene creata una zona DNS privata per ogni risorsa di Azure configurata con un endpoint privato. Viene creato un record DNS per ogni indirizzo IP privato associato all'endpoint privato.

Le zone DNS seguenti sono state create in questa esercitazione:

  • privatelink.file.core.windows.net
  • privatelink.blob.core.windows.net
  • privatelink.servicebus.windows.net
  • privatelink.azurewebsites.net

Pulire le risorse

Nei passaggi precedenti sono state create risorse di Azure in un gruppo di risorse. Se non si prevede di aver bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse.

Nel menu del portale di Azure o nella pagina Home selezionare Gruppi di risorse. Quindi, nella pagina Gruppi di risorse selezionare myResourceGroup.

Nella pagina myResourceGroup assicurarsi che le risorse elencate siano quelle da eliminare.

Selezionare Elimina gruppo di risorse, digitare myResourceGroup nella casella di testo per confermare e quindi selezionare Elimina.

Passaggi successivi

In questa esercitazione è stata creata un'app per le funzioni Premium, un account di archiviazione e un bus di servizio. Tutte queste risorse sono state protette dietro endpoint privati.

Usare i collegamenti seguenti per altre informazioni Funzioni di Azure opzioni di rete e endpoint privati: