Condividi tramite


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 funzioni 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 elevato livello di attendibilità 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 per la funzione Python

Seguire l'esercitazione per creare un progetto di Funzioni di Azure locale. Quando richiesto, immettere le informazioni seguenti:

Prompt Selezione
Selezionare una lingua Scegliere Python. (Modello di linguaggio di programmazione v1)
Selezionare l'interprete Python per creare un ambiente virtuale Selezionare 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 Immettere 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.

Con queste informazioni, Visual Studio Code genera un progetto di funzione Python con coda di archiviazione di Azure come trigger. Il progetto locale si connette ad Archiviazione di Azure usando la stringa di connessione salvata nel file local.settings.json. Infine, la funzione main nel fil __init__.py della funzione può utilizzare la stringa di connessione con l'aiuto dell'associazione di funzioni definita nel file function.json.

Eseguire la funzione in locale

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

  1. Se viene richiesto di connettersi all'archiviazione, selezionare l'account di archiviazione scelto durante la creazione della risorsa funzione di Azure. 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 nel portale di Azure. Selezionare Aggiungi messaggio e specificare 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à quindi come configurare la connessione tra la funzione di Azure e la coda di archiviazione di Azure. Dopo aver distribuito la funzione nel cloud, questa connessione permette alla funzione di ricevere trigger dalla queue di archiviazione.

  1. Aprire il file function.json nel progetto locale e modificare il valore della proprietà connection in bindings a 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
  • --source-id formato: /subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
  • --target-id formato: /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 specificare un messaggio di test. La funzione dovrebbe essere attivata ed elaborata come elemento della coda nei log delle funzioni.

Risolvere problemi

Se sono presenti errori correlati all'host di archiviazione, ad esempio No such host is known (<account-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 nel portale di Azure, copiare la stringa di connessione dal riquadro Access keys 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 altre informazioni sui concetti di Service Connector e su come consente a Funzioni di Azure di connettersi ai servizi.