Клиентская библиотека таблиц веб-заданий 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.
Аутентификация клиента
Подключение представляет набор сведений, необходимых для подключения к службе таблиц. Он может содержать строку подключения, конечную точку, учетные данные маркера или общий ключ.
Свойство Connection
TableAttribute
определяет, какое соединение используется для доступа к службе таблиц. Например, [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
необходимо указать и accountKey
accountName
.
<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 с любыми дополнительными вопросами или комментариями.