Azure WebJobs Tables-klientbibliotek för .NET – version 1.1.0
Det här tillägget tillhandahåller funktioner för åtkomst till Azure-tabeller i Azure Functions.
Komma igång
Installera paketet
Installera tabelltillägget med NuGet:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Förutsättningar
Du behöver en Azure-prenumeration och ett lagringskonto eller Ett Cosmos-tabellkonto för att kunna använda det här paketet.
Använda lagringstabeller
Om du vill skapa ett nytt lagringskonto kan du använda Azure Portal, Azure PowerShell eller Azure CLI. Här är ett exempel med Hjälp av Azure CLI:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Använda Cosmos-tabeller
Om du vill skapa en ny Cosmos-tabeller kan du använda Azure Portal, Azure PowerShell eller Azure CLI.
Autentisera klienten
Anslutningen representerar en uppsättning information som krävs för att ansluta till en tabelltjänst. Den kan innehålla en anslutningssträng, en slutpunkt, tokenautentiseringsuppgifter eller en delad nyckel.
Egenskapen Connection
TableAttribute
för definierar vilken anslutning som används för table service-åtkomsten. Till exempel [Tables(Connection="MyTableService")]
kommer att använda MyTableService
anslutning.
Anslutningsinformationen kan anges i local.settings.json
eller programinställningar i Azure Portal.
När du lägger till en inställning i local.settings.json placerar du den Values
under egenskapen:
{
"IsEncrypted": false,
"Values": {
"MyTableService": "..."
}
}
När du lägger till en inställning i programinställningar i Azure Portal använd det angivna namnet direkt:
MyTableService = ...
Tabelltillägget AzureWebJobsStorage
använder anslutningsnamnet som standard.
Anslutningssträng
Om du vill använda autentisering med anslutningssträngar tilldelar du anslutningssträngsvärdet direkt till anslutningsinställningen.
<ConnectionName>
= DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
Använda slutpunkts- och tokenautentiseringsuppgifter
Obs! Tokenautentisering med autentiseringsuppgifter stöds endast för lagringstabeller.
<ConnectionName>__endpoint
= https://...table.core.windows.net
Om ingen information om autentiseringsuppgifter anges används den DefaultAzureCredential
.
När du använder användartilldelad hanterad identitet clientId
måste inställningarna och credential
anges:
<ConnectionName>__credential
= managedidentity
<ConnectionName>__clientId
= <user-assigned client id>
Använda autentiseringsuppgifter för delad nyckel
När du använder autentisering med endpoint
accountKey
delad nyckel måste och accountName
anges.
<ConnectionName>__endpoint
= https://...table.core.windows.net
<ConnectionName>__credential__accountName
= <account name>
<ConnectionName>__credential__accountKey
= <account key>
Viktiga begrepp
Med indatabindningen kan du läsa tabellen som indata till en Azure-funktion. Med utdatabindningen kan du ändra och ta bort tabellrader i en Azure-funktion.
Följ självstudien om indatabindning och utdatabindning för att lära dig mer om hur du använder det här tillägget för att komma åt tabelltjänsten.
Exempel
Tabelltillägg innehåller endast bindningar. Bindningar i sig kan inte utlösa en funktion. Den kan bara läsa eller skriva poster till tabellen.
I följande exempel använder vi HTTP-utlösare för att anropa funktionen.
Bindning till en enda entitet
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"]}");
}
}
Bindning till en enskild entitet med modelltyp
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}");
}
}
Bindning till flera entiteter med 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"]}");
}
}
}
Skapa en enda entitet
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"
};
}
}
Skapa en enskild entitet med hjälp av modellen
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"
};
}
}
Skapa flera entiteter
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()
});
}
}
}
Skapa flera entiteter med modellen
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()
});
}
}
}
Bindning till SDK TableClient-typ
Använd en TableClient-metodparameter för att komma åt tabellen med hjälp av 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()
});
}
}
Felsökning
Information om felsökning finns i Övervaka Azure Functions.
Nästa steg
Läs introduktionen till Azure Function eller skapa en Azure-funktionsguide.
Bidra
Mer information om hur du skapar, testar och bidrar till det här biblioteket finns i CONTRIBUTING.md .
Det här projektet välkomnar bidrag och förslag. Merparten av bidragen kräver att du godkänner ett licensavtal för bidrag, där du deklarerar att du har behörighet att bevilja oss rättigheten att använda ditt bidrag, och att du dessutom uttryckligen gör så. Mer information finns i cla.microsoft.com.
Det här projektet använder sig av Microsofts uppförandekod för öppen källkod. Mer information finns i Vanliga frågor och svar om uppförandekod eller kontakt opencode@microsoft.com med ytterligare frågor eller kommentarer.