Esercitazione: Funzione Python con Archiviazione BLOB di Azure come input
Questa esercitazione illustra come configurare una funzione Python con Archiviazione BLOB come input completando le attività seguenti:
- Usare Visual Studio Code per creare un progetto di funzione Python.
- Modificare i codici per aggiungere l'associazione di funzioni di input del BLOB 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 Archiviazione BLOB con service Connessione or.
- 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 funzioni | Trigger HTTP, BLOB Archiviazione come input |
Tipo di autenticazione progetto locale | Stringa di connessione |
Tipo di autenticazione della funzione cloud | Identità gestita assegnata dal sistema |
Prerequisiti
- Installare Visual Studio Code in una delle piattaforme supportate.
- Interfaccia della riga di comando di Azure. È possibile usarlo in Azure Cloud Shell o installarlo in locale.
- Un account Archiviazione di Azure e un BLOB di Archiviazione. Se non si ha un account Archiviazione di Azure, crearne uno.
- Questa guida presuppone che si conoscano i concetti presentati nella guida per sviluppatori di Funzioni e 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 alle richieste:
Richiesta | Selezione |
---|---|
Selezionare una lingua | Scegliere Python . (modello di linguaggio di programmazione v1) |
Selezionare un interprete Python per creare un ambiente virtuale | Scegliere l'interprete Python preferito. Se non viene visualizzata un'opzione, digitare il percorso completo del file binario 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 trigger HTTP.
Aggiungere un'associazione di input 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 su macOS) sul function.json
file nella cartella della funzione e scegliere Aggiungi associazione... . 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 BLOB 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 all'interno dell'account di archiviazione da cui verrà letto il BLOB | testcontainer/test.txt |
Percorso BLOB letto come input dalla funzione. Preparare un file denominato test.txt , con come Hello, World! contenuto del 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 il Archiviazione Account la funzione legge come input. Visual Studio Code recupera i stringa di connessione per la connessione al progetto locale. |
Per verificare che l'associazione sia stata aggiunta correttamente,
- Aprire il
BlobStorageInputFunc/function.json
file, verificare che in questo file sia stata aggiunta una nuova associazione contype: blob
edirection: in
. - Aprire il
local.settings.json
file, verificare che in questo file sia stata aggiunta una nuova coppia<your-storage-account-name>_STORAGE: <your-storage-account-connection-string>
chiave-valore contenente l'account di archiviazione stringa di connessione.
Dopo aver aggiunto l'associazione, aggiornare i codici di funzione per usare 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 del BLOB.
- Selezionare l'account di archiviazione usato durante la creazione della risorsa funzione di Azure se viene richiesto di connettersi a Archiviazione. È per l'uso interno del runtime di Funzioni di Azure e non è necessariamente uguale a quello usato per l'input.
- Per avviare la funzione in locale, premere
<kbd>
F5</kbd>
o selezionare l'icona Esegui e debug nella barra attività sul lato sinistro. - Per verificare che la funzione possa leggere il BLOB, fare clic con il pulsante destro del mouse
Exucute Function Now...
sulla funzione nell'area di lavoro di Visual Studio Code e controllare la risposta della funzione. Il messaggio di risposta deve contenere il contenuto nel file BLOB.
Creare una connessione con Service Connessione or
Il progetto è stato appena eseguito e verificato la funzione in locale e il progetto locale si connette al BLOB di archiviazione usando un 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 leggere il BLOB dopo la distribuzione nel cloud. Nell'ambiente cloud viene illustrato come eseguire l'autenticazione usando un'identità gestita assegnata dal sistema.
- Aprire il
function.json
file nel progetto locale, modificare il valore dellaconnection
proprietà in inbindings
comeMyBlobInputConnection
. - Eseguire il comando seguente dell'interfaccia della riga di comando di Azure per creare una connessione tra la funzione di Azure e l'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
--source-id
Formato:/subscriptions/{subscription}/resourceG roups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
--target-id
Formato:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/blobServices/default
È stata creata una connessione tra la funzione di Azure e Archiviazione BLOB di Azure usando service Connessione or, con un'identità gestita assegnata dal sistema.
Il servizio Connessione or ha configurato una MyBlobInputConnection__serviceUri
variabile nelle impostazioni dell'app della funzione usate dal runtime di associazione di funzioni per connettersi all'archiviazione, in modo che la funzione possa leggere i dati dall'archivio BLOB. Per altre informazioni sul modo in cui service Connessione or consente di Funzioni di Azure connettersi ai servizi.
Distribuire la funzione in Azure
È ora possibile distribuire la funzione in Azure e verificare il funzionamento dell'associazione di input del BLOB di archiviazione.
- Seguire l'esercitazione per distribuire la funzione in Azure.
- Per verificare che la funzione possa leggere il BLOB, fare clic con il pulsante destro del mouse
Exucute Function Now...
sulla funzione nella visualizzazione RISORSE di Visual Studio Code e controllare la risposta della funzione. Il messaggio di risposta deve contenere il contenuto nel 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 verificare se il stringa di connessione usato per connettersi a Archiviazione di Azure contiene o meno l'endpoint BLOB. In caso contrario, passare a Archiviazione di Azure nella portale di Azure, copiare il stringa di connessione dal Access keys
pannello e sostituire i valori.
Se l'errore si verifica quando si avvia il progetto in locale, controllare il local.settings.json
file.
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 l'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.
- Nella 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 altre informazioni sui concetti di Service Connessione or e su come consente di Funzioni di Azure connettersi ad altri servizi cloud.