Condividi tramite


Associazioni di tabelle di Azure per Funzioni di Azure

Funzioni di Azure si integra con Tabelle di Azure tramite trigger e associazioni. L'integrazione con tabelle di Azure consente di creare funzioni che leggono e scrivono dati usando Azure Cosmos DB per Tabelle e Archiviazione tabelle di Azure.

Azione TIPO
Leggere i dati della tabella in una funzione Associazione di input
Consentire a una funzione di scrivere dati di tabella Associazione di output

Installare l'estensione

Il pacchetto NuGet di estensione installato dipende dalla modalità C# usata nell'app per le funzioni:

Le funzioni sono eseguite in un processo di lavoro C# isolato. Per altre informazioni, vedere Guida per l'esecuzione di Funzioni di Azure C# in un processo di lavoro isolato.

Il processo di installazione dell'estensione varia a seconda della versione dell'estensione:

Questa versione introduce la possibilità di connettersi usando un'identità anziché un segreto. Per un'esercitazione sulla configurazione delle app per le funzioni con identità gestite, vedere l'esercitazione Creazione di un'app per le funzioni con connessioni basate sull'identità.

Questa versione consente di eseguire l'associazione ai tipi da Azure.Data.Tables. Introduce anche la possibilità di usare Azure Cosmos DB per la tabella.

Questa estensione è disponibile installando il pacchetto NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables in un progetto usando la versione 5.x o successiva delle estensioni per BLOB e code.

Uso dell'interfaccia della riga di comando di .NET:

# Install the Azure Tables extension
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Tables --version 1.0.0

# Update the combined Azure Storage extension (to a version which no longer includes Azure Tables)
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Storage --version 5.0.0

Nota

I BLOB di Azure, le code di Azure e le tabelle di Azure ora usano estensioni separate e fanno riferimento singolarmente. Ad esempio, per usare i trigger e le associazioni per tutti e tre i servizi nell'app con processo isolato .NET, è necessario aggiungere i pacchetti seguenti al progetto:

In precedenza, le estensioni fornite insieme come Microsoft.Azure.Functions.Worker.Extensions.Storage, versione 4.x. Questo stesso pacchetto ha anche una versione 5.x, che fa riferimento solo ai pacchetti divisi per BLOB e code. Quando si aggiornano i riferimenti al pacchetto da versioni precedenti, potrebbe quindi essere necessario fare riferimento al nuovo pacchetto NuGet Microsoft.Azure.Functions.Worker.Extensions.Tables . Inoltre, quando si fa riferimento a questi pacchetti di divisione più recenti, assicurarsi di non fare riferimento a una versione precedente del pacchetto di archiviazione combinato, in quanto ciò comporterà conflitti da due definizioni delle stesse associazioni.

Se si scrive l'applicazione usando F#, è necessario configurare questa estensione anche come parte della configurazione di avvio dell'app. Nella chiamata a ConfigureFunctionsWorkerDefaults() o ConfigureFunctionsWebApplication()aggiungere un delegato che accetta un IFunctionsWorkerApplication parametro. Quindi, all'interno del corpo del delegato, chiamare ConfigureTablesExtension() sull'oggetto :

let hostBuilder = new HostBuilder()
hostBuilder.ConfigureFunctionsWorkerDefaults(fun (context: HostBuilderContext) (appBuilder: IFunctionsWorkerApplicationBuilder) ->
    appBuilder.ConfigureTablesExtension() |> ignore
) |> ignore

Installare il bundle

Per poter usare questa estensione di associazione nell'app, assicurarsi che il file host.json nella radice del progetto contenga questo extensionBundle riferimento:

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[4.0.0, 5.0.0)"
    }
}

In questo esempio, il version valore di indica all'host di Funzioni di [4.0.0, 5.0.0) usare una versione del bundle che è almeno 4.0.0 ma minore di 5.0.0, che include tutte le versioni potenziali di 4.x. Questa notazione mantiene l'app nella versione secondaria più recente disponibile del bundle di estensione v4.x.

Quando possibile, è consigliabile usare la versione principale del bundle di estensione più recente e consentire al runtime di mantenere automaticamente la versione secondaria più recente. È possibile visualizzare il contenuto del bundle più recente nella pagina di rilascio dei bundle di estensioni.

Se l'app richiede di usare una versione precedente dell'estensione, potrebbe essere necessario specificare invece una versione del bundle precedente. È possibile esaminare le versioni del bundle per individuare un bundle che contiene una versione di questa estensione che può essere usata dall'app. Per altre informazioni, vedere Bundle di estensioni di Funzioni di Azure. ::: zone-end

Tipi di associazioni

I tipi di associazione supportati per .NET dipendono sia dalla versione dell'estensione che dalla modalità di esecuzione di C#, che può essere una delle seguenti:

Una funzione C# compilata di libreria di classi di processo di lavoro viene eseguita in un processo isolato dal runtime.

Scegliere una versione per visualizzare i dettagli del tipo di associazione per la modalità e la versione.

Il processo di lavoro isolato supporta i tipi di parametro in base alle tabelle seguenti. Il supporto per l'associazione ai tipi da Azure.Data.Tables è disponibile in anteprima.

Associazione di input tabelle di Azure

Quando si usa una singola entità di tabella, l'associazione di input tabelle di Azure può essere associata ai tipi seguenti:

TIPO Descrizione
Tipo serializzabile JSON che implementa ITableEntity Funzioni tenta di deserializzare l'entità in un tipo POCO (Plain-Old CLR Object). Il tipo deve implementare ITableEntity o avere una proprietà stringa RowKey e una proprietà stringa PartitionKey .
TableEntity1 Entità come tipo di dizionario.

Quando si usano più entità da una query, l'associazione di input tabelle di Azure può essere associata ai tipi seguenti:

TIPO Descrizione
IEnumerable<T> dove T implementa ITableEntity Enumerazione delle entità restituite dalla query. Ogni voce rappresenta un'entità. Il tipo T deve implementare ITableEntity o avere una proprietà stringa RowKey e una proprietà stringa PartitionKey .
TableClient1 Un client connesso alla tabella. Ciò offre il controllo più importante per l'elaborazione della tabella e può essere usato per scrivervi se la connessione dispone di autorizzazioni sufficienti.

1 Per usare questi tipi, è necessario fare riferimento a Microsoft.Azure.Functions.Worker.Extensions.Tables 1.2.0 o versioni successive e alle dipendenze comuni per le associazioni di tipi SDK.

Associazione di output tabelle di Azure

Quando si vuole che la funzione scriva in una singola entità, l'associazione di output tabelle di Azure può essere associata ai tipi seguenti:

TIPO Descrizione
Tipo serializzabile JSON che implementa [ITableEntity] Funzioni tenta di serializzare un tipo POCO (Plain-Old CLR Object) come entità. Il tipo deve implementare [ITableEntity] o avere una proprietà stringa RowKey e una proprietà stringa PartitionKey .

Quando si vuole che la funzione scriva in più entità, l'associazione di output tabelle di Azure può essere associata ai tipi seguenti:

TIPO Descrizione
T[] dove T è uno dei singoli tipi di entità Matrice contenente più entità. Ogni voce rappresenta un'entità.

Per altri scenari di output, creare e usare un oggetto TableClient con altri tipi direttamente da Azure.Data.Tables . Vedere Registrare i client di Azure per un esempio di uso dell'inserimento delle dipendenze per creare un tipo di client da Azure SDK.

Passaggi successivi