Esercitazione: Funzione Python con archiviazione code di Azure come trigger

In questa esercitazione si apprenderà come configurare una funzione Python con la coda di archiviazione come trigger completando le attività seguenti.

  • Usare Visual Studio Code per creare un progetto di funzione Python.
  • Usare Visual Studio Code per eseguire la funzione in locale.
  • Usare l'interfaccia della riga di comando di Azure per creare una connessione tra la funzione di Azure e la coda di archiviazione con Connettore di servizi.
  • Usare Visual Studio per distribuire la funzione.

Panoramica dei componenti del progetto di funzione in questa esercitazione:

Componente progetto Selezione/Soluzione
Servizio di origine Funzione di Azure
Servizio di destinazione Coda di archiviazione di Azure
Associazione di funzione Coda di archiviazione come trigger
Tipo di autenticazione del progetto locale Stringa di connessione
Tipo di autenticazione della funzione cloud Stringa di connessione

Avviso

Microsoft consiglia di usare il flusso di autenticazione più sicuro disponibile. Il flusso di autenticazione descritto in questa procedura richiede un livello di attendibilità molto elevato nell'applicazione e comporta rischi che non sono presenti in altri flussi. Si consiglia di usare questo flusso solo quando altri flussi più sicuri, come le identità gestite, non sono validi.

Prerequisiti

Creare un progetto di funzione Python

Seguire l'esercitazione per creare un progetto di Funzioni di Azure locale e fornire le informazioni seguenti quando richiesto:

Richiesta Selezione
Selezionare una lingua Scegliere Python. (Modello di linguaggio di programmazione v1)
Selezionare l'interprete Python per creare un ambiente virtuale Scegliere l'interprete Python preferito. Se un’opzione non viene visualizzata, digitare il percorso completo del file binario di Python.
Selezionare un modello per la prima funzione del progetto Scegliere Azure Queue Storage trigger.
Specificare un nome di funzione Immetti QueueStorageTriggerFunc.
Selezionare l'impostazione da "local.settings.json" Scegliere Create new local app settings, che consente di selezionare l'account di archiviazione e specificare il nome della coda che funziona come trigger.

È stato creato un progetto di funzione Python con Archiviazione di Azure Coda come trigger. Il progetto locale si connette ad Archiviazione di Azure usando la stringa di connessione salvata nel file local.settings.json. La funzione main nel file __init__.py della funzione può infine utilizzare la stringa di connessione con l'aiuto dell'associazione di funzione definita nel file function.json.

Eseguire la funzione in locale

Seguire l'esercitazione per eseguire la funzione in locale e verificare il trigger.

  1. Selezionare l'account di archiviazione scelto durante la creazione della risorsa funzione di Azure se viene richiesto di connettersi all'archiviazione. Questo valore viene usato per il runtime della funzione di Azure e non è necessariamente uguale all'account di archiviazione usato per il trigger.
  2. Per avviare la funzione in locale, premere <kbd>F5</kbd> o selezionare l'icona Esegui con debug nella barra attività sul lato sinistro.
  3. Per verificare il corretto funzionamento del trigger, mantenere la funzione in esecuzione in locale e aprire il riquadro Coda di archiviazione in portale di Azure, selezionare Aggiungi messaggio e fornire un messaggio di test. La funzione dovrebbe essere attivata ed elaborata come elemento della coda nel terminale di Visual Studio Code.

Creare una connessione con il Connettore di servizi

Nell'ultimo passaggio è stato verificato il progetto di funzione in locale. Si apprenderà ora come configurare la connessione tra la funzione di Azure e la coda di Archiviazione di Azure nel cloud, in modo che la funzione possa essere attivata dalla coda di archiviazione dopo essere stata distribuita nel cloud.

  1. Aprire il file function.json nel progetto locale, modificare il valore della proprietà connection in bindings in modo che sia AZURE_STORAGEQUEUE_CONNECTIONSTRING.
  2. Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per creare una connessione tra la funzione di Azure e l'account di archiviazione di Azure.
az functionapp connection create storage-queue --source-id "<your-function-resource-id>" --target-id "<your-storage-queue-resource-id>" --secret
  • Formato per --source-id: /subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • Formato per --target-id: /subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/queueServices/default

Questo passaggio crea una risorsa di Connettore di servizi che configura una variabile AZURE_STORAGEQUEUE_CONNECTIONSTRING nelle impostazioni dell'app della funzione. Il runtime di associazione di funzione la usa per connettersi all'archiviazione, in modo che la funzione possa accettare trigger dalla coda di archiviazione. Per altre informazioni, vedere il Modo in cui il Connettore di servizi consente a Funzioni di Azure di connettersi ai servizi.

Distribuire la funzione in Azure

È ora possibile distribuire la funzione in Azure e verificare il funzionamento del trigger della coda di archiviazione.

  1. Seguire questa esercitazione su Funzioni di Azure per distribuire la funzione in Azure.
  2. Aprire il riquadro Coda di archiviazione nel portale di Azure, selezionare Aggiungi messaggio e fornire un messaggio di test. La funzione dovrebbe essere attivata ed elaborata come elemento della coda nei log delle funzioni.

Risoluzione dei problemi

Se sono presenti errori correlati all'host di archiviazione, ad esempio No such host is known (<acount-name>.queue.core.windows.net:443), controllare se la stringa di connessione usata per connettersi ad Archiviazione di Azure contiene o meno l'endpoint della coda. In caso contrario, passare a Archiviazione di Azure nella portale di Azure, copiare il stringa di connessione dal Access keys riquadro e sostituire i valori.

Se questo errore si verifica quando si avvia il progetto in locale, controllare il file local.settings.json.

Se questo errore si verifica quando si distribuisce la funzione nel cloud (in questo caso, la distribuzione della funzione in genere ha esito negativo in Syncing triggers), controllare le impostazioni dell'app della funzione.

Pulire le risorse

Se non si intende continuare a usare questo progetto, eliminare la risorsa dell'app per le funzioni creata in precedenza.

  1. Nel portale di Azure aprire la risorsa App per le funzioni e selezionare Elimina.
  2. Immettere il nome dell'app e selezionare Elimina per confermare.

Passaggi successivi

Leggere gli articoli seguenti per ottenere altre informazioni sui concetti relativi al Connettore di servizi e sul modo in cui consente a Funzioni di Azure di connettersi ai servizi.