Share via


Esercitazione: Usare connessioni basate su identità anziché segreti con trigger e associazioni

Questa esercitazione illustra come configurare Funzioni di Azure per connettersi alle code di bus di servizio di Azure usando identità gestite anziché segreti archiviati nelle impostazioni dell'app per le funzioni. L'esercitazione è una continuazione dell'esercitazione Creare un'app per le funzioni senza segreti di archiviazione predefiniti nell'esercitazione sulla definizione . Per altre informazioni sulle connessioni basate sull'identità, vedere Configurare una connessione basata su identità.

Anche se le procedure illustrate funzionano in genere per tutti i linguaggi, questa esercitazione supporta attualmente le funzioni della libreria di classi C# in Windows in modo specifico.

In questa esercitazione si apprenderà come:

  • Creare uno spazio dei nomi del bus di servizio e una coda
  • Configurare l'app per le funzioni con identità gestita
  • Creare un'assegnazione di ruolo concedendo a tale identità l'autorizzazione per la lettura dalla coda del bus di servizio
  • Creare e distribuire un'app per le funzioni con un trigger del bus di servizio.
  • Verificare la connessione basata sull'identità al bus di servizio

Prerequisito

Completare l'esercitazione precedente: Creare un'app per le funzioni con connessioni basate su identità.

Creare un bus di servizio e una coda

  1. Nella portale di Azure scegliere Crea una risorsa (+).

  2. Nella pagina Crea una risorsa selezionare Bus diserviziodi integrazione>.

  3. Nella pagina Informazioni di base usare la tabella seguente per configurare le impostazioni dello spazio dei nomi del bus di servizio. Usare i valori predefiniti per le opzioni rimanenti.

    Opzione 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 Nome univoco a livello globale Spazio dei nomi dell'istanza da cui attivare la funzione. Poiché lo spazio dei nomi è accessibile pubblicamente, è necessario usare un nome univoco a livello globale in Azure. Il nome deve anche avere una lunghezza compresa tra 6 e 50 caratteri, contenere solo caratteri alfanumerici e trattini e non può iniziare con un numero.
    Posizione myFunctionRegion Area in cui è stata creata l'app per le funzioni.
    Piano tariffario Basic Livello di base del bus di servizio.
  4. Selezionare Rivedi e crea. Al termine della convalida, selezionare Crea.

  5. Al completamento della distribuzione, selezionare Vai alla risorsa.

  6. Nel nuovo spazio dei nomi del bus di servizio selezionare + Coda per aggiungere una coda.

  7. Digitare myinputqueue come nome della nuova coda e selezionare Crea.

Ora che si dispone di una coda, si aggiungerà un'assegnazione di ruolo all'identità gestita dell'app per le funzioni.

Configurare il trigger del bus di servizio con un'identità gestita

Per usare i trigger del bus di servizio con connessioni basate su identità, è necessario aggiungere l'assegnazione di ruolo bus di servizio di Azure ricevitore dati all'identità gestita nell'app per le funzioni. Questo ruolo è necessario quando si usano le identità gestite per attivare lo spazio dei nomi del bus di servizio. È anche possibile aggiungere un proprio account a questo ruolo, che consente di connettersi allo spazio dei nomi del bus di servizio durante il test locale.

Nota

I requisiti del ruolo per l'uso delle connessioni basate sull'identità variano a seconda del servizio e del modo in cui ci si connette. Le esigenze variano tra trigger, associazioni di input e associazioni di output. Per altre informazioni sui requisiti specifici del ruolo, vedere la documentazione relativa al trigger e all'associazione per il servizio.

  1. Nello spazio dei nomi del bus di servizio appena creato selezionare Controllo di accesso (IAM). Qui è possibile visualizzare e configurare chi può accedere alla risorsa.

  2. Fare clic su Aggiungi e selezionare Aggiungi assegnazione di ruolo.

  3. Cercare bus di servizio di Azure Ricevitore dati, selezionarlo e fare clic su Avanti.

  4. Nella scheda Membri scegliere Identità gestita in Assegna accesso a

  5. Fare clic su Seleziona membri per aprire il pannello Seleziona identità gestite .

  6. Verificare che la sottoscrizione sia quella in cui sono state create le risorse in precedenza.

  7. Nel selettore identità gestita scegliere App per le funzioni dalla categoria Identità gestita assegnata dal sistema . L'etichetta "App per le funzioni" può avere un numero tra parentesi accanto, che indica il numero di app nella sottoscrizione con identità assegnate dal sistema.

  8. L'app dovrebbe essere visualizzata in un elenco sotto i campi di input. Se non viene visualizzata, è possibile usare la casella Seleziona per filtrare i risultati con il nome dell'app.

  9. Fare clic sull'applicazione. Dovrebbe spostarsi verso il basso nella sezione Membri selezionati . Fare clic su Seleziona.

  10. Nella schermata Aggiungi assegnazione di ruolo fare clic su Rivedi e assegna. Esaminare la configurazione e quindi fare clic su Rivedi e assegna.

È stato concesso all'app per le funzioni l'accesso allo spazio dei nomi del bus di servizio usando le identità gestite.

Connettersi al bus di servizio nell'app per le funzioni

  1. Nel portale cercare l'app per le funzioni creata nell'esercitazione precedente oppure passare alla pagina App per le funzioni.

  2. Nell'app per le funzioni selezionare Configurazione in Impostazioni.

  3. In Impostazioni applicazione selezionare + Nuova impostazione applicazione per creare la nuova impostazione nella tabella seguente.

    Nome Valore Descrizione
    ServiceBusConnection__fullyQualifiedNamespace <>SERVICE_BUS_NAMESPACE.servicebus.windows.net Questa impostazione connette l'app per le funzioni al bus di servizio usando una connessione basata su identità anziché i segreti.
  4. Dopo aver creato le due impostazioni, selezionare Salva>conferma.

