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 usando 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 integrazione della rete virtuale ed 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 usi 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, 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 del portale di Azure o nella Home page, selezionare Crea una risorsa.

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

  3. Nella pagina Dati principali, 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 questa nuova app per le funzioni.
    Gruppo di risorse il mio gruppo di risorse 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 -.
    Pubblica 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 di servizio app. Il valore predefinito di SKU e dimensioni è EP1, in cui EP sta per 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 versione è la versione di archiviazione predefinita creata durante la creazione di un'app per le funzioni con funzionalità di rete tramite il portale di Azure.
  5. Selezionare Passaggio successivo: Rete. Nella pagina Rete, immettere le impostazioni seguenti.

    Note

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

    Impostazione Valore consigliato Descrizione
    Abilitare l'accesso pubblico Disattivato Negare l'accesso alla rete pubblica blocca tutto il traffico in ingresso, tranne che proveniente da endpoint privati.
    Abilitare l'aggiunta 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 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 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 di Azure, è 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 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 dell'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 subnet. Il blocco di indirizzi subnet potrebbe 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, poiché le zone DNS personalizzate sono più complesse.

    Immettere le impostazioni seguenti per la sezione Accesso in uscita. Questo passaggio integra l'app per le funzioni con una rete virtuale alla creazione. Inoltre, offre opzioni per creare endpoint privati nel proprio account di archiviazione e per limitarne l’accesso di rete durante la 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 consigliato Descrizione
    Abilitare l'integrazione rete virtuale Attivato Questa impostazione consente di integrare l'app per le funzioni con una rete virtuale durante la creazione e instradare tutto il traffico in uscita attraverso la rete virtuale.
    Subnet in uscita Creare un nuovo gruppo di risorse Questa impostazione crea una nuova subnet per l'integrazione della rete virtuale dell'app di funzioni. Un'app per le funzioni può essere integrata solo con una rete virtuale su una subnet vuota. Specificare un nome subnet. Il blocco di indirizzi subnet potrebbe essere lasciato al valore predefinito. 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. Questo approccio integra efficacemente l'account di archiviazione con la rete virtuale.

    Impostazione Valore consigliato Descrizione
    Aggiungere 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 dell'endpoint privato myInboundPrivateEndpointName Nome che identifica l'endpoint privato dell'account di archiviazione.
    Subnet dell'endpoint privato Creazione di un nuovo sito Questa impostazione crea 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 potrebbe essere lasciato al valore predefinito. 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, poiché le zone DNS personalizzate sono più complesse.
  6. 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. Espandere questa impostazione se si necessita di modificare il nome della nuova risorsa o archiviare i dati in una posizione diversa in una geografia 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. Quindi, selezionare quindi Crea per creare e distribuire l'app per le funzioni.

  9. Selezionare l'icona Notifiche nell'angolo superiore destro del portale e attendere che venga visualizzato il messaggio Distribuzione riuscita.

  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! Hai creato con successo la tua app Premium per le funzionalità.

Note

Alcune distribuzioni potrebbero talvolta 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. Creare invece gli endpoint privati manualmente nell'account di archiviazione.

Creare un bus di servizio

Successivamente, si creerà 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 del portale di Azure o nella Home page, selezionare Crea una risorsa.

  2. Nella pagina Nuovo, cercare bus di servizio. Selezionare quindi Crea.

  3. Nella scheda Dati principali, usare la tabella seguente per configurare le impostazioni di 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 il mio gruppo di risorse 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.
    Posizione myFunctionRegion Area in cui è stata creata l'app per le funzioni.
    Piano tariffario Di alta qualità 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 consigliato Descrizione
    Sottoscrizione Sottoscrizione in uso Sottoscrizione in cui vengono create le risorse.
    Gruppo di risorse il mio gruppo di risorse 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 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 spazio dei nomi Endpoint privato usato per lo spazio dei nomi dal bus di servizio.
  5. Nella scheda Rete virtuale, per l'impostazione Subnet, scegliere default.

  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. Verificare che l'opzione Reti selezionate sia selezionata.

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

  10. Nella scheda Aggiungi reti, usare le impostazioni di rete della 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 Funzioni 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.

    Note

    Consentire l'accesso all'indirizzo IP del client è necessario perché il portale di Azure possa 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.

Creare 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 il nome codacome nome della nuova coda.

    Screenshot di come creare una coda del bus di servizio.

  3. Selezionare Crea.

Importante

Questa esercitazione illustra a questo punto come connettersi a bus di servizio usando un stringa di connessione, il che richiede la gestione di un segreto di condivisione. Per maggiore sicurezza, è consigliabile usare invece le identità gestite per la connessione a bus di servizio dall'app. Per altre informazioni, vedere Connessioni basate su identità nell'articolo di riferimento sull'associazione bus di servizio.

Ottenere una stringa di connessione del bus di servizio

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

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 consigliato Descrizione
    SERVICEBUS_CONNECTION myServiceBusConnectionString Creare questa impostazione dell'app per il stringa di connessione del bus di servizio. Questa stringa di connessione di archiviazione proviene dalla sezione Ottenere una stringa di connessione del bus di servizio.
    WEBSITE_CONTENTOVERVNET 1 Crea questa impostazione dell'app. Il valore 1 consente all'app per le funzioni di eseguire un ridimensionamento 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 su . 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 il ridimensionamento guidato dal runtime per Funzioni di Azure.

Note

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

Distribuire un trigger di bus di servizio e un trigger HTTP

Note

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 tramite 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, selezionare Centro distribuzione nel menu a sinistra. Selezionare quindi Impostazioni.

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

    Impostazione Valore consigliato Descrizione
    Origine GitHub È necessario aver creato un repository GitHub per il codice di esempio nel passaggio 2.
    Organizzazione myOrganization L'organizzazione in cui è archiviato il repository. Si tratta generalmente dell'account dell'utente.
    Deposito functions-vnet-tutorial Repository di cui è stato eseguito il fork da https://github.com/Azure-Samples/functions-vnet-tutorial.
    Ramo principale 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 codice di Funzioni di Azure 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.

Congratulazioni! L'app per le funzioni campione è stata distribuita con successo.

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 metodo alternativo per monitorare la funzione usando Application Insights:

  1. Nell'app per le funzioni, selezionare Application Insights nel menu a sinistra. Quindi, selezionare 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 Explorer del 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 attive si dovrebbe notare che il trigger della coda di messaggi del bus di servizio è stato attivato. In caso contrario, inviare di nuovo il messaggio da Service Bus Explorer.

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

Congratulazioni! Hai testato con successo la configurazione della tua app di funzione 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 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.

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 avere bisogno di queste risorse in futuro, è possibile eliminarle eliminando il gruppo di risorse:

  1. Nel menu del portale di Azure o nella home page selezionare Gruppi >myResourceGroup.

  2. Nel riquadro myResourceGroup verificare che le risorse elencate siano quelle da eliminare.

  3. 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: