Клиентская библиотека таблиц веб-заданий Azure для .NET версии 1.1.0

Это расширение предоставляет функциональные возможности для доступа к таблицам Azure в Функции Azure.

Начало работы

Установка пакета

Установите расширение Tables с помощью NuGet:

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

Предварительные требования

Для использования этого пакета вам потребуется подписка Azure и учетная запись хранения или учетная запись таблиц Cosmos .

Использование таблиц хранилища

Чтобы создать учетную запись хранения, можно использовать портал Azure, Azure PowerShell или Azure CLI. Ниже приведен пример с использованием Azure CLI:

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

Использование таблиц Cosmos

Для создания таблиц Cosmos можно использовать портал Azure, Azure PowerShell или Azure CLI.

Аутентификация клиента

Подключение представляет набор сведений, необходимых для подключения к службе таблиц. Он может содержать строку подключения, конечную точку, учетные данные маркера или общий ключ.

Свойство ConnectionTableAttribute определяет, какое соединение используется для доступа к службе таблиц. Например, [Tables(Connection="MyTableService")] собирается использовать MyTableService подключение.

Сведения о подключении можно задать в local.settings.jsonили в параметрах приложения в портал Azure.

При добавлении параметра в local.settings.json поместите его в Values свойство :

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

При добавлении параметра в параметры приложения в портал Azure используйте предоставленное имя напрямую:

MyTableService = ...

Расширение Tables использует AzureWebJobsStorage имя подключения по умолчанию.

строку подключения.

Для использования строк подключения при проверке подлинности назначьте значение строки подключения непосредственно параметру подключения.

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

Использование конечной точки и учетных данных маркера

ПРИМЕЧАНИЕ. Проверка подлинности с учетными данными маркера поддерживается только для таблиц хранилища.

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

Если учетные данные не указаны, DefaultAzureCredential используется .

При использовании управляемого удостоверения, назначаемого пользователем clientId , необходимо указать параметры и credential :

<ConnectionName>__credential = managedidentity

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

Использование учетных данных общего ключа

При использовании проверки подлинности с общим ключомendpointнеобходимо указать и accountKeyaccountName .

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

<ConnectionName>__credential__accountName = <account name>

<ConnectionName>__credential__accountKey = <account key>

Основные понятия

Входная привязка позволяет считывать таблицу в качестве входных данных в функцию Azure. Выходная привязка позволяет изменять и удалять строки таблицы в функции Azure.

Ознакомьтесь с учебниками по входным и выходным привязкам , чтобы узнать об использовании этого расширения для доступа к службе таблиц.

Примеры

Расширения таблиц предоставляют только привязки. Привязки сами по себе не могут активировать функцию. Он может только считывать или записывать записи в таблицу.

В следующем примере для вызова функции используется триггер HTTP .

Привязка к одной сущности

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

Привязка к типу TableClient пакета SDK

Используйте параметр метода TableClient для доступа к таблице с помощью пакета SDK для таблиц Azure.

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

Устранение неполадок

Рекомендации по устранению неполадок см. в разделе Мониторинг Функции Azure.

Дальнейшие действия

Ознакомьтесь с общими сведениями о Функции Azure или руководством по созданию функции Azure.

Участие

Дополнительные сведения о создании, тестировании и участии в этой библиотеке см. в CONTRIBUTING.md.

На этом проекте приветствуются публикации и предложения. Для участия в большинстве процессов по разработке документации необходимо принять лицензионное соглашение участника (CLA), в котором указывается, что вы предоставляете нам права на использование ваших публикаций. Дополнительные сведения см . на странице cla.microsoft.com.

В рамках этого проекта действуют правила поведения в отношении продуктов с открытым исходным кодом Майкрософт. Дополнительные сведения см. в разделе часто задаваемых вопросов о правилах поведения или обратитесь к opencode@microsoft.com с любыми дополнительными вопросами или комментариями.

Просмотры