Share via


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

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,

  1. Aprire il BlobStorageInputFunc/function.json file, verificare che in questo file sia stata aggiunta una nuova associazione con type: blob e direction: in .
  2. 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.

  1. 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.
  2. Per avviare la funzione in locale, premere <kbd>F5 </kbd> o selezionare l'icona Esegui e debug nella barra attività sul lato sinistro.
  3. 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.

  1. Aprire il function.json file nel progetto locale, modificare il valore della connection proprietà in in bindings come MyBlobInputConnection.
  2. 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.

  1. Seguire l'esercitazione per distribuire la funzione in Azure.
  2. 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.

  1. Nella 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 Connessione or e su come consente di Funzioni di Azure connettersi ad altri servizi cloud.