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 endpoint
accountKey
accountName
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.