Condividi tramite


Libreria client tabelle processi Web di Azure per .NET - versione 1.1.0

Questa estensione fornisce funzionalità per l'accesso alle tabelle di Azure in Funzioni di Azure.

Introduzione

Installare il pacchetto

Installare l'estensione Tables con NuGet:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables

Prerequisiti

Per usare questo pacchetto sono necessari una sottoscrizione di Azure e un account di archiviazione o tabelle Cosmos .

Uso delle tabelle di archiviazione

Per creare un nuovo account di archiviazione, è possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure. Di seguito è riportato un esempio basato sull'uso dell'interfaccia della riga di comando di Azure:

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS

Uso di tabelle Cosmos

Per creare una nuova tabella Cosmos, è possibile usare il portale di Azure, Azure PowerShell o l'interfaccia della riga di comando di Azure.

Autenticare il client

La connessione rappresenta un set di informazioni necessarie per connettersi a un servizio tabelle. Può contenere una stringa di connessione, un endpoint, credenziali di token o una chiave condivisa.

La Connection proprietà di TableAttribute definisce la connessione utilizzata per l'accesso al servizio tabelle. Ad esempio, [Tables(Connection="MyTableService")] userà MyTableService la connessione.

Le informazioni di connessione possono essere impostate nelle local.settings.jsonimpostazioni dell'applicazione o in portale di Azure.

Quando si aggiunge un'impostazione a local.settings.json , inserirla nella Values proprietà :

{
  "IsEncrypted": false,
  "Values": {
    "MyTableService": "..."
  }
}

Quando si aggiunge un'impostazione alle impostazioni dell'applicazione in portale di Azure usare direttamente il nome specificato:

MyTableService = ...

L'estensione Tabelle usa il nome di AzureWebJobsStorage connessione per impostazione predefinita.

Stringa di connessione

Per usare l'autenticazione delle stringhe di connessione, assegnare il valore della stringa di connessione direttamente all'impostazione di connessione.

<ConnectionName> = DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net

Uso delle credenziali dell'endpoint e del token

NOTA: l'autenticazione delle credenziali dei token è supportata solo per le tabelle di archiviazione.

<ConnectionName>__endpoint = https://...table.core.windows.net

Se non vengono fornite informazioni sulle credenziali, viene usato .DefaultAzureCredential

Quando si usa l'identità gestita assegnata dall'utente, è necessario specificare le clientId impostazioni e credential :

<ConnectionName>__credential = managedidentity

<ConnectionName>__clientId = <user-assigned client id>

Uso delle credenziali della chiave condivisa

Quando si usa l'autenticazione con chiave condivisa, endpointaccountKey è necessario specificare e accountName .

<ConnectionName>__endpoint = https://...table.core.windows.net

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Concetti chiave

L'associazione di input consente di leggere la tabella come input in una funzione di Azure. L'associazione di output consente di modificare ed eliminare righe di tabella in una funzione di Azure.

Seguire l'esercitazione sull'associazione di input e l'esercitazione sull'associazione di output per informazioni sull'uso di questa estensione per l'accesso al servizio tabelle.

Esempio

Le estensioni delle tabelle forniscono solo associazioni. Le associazioni da soli non possono attivare una funzione. Può solo leggere o scrivere voci nella tabella.

Nell'esempio seguente viene usato il trigger HTTP per richiamare la funzione.

Associazione a una singola entità

public class InputSingle
{
    [FunctionName("InputSingle")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable", "<PartitionKey>", "<RowKey>")] TableEntity entity, ILogger log)
    {
        log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
    }
}

Associazione a una singola entità tramite il tipo di modello

public class MyEntity
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}
public class InputSingleModel
{
    [FunctionName("InputSingleModel")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable", "<PartitionKey>", "<RowKey>")] MyEntity entity, ILogger log)
    {
        log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity.Text}");
    }
}

Associazione a più entità con filtro

public class InputMultipleEntitiesFilter
{
    [FunctionName("InputMultipleEntitiesFilter")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable", "<PartitionKey>", Filter = "Text ne ''")] IEnumerable<TableEntity> entities, ILogger log)
    {
        foreach (var entity in entities)
        {
            log.LogInformation($"PK={entity.PartitionKey}, RK={entity.RowKey}, Text={entity["Text"]}");
        }
    }
}

Creazione di una singola entità

public class OutputSingle
{
    [FunctionName("OutputSingle")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable")] out TableEntity entity)
    {
        entity = new TableEntity("<PartitionKey>", "<RowKey>")
        {
            ["Text"] = "Hello"
        };
    }
}

Creazione di una singola entità usando il modello

public class MyEntity
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}
public class OutputSingleModel
{
    [FunctionName("OutputSingleModel")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "GET")] HttpRequest request,
        [Table("MyTable")] out MyEntity entity)
    {
        entity = new MyEntity()
        {
            PartitionKey = "<PartitionKey>",
            RowKey = "<RowKey>",
            Text = "Hello"
        };
    }
}

Creazione di più entità

public class OutputMultiple
{
    [FunctionName("OutputMultiple")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
        [Table("MyTable")] IAsyncCollector<TableEntity> collector)
    {
        for (int i = 0; i < 10; i++)
        {
            collector.AddAsync(new TableEntity("<PartitionKey>", i.ToString())
            {
                ["Text"] = i.ToString()
            });
        }
    }
}

Creazione di più entità usando il modello

public class MyEntity
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public string Text { get; set; }
}
public class OutputMultipleModel
{
    [FunctionName("OutputMultipleModel")]
    public static void Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
        [Table("MyTable")] IAsyncCollector<MyEntity> collector)
    {
        for (int i = 0; i < 10; i++)
        {
            collector.AddAsync(new MyEntity()
            {
                PartitionKey = "<PartitionKey>",
                RowKey = i.ToString(),
                Text = i.ToString()
            });
        }
    }
}

Associazione al tipo TableClient dell'SDK

Usare un parametro di metodo TableClient per accedere alla tabella usando Azure Tables SDK.

public class BindTableClient
{
    [FunctionName("BindTableClient")]
    public static async Task Run(
        [HttpTrigger(AuthorizationLevel.Anonymous, "POST")] HttpRequest request,
        [Table("MyTable")] TableClient client)
    {
        await client.AddEntityAsync(new TableEntity("<PartitionKey>", "<RowKey>")
        {
            ["Text"] = request.GetEncodedPathAndQuery()
        });
    }
}

Risoluzione dei problemi

Per indicazioni sulla risoluzione dei problemi, vedere Monitorare Funzioni di Azure.

Passaggi successivi

Leggere l'introduzione alla funzione di Azure o creare una guida alle funzioni di Azure.

Contributo

Per informazioni dettagliate sulla compilazione, il test e il contributo a questa libreria, vedere la CONTRIBUTING.md .

In questo progetto sono benvenuti i contributi e i suggerimenti. Per la maggior parte dei contenuti è necessario sottoscrivere un contratto di licenza di collaborazione (CLA, Contributor License Agreement) che stabilisce che l'utente ha il diritto di concedere, e di fatto concede a Microsoft i diritti d'uso del suo contributo. Per informazioni dettagliate, visitare cla.microsoft.com.

Questo progetto ha adottato il Codice di comportamento di Microsoft per l'open source. Per altre informazioni, vedere Code of Conduct FAQ (Domande frequenti sul Codice di comportamento Open Source di Microsoft) oppure contattare opencode@microsoft.com per eventuali altre domande o commenti.

Impression