Azure WebJobs Tables-Clientbibliothek für .NET – Version 1.2.0

Diese Erweiterung bietet Funktionen für den Zugriff auf Azure-Tabellen in Azure Functions.

Erste Schritte

Installieren des Pakets

Installieren Sie die Tabellenerweiterung mit NuGet:

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

Voraussetzungen

Sie benötigen ein Azure-Abonnement und ein Speicherkonto oder ein Cosmos Tables-Konto , um dieses Paket verwenden zu können.

Verwenden von Speichertabellen

Um ein neues Speicherkonto zu erstellen, können Sie das Azure-Portal, Azure PowerShell oder die Azure CLI verwenden. Beispiel für die Verwendung der Azure-Befehlszeilenschnittstelle:

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

Verwenden von Cosmos-Tabellen

Um eine neue Cosmos Tables zu erstellen, können Sie das Azure-Portal, Azure PowerShell oder die Azure CLI verwenden.

Authentifizieren des Clients

Die Verbindung stellt eine Reihe von Informationen dar, die zum Herstellen einer Verbindung mit einem Tabellendienst erforderlich sind. Sie kann eine Verbindungszeichenfolge, einen Endpunkt, Tokenanmeldeinformationen oder einen freigegebenen Schlüssel enthalten.

Die Connection -Eigenschaft von TableAttribute definiert, welche Verbindung für den Table Service-Zugriff verwendet wird. [Tables(Connection="MyTableService")] Beispielsweise wird die Verbindung verwendetMyTableService.

Die Verbindungsinformationen können inlocal.settings.json- oder Anwendungseinstellungen in Azure-Portal festgelegt werden.

Wenn Sie eine Einstellung zu local.settings.json hinzufügen, platzieren Sie sie unter der Values -Eigenschaft:

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

Verwenden Sie beim Hinzufügen einer Einstellung zu Anwendungseinstellungen in Azure-Portal den angegebenen Namen direkt:

MyTableService = ...

Die Tabellenerweiterung verwendet standardmäßig den AzureWebJobsStorage Verbindungsnamen.

Verbindungszeichenfolge

Um Verbindungszeichenfolgen zu verwenden, weisen Sie der Verbindungseinstellung den Wert der Verbindungszeichenfolge direkt zu.

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

Verwenden von Endpunkt- und Tokenanmeldeinformationen

HINWEIS: Die Authentifizierung von Tokenanmeldeinformationen wird nur für Speichertabellen unterstützt.

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

Wenn keine Anmeldeinformationen bereitgestellt werden, wird der DefaultAzureCredential verwendet.

Bei Verwendung der benutzerseitig zugewiesenen verwalteten Identität müssen die clientId Einstellungen und credential angegeben werden:

<ConnectionName>__credential = managedidentity

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

Verwenden von Anmeldeinformationen für gemeinsam genutzte Schlüssel

Bei Verwendung der Authentifizierung mit freigegebenem Schlüssel müssen und endpointaccountKeyaccountName bereitgestellt werden.

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

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Wichtige Begriffe

Mit der Eingabebindung können Sie Eine Tabelle als Eingabe für eine Azure-Funktion lesen. Mit der Ausgabebindung können Sie Tabellenzeilen in einer Azure-Funktion ändern und löschen.

Befolgen Sie das Tutorial zur Eingabebindung und Ausgabebindung , um mehr über die Verwendung dieser Erweiterung für den Zugriff auf den Tabellendienst zu erfahren.

Beispiele

Tabellenerweiterungen stellen nur Bindungen bereit. Bindungen allein können keine Funktion auslösen. Es kann nur Einträge in die Tabelle lesen oder schreiben.

Im folgenden Beispiel wird der HTTP-Trigger verwendet, um die Funktion aufzurufen.

Bindung an eine einzelne Entität

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"]}");
    }
}

Bindung an eine einzelne Entität mithilfe des Modelltyps

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}");
    }
}

Bindung an mehrere Entitäten mit Filter

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"]}");
        }
    }
}

Erstellen einer einzelnen Entität

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"
        };
    }
}

Erstellen einer einzelnen Entität mithilfe des Modells

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"
        };
    }
}

Erstellen mehrerer Entitäten

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()
            });
        }
    }
}

Erstellen mehrerer Entitäten mithilfe des Modells

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()
            });
        }
    }
}

Bindung an den SDK TableClient-Typ

Verwenden Sie einen TableClient-Methodenparameter, um mithilfe des Azure Tables SDK auf die Tabelle zuzugreifen.

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()
        });
    }
}

Problembehandlung

Anleitungen zur Problembehandlung finden Sie unter Überwachen Azure Functions.

Nächste Schritte

Lesen Sie die Einführung in Azure Function , oder erstellen Sie eine Azure Function-Anleitung.

Mitwirken

Weitere Informationen zum Erstellen, Testen und Mitwirken zu dieser Bibliothek finden Sie im CONTRIBUTING.md .

Beiträge und Vorschläge für dieses Projekt sind willkommen. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. Weitere Informationen finden Sie unter cla.microsoft.com.

Für dieses Projekt gelten die Microsoft-Verhaltensregeln für Open Source (Microsoft Open Source Code of Conduct). Weitere Informationen finden Sie in den häufig gestellten Fragen zum Verhaltenskodex. Sie können sich auch an opencode@microsoft.com wenden, wenn Sie weitere Fragen oder Anmerkungen haben.

Aufrufe