Share via


Esercitazione: Funzione Python con Archiviazione tabella di Azure come output

Questa esercitazione illustra come configurare una funzione Python con Archiviazione Table come output completando le attività seguenti.

  • Usare Visual Studio Code per creare un progetto di funzione Python.
  • Aggiungere un'associazione di funzioni di output tabella 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 Table with 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 Tabella di archiviazione di Azure
Associazione di funzioni Trigger HTTP, Archiviazione Tabella come output
Tipo di autenticazione progetto locale Stringa di connessione
Tipo di autenticazione della funzione cloud Stringa di connessione

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 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 trigger HTTP.

Aggiungere un'associazione di output della tabella di archiviazione

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 out Il binding è un binding di output.
Selezionare il binding con direzione Azure Table Storage L'associazione è un'associazione di tabella 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 tabella nell'account di archiviazione in cui verranno scritti i dati testTable Il nome della tabella scritto dalla funzione come output. Creare una tabella denominata testTable nell'account di archiviazione, se non esiste.
Selezionare l'impostazione da "local.setting.json" Create new local app settings Selezionare il Archiviazione Account la funzione scrive come output. 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 TableStorageOutputFunc/function.json file, verificare che in questo file sia stata aggiunta una nuova associazione con type: table e direction: out .
  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 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}")

Eseguire la funzione in locale

Seguire l'esercitazione per eseguire la funzione in locale e verificare l'output della tabella.

  1. Selezionare l'account Archiviazione scelto durante la creazione della risorsa funzione di Azure se viene richiesto di connettersi a un account di archiviazione. Questo valore viene usato per il runtime di Funzioni di Azure. Non è necessariamente lo stesso account di archiviazione usato per l'output.
  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 scrivere nella tabella, fare clic con il pulsante destro del mouse Execute Function Now... sulla funzione nella visualizzazione AREA di lavoro di Visual Studio Code e controllare la risposta della funzione. Il messaggio di risposta deve contenere l'oggetto rowKey scritto nella tabella.

Creare una connessione con Service Connessione or

Nell'ultimo passaggio è stato verificato il progetto di funzione in locale. A questo punto si apprenderà come configurare la connessione tra la funzione di Azure e Archiviazione di Azure Tabella nel cloud, in modo che la funzione possa scrivere nel BLOB di archiviazione dopo essere stata distribuita nel cloud.

  1. Aprire il function.json file nel progetto locale, modificare il valore della connection proprietà in in bindings come AZURE_STORAGETABLE_CONNECTIONSTRING.
  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-table --source-id "<your-function-resource-id>" --target-id "<your-storage-table-resource-id>" --secret
  • --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}/tableServices/default

È stata creata una risorsa service Connessione or che configura una AZURE_STORAGETABLE_CONNECTIONSTRING variabile nella Impostazioni app della funzione. Questa impostazione dell'app verrà quindi utilizzata dall'associazione di funzioni per connettersi all'archiviazione, in modo che la funzione possa scrivere nella tabella di archiviazione. 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 output della tabella di archiviazione.

  1. Seguire questa Funzioni di Azure esercitazione per distribuire la funzione in Azure.
  2. Per verificare che la funzione possa scrivere nella tabella, fare clic con il pulsante destro del mouse Execute Function Now... sulla funzione nella visualizzazione RISORSE di Visual Studio Code e controllare la risposta della funzione. Il messaggio di risposta deve contenere la rowKey funzione appena scritta nella tabella.

Risoluzione dei problemi

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

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

Se 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.