Sdílet prostřednictvím


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 ConnectionTableAttribute 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í endpointaccountKeypomocí 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.

Imprese