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
- Installare Visual Studio Code in una delle piattaforme supportate.
- Interfaccia della riga di comando di Azure. È possibile usarla in Azure Cloud Shell o installarla in locale.
- Un account di Archiviazione di Azure e un BLOB archiviazione. Se non si dispone di un account di archiviazione di Azure, crearne uno.
- Questa guida presuppone che si conoscano i concetti presentati nella Guida per sviluppatori di funzioni e in Come connettersi ai servizi in Funzioni.
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,
- aprire il file
BlobStorageInputFunc/function.json
e controllare che sia stata aggiunta una nuova associazione contype: blob
edirection: in
in questo file. - 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.
- 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.
- Per avviare la funzione in locale, premere
<kbd>
F5</kbd>
o selezionare l'icona Esegui con debug nella barra attività sul lato sinistro. - 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.
- Aprire il file
function.json
nel progetto locale, modificare il valore della proprietàconnection
inbindings
in modo che siaMyBlobInputConnection
. - 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.
- Seguire l'esercitazione per distribuire la funzione in Azure.
- 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.
- Nel portale di Azure aprire la risorsa App per le funzioni e selezionare Elimina.
- 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.