Esercitazione: Configurare una funzione Python con l'output di Archiviazione tabelle di Azure
Questa esercitazione illustra come configurare una funzione Python per l'uso di Archiviazione tabelle di Azure come associazione di output completando le attività seguenti.
- Usare Visual Studio Code per creare un progetto di funzione Python.
- Aggiungere un'associazione di output alla tabella 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 la tabella 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 | Tabella di archiviazione di Azure |
Associazione di funzione | Trigger HTTP, tabella di archiviazione come output |
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 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.
- 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 una tabella di archiviazione. Se non è ancora disponibile un account di archiviazione, 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 di Azure.
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 TableStorageOutputFunc . |
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.
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 | out |
Il binding è un binding di output. |
Selezionare il binding con direzione | Azure Table Storage |
L'associazione è un'associazione della tabella di archiviazione di Azure. |
Il nome usato per identificare questo binding nel codice | outMessage |
Nome che identifica il parametro di binding a cui viene fatto riferimento nel codice. |
Nome della tabella nell'account di archiviazione in cui verrà eseguita la scrittura dei dati | testTable |
Il nome della tabella in cui la funzione scrive come output. Creare una tabella denominata testTable nell'account di archiviazione se non esiste già. |
Selezionare l'impostazione da "local.setting.json" | Create new local app settings |
Selezionare l'account di archiviazione che la funzione scrive come output. 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
TableStorageOutputFunc/function.json
e controllare che sia stata aggiunta una nuova associazione contype: table
edirection: out
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 TableStorageOutputFunc/__init__.py
con il file Python qui.
import logging
import uuid
import json
import azure.functions as func
def main(req: func.HttpRequest, outMessage: func.Out[str]) -> func.HttpResponse:
rowKey = str(uuid.uuid4())
data = {
"Name": "Output binding message",
"PartitionKey": "message",
"RowKey": rowKey
}
outMessage.set(json.dumps(data))
return func.HttpResponse(f"Message created with the rowKey: {rowKey}")
Seguire l'esercitazione per eseguire la funzione in locale e verificare l'output della tabella.
- Selezionare l'account di archiviazione scelto durante la creazione della risorsa funzione di Azure se viene richiesto di connettersi a un account di archiviazione. Questo valore viene utilizzato per il runtime di Funzione di Azure. Non è necessariamente lo stesso account di archiviazione usato per l'output.
- 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 scrivere sulla tabella, fare clic con il tasto destro su
Execute Function Now...
nella vista WORKSPACE di Visual Studio Code e verificare la risposta della funzione. Il messaggio di risposta deve contenererowKey
scritto nella tabella.
Nell'ultimo passaggio è stato verificato il progetto di funzione in locale. Si apprenderà ora come configurare la connessione tra la funzione di Azure e la tabella di Archiviazione di Azure nel cloud, in modo che la funzione possa scrivere sul BLOB di archiviazione dopo essere stata distribuita nel cloud.
- Aprire il file
function.json
nel progetto locale, modificare il valore della proprietàconnection
inbindings
in modo che siaAZURE_STORAGETABLE_CONNECTIONSTRING
. - 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-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
- Formato
--source-id
:/subscriptions/{subscription}/resourceGroups/{source_resource_group}/providers/Microsoft.Web/sites/{site}
- Formato
--target-id
:/subscriptions/{subscription}/resourceGroups/{target_resource_group}/providers/Microsoft.Storage/storageAccounts/{account}/tableServices/default
Si è creata una risorsa di Connettore di servizi che configura una variabile AZURE_STORAGETABLE_CONNECTIONSTRING
nelle impostazioni dell'app della funzione. Questa impostazione dell'app verrà quindi utilizzata dall'associazione della funzione per connettersi all'archiviazione, permettendo così alla funzione di scrivere nella tabella di archiviazione. Per altre informazioni, vedere il Modo in cui il Connettore di servizi consente a Funzioni di Azure di connettersi ai servizi.
È ora possibile distribuire la funzione in Azure e verificare il funzionamento dell'associazione di output nella tabella del servizio di archiviazione.
- Seguire questa esercitazione su Funzioni di Azure per distribuire la funzione in Azure.
- Per verificare che la funzione possa scrivere sulla tabella, fare clic con il tasto destro su
Execute Function Now...
nella vista RESOURCES di Visual Studio Code e verificare la risposta della funzione. Il messaggio di risposta deve contenererowKey
che la funzione ha appena scritto nella tabella.
Se sono presenti errori correlati all'host di archiviazione, ad esempio No such host is known (<account-name>.table.core.windows.net:443)
, è necessario controllare se la stringa di connessione usata per connettersi ad Archiviazione di Azure contiene o meno l'endpoint della tabella. In caso contrario, passare al portale di Archiviazione di Azure, copiare la stringa di connessione dal pannello 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 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.
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.
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.