Condividi tramite


Esercitazione: Funzione Python con Archiviazione BLOB di Azure come input

Questa esercitazione illustra come configurare una funzione Python con l'archiviazione BLOB di Azure come input completando le attività seguenti:

  • Usare Visual Studio Code per creare un progetto di funzione Python.
  • Modificare il codice per aggiungere l'associazione di funzione di input nel BLOB del servizio di archiviazione.
  • 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 il BLOB 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 BLOB del servizio di archiviazione di Azure
Associazione di funzione Trigger HTTP, BLOB di archiviazione come input
Tipo di autenticazione del progetto locale Stringa di connessione
Tipo di autenticazione della funzione cloud Identità gestita assegnata dal sistema

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 HTTP trigger.
Specificare un nome di funzione Immetti BlobStorageInputFunc.
Livello di autorizzazione Scegliere Anonymous, che consente a chiunque di chiamare l'endpoint della funzione. 

È stato creato un progetto di funzione Python con un HTTP come trigger.

Aggiungere un associazione di input per l'archiviazione BLOB

Gli attributi di associazione vengono definiti nel file function.json per una determinata funzione. Per creare un'associazione, fare clic con il pulsante destro del mouse (CTRL+clic in macOS) sul file function.json nella cartella HttpTrigger e scegliere Aggiungi binding. Seguire i prompt per definire le proprietà seguenti per il nuovo binding:

Richiesta Valore Descrizione
Selezionare la direzione di binding in L'associazione è un'associazione di input.
Selezionare il binding con direzione Azure Blob Storage L'associazione è un'associazione del BLOB di archiviazione di Azure.
Il nome usato per identificare questo binding nel codice inputBlob Nome che identifica il parametro di binding a cui viene fatto riferimento nel codice.
Percorso nell'account di archiviazione in cui verrà eseguita la lettura del BLOB testcontainer/test.txt Il percorso del BLOB che la funzione legge come input. Preparare un file denominato test.txt, con Hello, World! come contenuto file. Creare un contenitore denominato testcontainer e caricare il file nel contenitore.
Selezionare l'impostazione da "local.setting.json" Create new local app settings Selezionare l'account di archiviazione che la funzione legge come input. Visual Studio Code recupera la stringa di connessione per la connessione locale del progetto.

Per verificare che l'associazione sia stata aggiunta correttamente,

  1. aprire il file BlobStorageInputFunc/function.json e controllare che sia stata aggiunta una nuova associazione con type: blob e direction: in in questo file.
  2. Aprire il file local.settings.json e verificare che sia stato aggiunto una nuova coppia chiave-valore <your-storage-account-name>_STORAGE: <your-storage-account-connection-string> che contiene la stringa di connessione dell'account di archiviazione in questo file.

Una volta aggiunta l'associazione, aggiornare i codici della funzione per utilizzare l'associazione sostituendo BlobStorageInputFunc/__init__.py con il file Python qui.

import logging
import azure.functions as func

def main(req: func.HttpRequest, inputBlob: bytes) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')
    return func.HttpResponse('The triggered function executed successfully. And read blob content: {}'.format(inputBlob))

Eseguire la funzione in locale

Seguire l'esercitazione per eseguire la funzione in locale e verificare l'input dal BLOB.

  1. Selezionare l'account di archiviazione usato durante la creazione della risorsa funzione di Azure se viene richiesto di connettersi all'archiviazione. È destinato all'uso interno del runtime di Funzione di Azure e non deve necessariamente corrispondere a quello utilizzato per l'input.
  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 che la funzione possa leggere il blob, fare clic con il tasto destro su Exucute Function Now... nella sezione WORKSPACE di Visual Studio Code e verificare la risposta della funzione. Il messaggio di risposta deve contenere il contenuto del file BLOB.

Creare una connessione con il Connettore di servizi

Si è appena eseguito il progetto e verificata la funzione localmente, e il progetto locale si connette al BLOB di archiviazione usando una stringa di connessione.

Si apprenderà ora come configurare la connessione tra la funzione di Azure e Archiviazione BLOB di Azure, in modo che la funzione possa essere dal BLOB dopo essere stata distribuita nel cloud. Nell'ambiente cloud, si apprenderà come autenticarsi usando un'identità gestita assegnata al sistema.

  1. Aprire il file function.json nel progetto locale, modificare il valore della proprietà connection in bindings in modo che sia MyBlobInputConnection.
  2. Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per creare una connessione tra la funzione di Azure e Archiviazione di Azure.
az functionapp connection create storage-blob --source-id "<your-function-resource-id>" --target-id "<your-storage-blob-resource-id>" --system-identity --customized-keys AZURE_STORAGEBLOB_RESOURCEENDPOINT=MyBlobInputConnection__serviceUri
  • Formato --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}/blobServices/default

Si è creato un collegamento tra Funzione di Azure e Archiviazione BLOB di Azure usando Connettore di servizi, con un'identità gestita assegnata al sistema.

Connettore di servizi ha configurato una variabile MyBlobInputConnection__serviceUri nelle impostazioni dell'app della funzione, utilizzata dal runtime di associazione della funzione per connettersi all'archiviazione, in modo che la funzione possa leggere i dati dall'archiviazione BLOB. 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 dell'associazione di input nel BLOB del servizio di archiviazione.

  1. Seguire l'esercitazione per distribuire la funzione in Azure.
  2. Per verificare che la funzione possa leggere il blob, fare clic con il tasto destro su Exucute Function Now... nella vista RESOURCES di Visual Studio Code e verificare la risposta della funzione. Il messaggio di risposta deve contenere il contenuto del file BLOB.

Risoluzione dei problemi

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

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

Se l'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 ad altri servizi cloud.