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 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 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, ad esempio 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 Nuovo selezionare 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 suggerito Descrizione
    Abbonamento Sottoscrizione in uso Sottoscrizione in cui viene creata questa nuova app per le funzioni.
    Gruppo di risorse myResourceGroup Il nome del nuovo gruppo di risorse in cui viene creata l'app per le funzioni.
    Nome dell'app per le funzioni Nome globalmente univoco Nome che identifica la nuova app per le funzioni. I caratteri validi sono a-z (senza distinzione tra maiuscole e minuscole), 0-9 e -.
    Pubblicazione Codice Scegliere di pubblicare file di codice o un contenitore Docker.
    Stack di runtime .NET In questa esercitazione viene usato .NET.
    Versione 6 (LTS) Questa esercitazione usa .NET 6.0 in esecuzione nello stesso processo dell'host funzioni.
    Area Area preferita Scegliere un'area nelle vicinanze o vicino 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 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 suggerito 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. 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 suggerito Descrizione
    Abilitare l'accesso pubblico Disattivato 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 Attivato 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 è attivata.
    Rete virtuale Crea nuovo 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 suggerito Descrizione
    Abilitare gli endpoint privati Attivato 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 Crea nuovo Questa opzione crea una nuova subnet per l'endpoint privato in ingresso. È possibile aggiungere più endpoint privati a una subnet singolare. Specificare un nome 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, Azure DNS privato Zone è la zona DNS da usare come manuale per le zone DNS personalizzate hanno una maggiore complessità.

    Immettere le impostazioni seguenti per la sezione Accesso in uscita. Questo passaggio integra l'app per le funzioni con una rete virtuale alla 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 passa per impostazione predefinita attraverso la rete virtuale.

    Impostazione Valore suggerito Descrizione
    Abilitare l'integrazione della rete virtuale Attivato 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 Crea nuovo 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 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 suggerito Descrizione
    Aggiungere un endpoint privato di archiviazione Attivato 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 Crea nuovo 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 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, Azure DNS privato Zona è 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 suggerito Descrizione
    Application Insights Predefiniti Creare una risorsa di Application Insights con lo stesso nome dell'app nell'area più vicina supportata. Espandere questa impostazione se è necessario modificare il nome della nuova risorsa o archiviare i dati in un percorso diverso 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 controllare 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.

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

Nota

Alcune distribuzioni possono occasionalmente 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

Successivamente, si crea un'istanza di 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. Selezionare Crea.

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

    Impostazione Valore suggerito Descrizione
    Abbonamento 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 di bus di servizio per cui è abilitato l'endpoint privato.
    Location myFunctionRegion Area in cui è stata creata l'app per le funzioni.
    Piano tariffario Premium Scegliere questo livello per usare 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 privato selezionare Endpoint privato.

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

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

    Impostazione Valore suggerito Descrizione
    Abbonamento 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 illustrate nella tabella seguente.

    Impostazione Valore suggerito Descrizione
    Abbonamento Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Tipo di risorsa Microsoft.ServiceBus/namespaces Tipo di risorsa per il bus di servizio.
    Conto risorse 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 default 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 bus di servizio e selezionare la scheda Accesso pubblico.

  8. Verificare che sia selezionata l'opzione Reti 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 della tabella seguente:

    Impostazione Valore suggerito Descrizione
    Abbonamento 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

    Consentire l'indirizzo IP del client è necessario per consentire al portale di Azure di 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 e la subnet selezionate 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.

Crea una coda

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

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

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

    Screenshot di come creare una coda di bus di servizio.

  3. Selezionare Crea.

Ottenere un bus di servizio stringa di connessione

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

  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 un bus di servizio stringa di connessione.

Configurare le impostazioni dell'app per le funzioni

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

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

    Impostazione Valore suggerito Descrizione
    SERVICEBUS_CONNECTION myServiceBusConnectionString Crea questa impostazione dell'app per il stringa di connessione del bus di servizio. Questa stringa di connessione di archiviazione proviene dalla sezione Ottenere un bus di servizio stringa di connessione.
    WEBSITE_CONTENTOVERVNET 1 Crea questa impostazione dell'app. Il valore 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 della funzione. Impostare Monitoraggio della scalabilità di runtime di runtime su . Quindi selezionare 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à guidata dal runtime per Funzioni di Azure.

Nota

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

Distribuire un trigger di bus di servizio e un trigger HTTP

Nota

L'abilitazione di endpoint privati in un'app per le funzioni rende accessibile pubblicamente il sito di Gestione controllo del codice sorgente (SCM). Le istruzioni seguenti forniscono indicazioni sulla distribuzione usando il Centro distribuzione all'interno dell'app per le funzioni. In alternativa, usare gli agenti zip deploy 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 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, nel menu a sinistra selezionare Centro distribuzione. Selezionare quindi Impostazioni.

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

    Impostazione Valore suggerito Descrizione
    Origine GitHub È necessario aver creato un repository GitHub per il codice di esempio nel passaggio 2.
    Azienda myOrganization L'organizzazione in cui è archiviato il repository. È in genere il tuo account.
    Repository functions-vnet-tutorial Repository copiato tramite fork 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. Seleziona 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 Operazione riuscita (attivo). Se necessario, aggiornare la pagina.

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

Testare l'app per le funzioni bloccata

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

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

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

  4. Selezionare la coda.

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

  6. Selezionare Invia per inviare il messaggio.

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

  7. Nella scheda Metriche attive si noterà che il trigger della coda di bus di servizio è stato attivato. In caso contrario, inviare di nuovo il messaggio da bus di servizio Explorer.

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

Complimenti. La configurazione 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. Ci si connette a un indirizzo IP privato anziché all'endpoint pubblico. I servizi di Azure esistenti sono configurati per l'uso di 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.

In questa esercitazione sono state create le zone DNS seguenti:

  • 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 bus di servizio. Tutte queste risorse sono protette da endpoint privati.

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