Azure WebJobs Tables-clientbibliotheek voor .NET - versie 1.1.0
Deze extensie biedt functionaliteit voor toegang tot Azure-tabellen in Azure Functions.
Aan de slag
Het pakket installeren
Installeer de extensie Tables met NuGet:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Vereisten
U hebt een Azure-abonnement en een opslagaccount of Cosmos Tables-account nodig om dit pakket te kunnen gebruiken.
Opslagtabellen gebruiken
Als u een nieuw opslagaccount wilt maken, kunt u azure portal, Azure PowerShell of de Azure CLI gebruiken. Hier volgt een voorbeeld van het gebruik van de Azure CLI:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Cosmos-tabellen gebruiken
Als u een nieuwe Cosmos-tabellen wilt maken, kunt u azure portal, Azure PowerShell of de Azure CLI gebruiken.
De client verifiëren
Verbinding vertegenwoordigt een set gegevens die nodig zijn om verbinding te maken met een tabelservice. Het kan een connection string, een eindpunt, tokenreferentie of een gedeelde sleutel bevatten.
De Connection
eigenschap van TableAttribute
definieert welke verbinding wordt gebruikt voor toegang tot de tableservice. Gaat bijvoorbeeld [Tables(Connection="MyTableService")]
verbinding gebruiken MyTableService
.
De verbindingsgegevens kunnen worden ingesteld in local.settings.json
of toepassingsinstellingen in Azure Portal.
Wanneer u een instelling toevoegt aan local.settings.json, plaatst u deze onder de Values
eigenschap:
{
"IsEncrypted": false,
"Values": {
"MyTableService": "..."
}
}
Wanneer u een instelling toevoegt aan toepassingsinstellingen in Azure Portal de opgegeven naam rechtstreeks gebruiken:
MyTableService = ...
De tabelextensie gebruikt standaard de AzureWebJobsStorage
verbindingsnaam.
Verbindingsreeks
Als u verificatie van verbindingsreeksen wilt gebruiken, wijst u connection string waarde rechtstreeks toe aan de verbindingsinstelling.
<ConnectionName>
= DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
Eindpunt- en tokenreferentie gebruiken
OPMERKING: verificatie van tokenreferenties wordt alleen ondersteund voor opslagtabellen.
<ConnectionName>__endpoint
= https://...table.core.windows.net
Als er geen referentiegegevens worden opgegeven, wordt de DefaultAzureCredential
gebruikt.
Wanneer u een door de gebruiker toegewezen beheerde identiteit gebruikt, moeten de clientId
instellingen en credential
worden opgegeven:
<ConnectionName>__credential
= managedidentity
<ConnectionName>__clientId
= <user-assigned client id>
Gedeelde sleutelreferentie gebruiken
Wanneer u verificatie met een gedeelde sleutel gebruikt, moet de endpoint
, accountKey
en accountName
worden opgegeven.
<ConnectionName>__endpoint
= https://...table.core.windows.net
<ConnectionName>__credential__accountName
= <account name>
<ConnectionName>__credential__accountKey
= <account key>
Belangrijkste concepten
Met de invoerbinding kunt u de tabel lezen als invoer voor een Azure-functie. Met de uitvoerbinding kunt u tabelrijen in een Azure-functie wijzigen en verwijderen.
Volg de zelfstudie voor invoerbinding en uitvoerbinding voor meer informatie over het gebruik van deze extensie voor toegang tot de tabelservice.
Voorbeelden
Tabelextensies bieden alleen bindingen. Bindingen kunnen op zichzelf geen functie activeren. Het kan alleen vermeldingen naar de tabel lezen of schrijven.
In het volgende voorbeeld gebruiken we de HTTP-trigger om de functie aan te roepen.
Binding met één entiteit
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"]}");
}
}
Binding met één entiteit met behulp van modeltype
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}");
}
}
Binding met meerdere entiteiten met 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"]}");
}
}
}
Eén entiteit maken
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"
};
}
}
Eén entiteit maken met behulp van een model
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"
};
}
}
Meerdere entiteiten maken
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()
});
}
}
}
Meerdere entiteiten maken met behulp van een model
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()
});
}
}
}
Binding met SDK TableClient-type
Gebruik een tableClient-methodeparameter om toegang te krijgen tot de tabel met behulp van de 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()
});
}
}
Problemen oplossen
Raadpleeg Monitor Azure Functions voor hulp bij het oplossen van problemen.
Volgende stappen
Lees de inleiding tot Azure Function of de handleiding voor het maken van een Azure-functie.
Bijdragen
Zie de CONTRIBUTING.md voor meer informatie over het bouwen, testen en bijdragen aan deze bibliotheek.
Wij verwelkomen bijdragen en suggesties voor dit project. Voor de meeste bijdragen moet u instemmen met een licentieovereenkomst voor bijdragers (CLA: Contributor License Agreement) waarin u verklaart dat u gerechtigd bent ons het recht te geven uw bijdrage te gebruiken, en dat u dit ook doet. Ga naar cla.microsoft.com voor meer informatie.
Op dit project is de Microsoft Open Source Code of Conduct (Microsoft Open Source-gedragscode) van toepassing. Zie de Veelgestelde vragen over de gedragscode voor meer informatie of neem contact op opencode@microsoft.com met eventuele aanvullende vragen of opmerkingen.