Udostępnij za pośrednictwem


Biblioteka klienta tabel usługi Azure WebJobs dla platformy .NET — wersja 1.1.0

To rozszerzenie zapewnia funkcjonalność uzyskiwania dostępu do tabel platformy Azure w Azure Functions.

Wprowadzenie

Instalowanie pakietu

Zainstaluj rozszerzenie Tables za pomocą narzędzia NuGet:

dotnet add package Microsoft.Azure.WebJobs.Extensions.Tables

Wymagania wstępne

Do korzystania z tego pakietu potrzebna jest subskrypcja platformy Azure oraz konto magazynu lub konto tabel usługi Cosmos .

Korzystanie z tabel magazynu

Aby utworzyć nowe konto magazynu, możesz użyć witryny Azure Portal, Azure PowerShell lub interfejsu wiersza polecenia platformy Azure. Oto przykład użycia interfejsu wiersza polecenia platformy Azure:

az storage account create --name <your-resource-name> --resource-group <your-resource-group-name> --location westus --sku Standard_LRS

Korzystanie z tabel cosmos

Aby utworzyć nowe tabele usługi Cosmos, możesz użyć witryny Azure Portal, Azure PowerShell lub interfejsu wiersza polecenia platformy Azure.

Uwierzytelnianie klienta

Połączenie reprezentuje zestaw informacji wymaganych do nawiązania połączenia z usługą tabel. Może zawierać parametry połączenia, punkt końcowy, poświadczenia tokenu lub klucz wspólny.

Właściwość Connection definiuje TableAttribute , które połączenie jest używane do uzyskiwania dostępu do usługi Table Service. Na przykład [Tables(Connection="MyTableService")] użyje MyTableService połączenia.

Informacje o połączeniu można ustawić w local.settings.jsonustawieniach aplikacji lub w Azure Portal.

Podczas dodawania ustawienia do pliku local.settings.json umieść je w Values właściwości :

{
  "IsEncrypted": false,
  "Values": {
    "MyTableService": "..."
  }
}

Podczas dodawania ustawienia do ustawień aplikacji w Azure Portal użyj podanej nazwy bezpośrednio:

MyTableService = ...

Rozszerzenie Tabel domyślnie używa AzureWebJobsStorage nazwy połączenia.

Parametry połączenia

Aby użyć uwierzytelniania parametrów połączenia, przypisz wartość parametrów połączenia bezpośrednio do ustawienia połączenia.

<ConnectionName> = DefaultEndpointsProtocol=https;AccountName=...;AccountKey=...;EndpointSuffix=core.windows.net

Używanie poświadczeń punktu końcowego i tokenu

UWAGA: uwierzytelnianie poświadczeń tokenu jest obsługiwane tylko w przypadku tabel magazynu.

<ConnectionName>__endpoint = https://...table.core.windows.net

Jeśli nie podano żadnych informacji o poświadczeniach DefaultAzureCredential , są używane.

W przypadku korzystania z tożsamości clientId zarządzanej przez użytkownika należy podać ustawienia i credential :

<ConnectionName>__credential = managedidentity

<ConnectionName>__clientId = <user-assigned client id>

Używanie poświadczeń klucza współdzielonego

W przypadku korzystania z uwierzytelniania endpointaccountKeyza pomocą klucza współdzielonego należy podać element .accountName

<ConnectionName>__endpoint = https://...table.core.windows.net

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Kluczowe pojęcia

Powiązanie wejściowe umożliwia odczytywanie tabeli jako danych wejściowych funkcji platformy Azure. Powiązanie danych wyjściowych umożliwia modyfikowanie i usuwanie wierszy tabeli w funkcji platformy Azure.

Postępuj zgodnie z samouczkiem dotyczącym powiązania wejściowego i powiązaniem danych wyjściowych , aby dowiedzieć się więcej o korzystaniu z tego rozszerzenia na potrzeby uzyskiwania dostępu do usługi tabel.

Przykłady

Rozszerzenia tabel udostępniają tylko powiązania. Powiązania same w sobie nie mogą wyzwalać funkcji. Może tylko odczytywać lub zapisywać wpisy w tabeli.

W poniższym przykładzie używamy wyzwalacza HTTP do wywołania funkcji.

Wiązanie z pojedynczą jednostką

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"]}");
    }
}

Wiązanie z pojedynczą jednostką przy użyciu 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}");
    }
}

Wiązanie z wieloma jednostkami za pomocą filtru

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"]}");
        }
    }
}

Tworzenie pojedynczej jednostki

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"
        };
    }
}

Tworzenie pojedynczej jednostki przy użyciu 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"
        };
    }
}

Tworzenie wielu jednostek

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()
            });
        }
    }
}

Tworzenie wielu jednostek przy użyciu 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()
            });
        }
    }
}

Powiązanie z typem TableClient zestawu SDK

Użyj parametru metody TableClient, aby uzyskać dostęp do tabeli przy użyciu zestawu 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()
        });
    }
}

Rozwiązywanie problemów

Zapoznaj się z tematem Monitorowanie Azure Functions, aby uzyskać wskazówki dotyczące rozwiązywania problemów.

Następne kroki

Przeczytaj wprowadzenie do funkcji platformy Azure lub przewodnik tworzenia funkcji platformy Azure.

Współtworzenie

Zobacz CONTRIBUTING.md , aby uzyskać szczegółowe informacje na temat kompilowania, testowania i współtworzenia tej biblioteki.

W tym projekcie zachęcamy do współtworzenia i zgłaszania sugestii. Współtworzenie w większości przypadków wymaga zgody na umowę licencyjną dotyczącą współautorów (CLA, Contributor License Agreement), zgodnie z którą współautor ma prawo udzielić i faktycznie udziela nam praw do używania wytworzonej przez siebie zawartości. Aby uzyskać szczegółowe informacje, odwiedź stronę cla.microsoft.com.

W tym projekcie przyjęto Kodeks postępowania oprogramowania Open Source firmy Microsoft. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące kodeksu postępowania lub skontaktuj się z opencode@microsoft.com dodatkowymi pytaniami lub komentarzami.

Wrażenia