Nota

Quando si usano Configurazione app di Azure o Key Vault per fornire le impostazioni per le connessioni identità gestite, i nomi delle impostazioni devono usare un separatore di chiavi valido, : ad esempio o / al posto di __ per garantire che i nomi vengano risolti correttamente.

Ad esempio, ServiceBusConnection:fullyQualifiedNamespace.

Dopo aver preparato l'app per le funzioni per connettersi allo spazio dei nomi del bus di servizio usando un'identità gestita, è possibile aggiungere una nuova funzione che usa un trigger del bus di servizio al progetto locale.

Aggiungere una funzione attivata dal bus di servizio

  1. Eseguire il comando func init come indicato di seguito per creare un progetto di Funzioni in una cartella denominata LocalFunctionProj con il runtime specificato:

    func init LocalFunctionProj --dotnet
    
  2. Passare alla cartella del progetto:

    cd LocalFunctionProj
    
  3. Nella cartella del progetto radice eseguire i comandi seguenti:

    dotnet add package Microsoft.Azure.WebJobs.Extensions.ServiceBus --version 5.2.0
    

    In questo modo viene sostituita la versione predefinita del pacchetto di estensione del bus di servizio con una versione che supporta le identità gestite.

  4. Eseguire il comando seguente per aggiungere una funzione attivata dal bus di servizio al progetto:

    func new --name ServiceBusTrigger --template ServiceBusQueueTrigger 
    

    In questo modo viene aggiunto il codice per un nuovo trigger del bus di servizio e un riferimento al pacchetto di estensione. È necessario aggiungere un'impostazione di connessione dello spazio dei nomi del bus di servizio per questo trigger.

  5. Aprire il nuovo file di progetto ServiceBusTrigger.cs e sostituire la ServiceBusTrigger classe con il codice seguente:

    public static class ServiceBusTrigger
    {
        [FunctionName("ServiceBusTrigger")]
        public static void Run([ServiceBusTrigger("myinputqueue", 
            Connection = "ServiceBusConnection")]string myQueueItem, ILogger log)
        {
            log.LogInformation($"C# ServiceBus queue trigger function processed message: {myQueueItem}");
        }
    }
    

    Questo esempio di codice aggiorna il nome della coda a myinputqueue, che corrisponde allo stesso nome della coda creata in precedenza. Imposta anche il nome della connessione del bus di servizio su ServiceBusConnection. Si tratta dello spazio dei nomi del bus di servizio usato dalla connessione ServiceBusConnection__fullyQualifiedNamespace basata su identità configurata nel portale.

Nota

Se si tenta di eseguire le funzioni ora usando func start si riceverà un errore. Ciò è dovuto al fatto che non è stata definita una connessione basata su identità in locale. Se si vuole eseguire la funzione in locale, impostare l'impostazione ServiceBusConnection__fullyQualifiedNamespace dell'app in local.settings.json come è stato fatto nella sezione precedente. Sarà anche necessario assegnare il ruolo all'identità dello sviluppatore. Per altre informazioni, vedere la documentazione relativa allo sviluppo locale con connessioni basate sulle identità.

Nota

Quando si usano Configurazione app di Azure o Key Vault per fornire le impostazioni per le connessioni identità gestite, i nomi delle impostazioni devono usare un separatore di chiavi valido, : ad esempio o / al posto di __ per garantire che i nomi vengano risolti correttamente.

Ad esempio, ServiceBusConnection:fullyQualifiedNamespace.

Pubblicare il progetto aggiornato

  1. Eseguire il comando seguente per generare localmente i file necessari per il pacchetto di distribuzione:

    dotnet publish --configuration Release
    
  2. Passare alla \bin\Release\netcoreapp3.1\publish sottocartella e creare un file .zip dal relativo contenuto.

  3. Pubblicare il file .zip eseguendo il comando seguente, sostituendo i FUNCTION_APP_NAMEparametri , RESOURCE_GROUP_NAMEe PATH_TO_ZIP in base alle esigenze:

    az functionapp deploy -n FUNCTION_APP_NAME -g RESOURCE_GROUP_NAME --src-path PATH_TO_ZIP
    

Dopo aver aggiornato l'app per le funzioni con il nuovo trigger, è possibile verificare che funzioni usando l'identità.

Convalidare le modifiche

  1. Nel portale cercare Application Insights e selezionare Application Insights in Servizi.

  2. In Application Insights individuare o cercare l'istanza denominata.

  3. Nell'istanza selezionare Metriche attive in Analisi.

  4. Mantenere aperta la scheda precedente e aprire il portale di Azure in una nuova scheda. Nella nuova scheda passare allo spazio dei nomi del bus di servizio, selezionare Code nel pannello sinistro.

  5. Selezionare la coda denominata myinputqueue.

  6. Selezionare Service Bus Explorer (Esplora bus di servizio ) nel pannello sinistro.

  7. Inviare un messaggio di test.

  8. Selezionare la scheda Live Metrics (Metriche attive ) e visualizzare l'esecuzione della coda del bus di servizio.

Congratulazioni! Il trigger della coda del bus di servizio è stato configurato correttamente con un'identità gestita.

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 con connessioni basate su identità.

Usare i collegamenti seguenti per altre Funzioni di Azure con le connessioni basate sull'identità: