Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nuDen här webbläsaren stöds inte längre.
Uppgradera till Microsoft Edge och dra nytta av de senaste funktionerna och säkerhetsuppdateringarna, samt teknisk support.
Det här tillägget tillhandahåller funktioner för åtkomst till Azure-tabeller i Azure Functions.
Installera tabelltillägget med NuGet:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Du behöver en Azure-prenumeration och ett lagringskonto eller Ett Cosmos-tabellkonto för att kunna använda det här paketet.
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
Om du vill skapa en ny Cosmos-tabeller kan du använda Azure Portal, Azure PowerShell eller Azure CLI.
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.
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
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>
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>
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.
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.
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"]}");
}
}
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}");
}
}
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"]}");
}
}
}
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"
};
}
}
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"
};
}
}
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()
});
}
}
}
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()
});
}
}
}
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()
});
}
}
Information om felsökning finns i Övervaka Azure Functions.
Läs introduktionen till Azure Function eller skapa en Azure-funktionsguide.
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.
Händelser
17 mars 21 - 21 mars 10
Gå med i mötesserien för att skapa skalbara AI-lösningar baserat på verkliga användningsfall med andra utvecklare och experter.
Registrera dig nu