Klientská knihovna tabulek Azure WebJobs pro .NET – verze 1.1.0
Toto rozšíření poskytuje funkce pro přístup k tabulkám Azure v Azure Functions.
Začínáme
Instalace balíčku
Nainstalujte rozšíření Tables pomocí NuGetu:
dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables
Požadavky
K použití tohoto balíčku potřebujete předplatné Azure a účet úložiště nebo účet cosmos tables .
Použití tabulek úložiště
K vytvoření nového účtu úložiště můžete použít Azure Portal, Azure PowerShell nebo Azure CLI. Tady je příklad použití Azure CLI:
az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS
Použití tabulek Cosmos
Pokud chcete vytvořit nové tabulky Cosmos , můžete použít Azure Portal, Azure PowerShell nebo Azure CLI.
Ověření klienta
Připojení představuje sadu informací potřebných pro připojení k tabulkové službě. Může obsahovat připojovací řetězec, koncový bod, přihlašovací údaje tokenu nebo sdílený klíč.
Vlastnost Connection
TableAttribute
definuje, které připojení se používá pro přístup ke službě Table Service. Například [Tables(Connection="MyTableService")]
použije MyTableService
připojení.
Informace o připojení můžete nastavit v nastavení aplikace nebo vlocal.settings.json
Azure Portal.
Při přidávání nastavení do souboru local.settings.json ho umístěte pod Values
vlastnost:
{
"IsEncrypted": false,
"Values": {
"MyTableService": "..."
}
}
Při přidávání nastavení do nastavení aplikace v Azure Portal použít zadaný název přímo:
MyTableService = ...
Rozšíření Tabulek ve výchozím nastavení používá AzureWebJobsStorage
název připojení.
Připojovací řetězec
Pokud chcete použít ověřování připojovacích řetězců, přiřaďte hodnotu připojovacího řetězce přímo k nastavení připojení.
<ConnectionName>
= DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net
Použití přihlašovacích údajů koncového bodu a tokenu
POZNÁMKA: Ověřování přihlašovacích údajů tokenu se podporuje pouze pro tabulky úložiště.
<ConnectionName>__endpoint
= https://...table.core.windows.net
Pokud nejsou k dispozici žádné informace o přihlašovacích údaji, použije se DefaultAzureCredential
.
Při použití spravované identity přiřazené uživatelem clientId
je potřeba zadat nastavení a credential
:
<ConnectionName>__credential
= managedidentity
<ConnectionName>__clientId
= <user-assigned client id>
Použití přihlašovacích údajů sdíleného klíče
Při použití ověřování endpoint
accountKey
pomocí sdíleného klíče je potřeba zadat a accountName
.
<ConnectionName>__endpoint
= https://...table.core.windows.net
<ConnectionName>__credential__accountName
= <account name>
<ConnectionName>__credential__accountKey
= <account key>
Klíčové koncepty
Vstupní vazba umožňuje číst tabulku jako vstup do funkce Azure. Výstupní vazba umožňuje upravovat a odstraňovat řádky tabulky ve funkci Azure Functions.
Projděte si kurz vstupní vazby a kurz výstupní vazby a seznamte se s používáním tohoto rozšíření pro přístup ke službě Table Service.
Příklady
Rozšíření tabulek poskytují pouze vazby. Vazby samy o sobě nemůžou aktivovat funkci. Může jenom číst nebo zapisovat položky do tabulky.
V následujícím příkladu použijeme k vyvolání funkce trigger HTTP .
Vazba na jednu entitu
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"]}");
}
}
Vazba na jednu entitu pomocí typu modelu
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}");
}
}
Vazba na více entit s filtrem
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"]}");
}
}
}
Vytvoření jedné entity
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"
};
}
}
Vytvoření jedné entity pomocí modelu
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"
};
}
}
Vytváření více entit
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()
});
}
}
}
Vytváření více entit pomocí modelu
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()
});
}
}
}
Vazba na typ TableClient sady SDK
Použijte parametr metody TableClient pro přístup k tabulce pomocí sady 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()
});
}
}
Řešení potíží
Pokyny k řešení potíží najdete v tématu Monitorování Azure Functions.
Další kroky
Přečtěte si úvod ke službě Azure Functions nebo si přečtěte průvodce vytvořením funkce Azure Functions.
Přispívání
Podrobnosti o sestavování, testování a přispívání do této knihovny najdete v CONTRIBUTING.md .
Tento projekt vítá příspěvky a návrhy. Většina příspěvků vyžaduje souhlas s licenční smlouvou s přispěvatelem (CLA), která stanoví, že máte právo udělit nám práva k používání vašeho příspěvku a skutečně tak činíte. Podrobnosti najdete na cla.microsoft.com.
Tento projekt přijal pravidla chování pro Microsoft Open Source. Další informace najdete v nejčastějších dotazech k pravidlům chování nebo se obraťte na opencode@microsoft.com případné další dotazy nebo komentáře.