Триггер Azure Cosmos DB для Функций Azure 2.x и более поздних версий
Триггер Azure Cosmos DB использует канал изменений Azure Cosmos DB для прослушивания вставок и обновлений между секциями. Канал изменений публикует новые и обновленные элементы, не включая обновления из удаления.
Сведения об установке и настройке см. в обзорной статье.
Решения по масштабированию Cosmos DB для планов "Потребление" и "Премиум" выполняются с помощью масштабирования на основе целевого объекта. Дополнительные сведения см. в статье о масштабировании на основе целевого объекта.
Внимание
В этой статье используются вкладки для поддержки нескольких версий модели программирования Node.js. Модель версии 4 общедоступна и предназначена для более гибкого и интуитивно понятного интерфейса для разработчиков JavaScript и TypeScript. Дополнительные сведения о том, как работает модель версии 4, см. в руководстве разработчика по Функции Azure Node.js. Дополнительные сведения о различиях между версиями 3 и 4 см. в руководстве по миграции.
Функции Azure поддерживает две модели программирования для Python. Способ определения привязок зависит от выбранной модели программирования.
Модель программирования Python версии 2 позволяет определять привязки с помощью декораторов непосредственно в коде функции Python. Дополнительные сведения см. в руководстве разработчика Python.
Эта статья поддерживает обе модели программирования.
Пример
Использование триггера зависит от версии пакета расширения и модальности C#, применяемой в приложении-функции. Это может быть один из следующих вариантов:
Изолированная библиотека классов рабочих процессов, скомпилированная функция C# выполняется в процессе, изолированном от среды выполнения.
Следующие примеры зависят от версии расширения для заданного режима C#.
Этот пример относится к простому типу ToDoItem
:
public class ToDoItem
{
public string? Id { get; set; }
public string? Description { get; set; }
}
Следующая функция вызывается при вставке или обновлении в указанной базе данных и коллекции.
[Function("CosmosTrigger")]
public void Run([CosmosDBTrigger(
databaseName: "ToDoItems",
containerName:"TriggerItems",
Connection = "CosmosDBConnection",
LeaseContainerName = "leases",
CreateLeaseContainerIfNotExists = true)] IReadOnlyList<ToDoItem> todoItems,
FunctionContext context)
{
if (todoItems is not null && todoItems.Any())
{
foreach (var doc in todoItems)
{
_logger.LogInformation("ToDoItem: {desc}", doc.Description);
}
}
}
Эта функция вызывается при вставке или обновлении в указанной базе данных и контейнере.
Из-за изменений схемы в пакете SDK для Azure Cosmos DB версии 4.x расширения Azure Cosmos DB требуется azure-functions-java-library версии 3.0.0 для функций Java.
@FunctionName("CosmosDBTriggerFunction")
public void run(
@CosmosDBTrigger(
name = "items",
databaseName = "ToDoList",
containerName = "Items",
leaseContainerName="leases",
connection = "AzureCosmosDBConnection",
createLeaseContainerIfNotExists = true
)
Object inputItem,
final ExecutionContext context
) {
context.getLogger().info("Items modified: " + inputItems.size());
}
В библиотеке среды выполнения функций Java используйте заметку @CosmosDBTrigger
о параметрах, значение которых будет поступать из Azure Cosmos DB. Эта заметка может использоваться с собственными типами Java, объектами POJO или значениями, допускающими значения NULL, используя Optional<T>
.
В следующем примере показана функция триггера TypeScript для Azure Cosmos DB. Функция записывает сообщения журнала при добавлении или изменении записей Azure Cosmos DB.
import { app, InvocationContext } from '@azure/functions';
export async function cosmosDBTrigger1(documents: unknown[], context: InvocationContext): Promise<void> {
context.log(`Cosmos DB function processed ${documents.length} documents`);
}
app.cosmosDB('cosmosDBTrigger1', {
connection: '<connection-app-setting>',
databaseName: 'Tasks',
containerName: 'Items',
createLeaseContainerIfNotExists: true,
handler: cosmosDBTrigger1,
});
В следующем примере показана функция триггера JavaScript в Azure Cosmos DB. Функция записывает сообщения журнала при добавлении или изменении записей Azure Cosmos DB.
const { app } = require('@azure/functions');
app.cosmosDB('cosmosDBTrigger1', {
connection: '<connection-app-setting>',
databaseName: 'Tasks',
containerName: 'Items',
createLeaseContainerIfNotExists: true,
handler: (documents, context) => {
context.log(`Cosmos DB function processed ${documents.length} documents`);
},
});
В следующем примере показано, как запустить функцию в качестве изменений данных в Azure Cosmos DB.
{
"type": "cosmosDBTrigger",
"name": "documents",
"direction": "in",
"leaseCollectionName": "leases",
"connectionStringSetting": "<connection-app-setting>",
"databaseName": "Tasks",
"collectionName": "Items",
"createLeaseCollectionIfNotExists": true
}
Обратите внимание, что некоторые имена атрибутов привязки изменились в версии 4.x расширения Azure Cosmos DB.
В файле run.ps1 вы имеете доступ к документу, активирующему функцию, через параметр $Documents
.
param($Documents, $TriggerMetadata)
Write-Host "First document Id modified : $($Documents[0].id)"
В следующем примере показана привязка триггера Azure Cosmos DB. Пример зависит от того, используется ли модель программирования Python версии 1 или версии 2.
import logging
import azure.functions as func
app = func.FunctionApp()
@app.function_name(name="CosmosDBTrigger")
@app.cosmos_db_trigger(name="documents",
connection="CONNECTION_SETTING",
database_name="DB_NAME",
container_name="CONTAINER_NAME",
lease_container_name="leases",
create_lease_container_if_not_exists="true")
def test_function(documents: func.DocumentList) -> str:
if documents:
logging.info('Document id: %s', documents[0]['id'])
Атрибуты
В библиотеках C#, выполняемых как внутри процесса, так и в изолированном процессе, для определения функции используется атрибут CosmosDBTriggerAttribute. Вместо этого скрипт C# использует файл конфигурации function.json, как описано в руководстве по скриптам C#.
Свойство атрибута | Description |
---|---|
Соединение | Имя параметра или коллекции параметров приложения, указывающих, как подключиться к отслеживаемой учетной записи Azure Cosmos DB. Дополнительные сведения см. в разделе Соединения. |
DatabaseName | Имя базы данных Azure Cosmos DB с отслеживаемым контейнером. |
Имя контейнера | Имя отслеживаемого контейнера. |
LeaseConnection | (Необязательно) Имя параметра или коллекции параметров приложения, указывающее, как подключиться к учетной записи Azure Cosmos DB, содержащей контейнер аренды. Если значение не задано, используется значение Connection . Этот параметр задается автоматически при создании привязки на портале. Строка подключения для контейнера аренд должна иметь разрешения на запись. |
LeaseDatabaseName | (Необязательно.) Имя базы данных, в которой содержится контейнер, используемый для хранения аренд. Если значение не задано, используется значение параметра databaseName . |
LeaseContainerName | (Необязательно.) Имя контейнера, используемого для хранения аренд. Если значение не задано, используется значение leases . |
CreateLeaseContainerIfNotExists | (Необязательно.) Если задано значение true , контейнер аренд создается автоматически, если он еще не создан. Значение по умолчанию — false . При использовании удостоверений Microsoft Entra, если задано значение true , создание контейнеров не является разрешенной операцией , и функция не сможет запуститься. |
LeasesContainerThroughput | (Необязательно.) Определяет количество единиц запроса для назначения при создании контейнера аренд. Этот параметр используется, только если для CreateLeaseContainerIfNotExists задано значение true . Этот параметр задается автоматически при создании привязки с помощью портала. |
LeaseContainerPrefix | (Необязательно.) Если этот параметр задан, значение добавляется в качестве префикса к арендам, созданным в контейнере аренд для этой функции. Использование префикса позволяет двум отдельным Функциям Azure совместно применять один контейнер аренд с помощью разных префиксов. |
FeedPollDelay | (Необязательно.) Определяет задержку между опросами секции на наличие новых изменений в веб-канале, после того как все текущие изменения будут утеряны (в миллисекундах). Значение по умолчанию равно 5000 миллисекунд, или 5 секундам. |
LeaseAcquireInterval | (Дополнительно) Если параметр задан, то он определяет интервал для запуска задачи вычисления при условии равномерности распределения секций между известными экземплярами узла (в миллисекундах). По умолчанию это 13000 (13 секунд). |
LeaseExpirationInterval | (Дополнительно) Если параметр задан, то он определяет интервал, за который берется аренда, представляющая секцию (в миллисекундах). Если аренда не будет обновлена в течение этого интервала, это приведет к ее истечению и владение секцией перейдет к другому экземпляру. По умолчанию это 60000 (60 секунд). |
LeaseRenewInterval | (Дополнительно) Если параметр задан, то он определяет интервал продления для всех аренд в разделах, которые на данный момент занятые экземплярами (в миллисекундах). По умолчанию это 17000 (17 секунд). |
MaxItemsPerInvocation | (Необязательно.) Если это свойство задано, оно устанавливает максимальное число полученных элементов на вызов функции. Если операции в отслеживаемом контейнере выполняются с помощью хранимых процедур, область транзакции сохраняется при считывании элементов из канала изменений. В результате число полученных элементов может быть выше указанного значения, чтобы элементы, измененные одной транзакцией, возвращались как часть одного атомарного пакета. |
StartFromBeginning | (Необязательно.) Этот параметр указывает триггеру считывать изменения с начала истории изменений контейнера, а не с текущего момента времени. Считывание с начала возможно только при первом запуске триггера, так как при последующих запусках контрольные точки уже будут сохранены. Если установить для этого параметра значение true при уже созданных арендах, этот параметр не будет иметь никакого эффекта. |
StartFromTime | (Необязательно.) Возвращает или задает дату и время для начала инициализации операции чтения канала изменений. Рекомендуемый формат — ISO 8601 с указателем UTC, например 2021-02-16T14:19:29Z . Такой подход используется только для задания начального состояния триггера. После того как триггер перешел в состояние аренды, изменение этого значения не будет иметь никакого эффекта. |
PreferredLocations | (Необязательно.) Определяет предпочтительные расположения (регионы) для геореплицированных учетных записей базы данных в службе Azure Cosmos DB. Значения должны быть разделены запятыми. Например, "Восточная часть США,Центрально-южная часть США,Северная Европа". |
Декораторы
Применяется только к модели программирования Python версии 2.
Для функций Python версии 2, определенных с помощью декоратора, в следующих свойствах cosmos_db_trigger
:
Свойство | Description |
---|---|
arg_name |
Имя переменной, используемое в коде функции, представляющей список документов с изменениями. |
database_name |
Имя базы данных Azure Cosmos DB с отслеживаемой коллекцией. |
collection_name |
Имя отслеживаемой коллекции Azure Cosmos DB. |
connection |
Строка подключения отслеживаемой базы данных Azure Cosmos DB. |
Сведения о функциях Python, определенных с помощью function.json, см. в разделе "Конфигурация ".
Заметки
Из-за изменений схемы в пакете SDK для Azure Cosmos DB версии 4.x расширения Azure Cosmos DB требуется azure-functions-java-library версии 3.0.0 для функций Java.
Используйте заметку @CosmosDBTrigger
по параметрам, считывающим данные из Azure Cosmos DB. Эта заметка поддерживает следующие свойства:
Свойство атрибута | Description |
---|---|
Подключение | Имя параметра или коллекции параметров приложения, указывающих, как подключиться к отслеживаемой учетной записи Azure Cosmos DB. Дополнительные сведения см. в разделе Соединения. |
name | Имя функции. |
databaseName | Имя базы данных Azure Cosmos DB с отслеживаемым контейнером. |
containerName | Имя отслеживаемого контейнера. |
leaseConnectionStringSetting | (Необязательно) Имя параметра или коллекции параметров приложения, указывающее, как подключиться к учетной записи Azure Cosmos DB, содержащей контейнер аренды. Если значение не задано, используется значение Connection . Этот параметр задается автоматически при создании привязки на портале. Строка подключения для контейнера аренд должна иметь разрешения на запись. |
leaseDatabaseName | (Необязательно.) Имя базы данных, в которой содержится контейнер, используемый для хранения аренд. Если значение не задано, используется значение параметра databaseName . |
leaseContainerName | (Необязательно.) Имя контейнера, используемого для хранения аренд. Если значение не задано, используется значение leases . |
createLeaseContainerIfNotExists | (Необязательно.) Если задано значение true , контейнер аренд создается автоматически, если он еще не создан. Значение по умолчанию — false . При использовании удостоверений Microsoft Entra, если задано значение true , создание контейнеров не является разрешенной операцией , и функция не запустится. |
leasesContainerThroughput | (Необязательно.) Определяет количество единиц запроса для назначения при создании контейнера аренд. Этот параметр используется, только если для CreateLeaseContainerIfNotExists задано значение true . Этот параметр задается автоматически при создании привязки с помощью портала. |
leaseContainerPrefix | (Необязательно.) Если этот параметр задан, значение добавляется в качестве префикса к арендам, созданным в контейнере аренд для этой функции. Использование префикса позволяет двум отдельным Функциям Azure совместно применять один контейнер аренд с помощью разных префиксов. |
feedPollDelay | (Необязательно.) Определяет задержку между опросами секции на наличие новых изменений в веб-канале, после того как все текущие изменения будут утеряны (в миллисекундах). Значение по умолчанию равно 5000 миллисекунд, или 5 секундам. |
leaseAcquireInterval | (Дополнительно) Если параметр задан, то он определяет интервал для запуска задачи вычисления при условии равномерности распределения секций между известными экземплярами узла (в миллисекундах). По умолчанию это 13000 (13 секунд). |
leaseExpirationInterval | (Дополнительно) Если параметр задан, то он определяет интервал, за который берется аренда, представляющая секцию (в миллисекундах). Если аренда не продлевается в течение этого интервала, срок ее действия истекает, а владение секцией переходит к другому экземпляру. По умолчанию это 60000 (60 секунд). |
leaseRenewInterval | (Дополнительно) Если параметр задан, то он определяет интервал продления для всех аренд в разделах, которые на данный момент занятые экземплярами (в миллисекундах). По умолчанию это 17000 (17 секунд). |
maxItemsPerInvocation | (Необязательно.) Если это свойство задано, оно устанавливает максимальное число полученных элементов на вызов функции. Если операции в отслеживаемом контейнере выполняются с помощью хранимых процедур, область транзакции сохраняется при считывании элементов из канала изменений. В результате число полученных элементов может быть выше указанного значения, чтобы элементы, измененные одной транзакцией, возвращались как часть одного атомарного пакета. |
startFromBeginning | (Необязательно.) Этот параметр указывает триггеру считывать изменения с начала истории изменений контейнера, а не с текущего момента времени. Считывание с начала возможно только при первом запуске триггера, так как при последующих запусках контрольные точки уже будут сохранены. Если установить для этого параметра значение true при уже созданных арендах, этот параметр не будет иметь никакого эффекта. |
preferredLocations | (Необязательно.) Определяет предпочтительные расположения (регионы) для геореплицированных учетных записей базы данных в службе Azure Cosmos DB. Значения должны быть разделены запятыми. Например, "Восточная часть США,Центрально-южная часть США,Северная Европа". |
Настройка
Применяется только к модели программирования Python версии 1.
В следующей таблице описываются свойства, которые можно задать для options
объекта, переданного методу app.cosmosDB()
. direction
Свойства type
и name
свойства не применяются к модели версии 4.
В следующей таблице описаны свойства конфигурации привязки, задаваемые в файле function.json, свойства в котором различаются по версии расширения:
Свойство в function.json | Описание |
---|---|
type | Должен иметь значениеcosmosDBTrigger . |
direction | Должен иметь значениеin . Этот параметр задается автоматически при создании триггера на портале Azure. |
name | Имя переменной, используемое в коде функции, представляющей список документов с изменениями. |
Подключение | Имя параметра или коллекции параметров приложения, указывающих, как подключиться к отслеживаемой учетной записи Azure Cosmos DB. Дополнительные сведения см. в разделе Соединения. |
databaseName | Имя базы данных Azure Cosmos DB с отслеживаемым контейнером. |
containerName | Имя отслеживаемого контейнера. |
leaseConnection | (Необязательно.) Имя параметра или контейнера параметров приложения, указывающих, как подключиться к учетной записи Azure Cosmos DB, в которой хранится контейнер аренд. Если значение не задано, используется значение connection . Этот параметр задается автоматически при создании привязки на портале. Строка подключения для контейнера аренд должна иметь разрешения на запись. |
leaseDatabaseName | (Необязательно.) Имя базы данных, в которой содержится контейнер, используемый для хранения аренд. Если значение не задано, используется значение параметра databaseName . |
leaseContainerName | (Необязательно.) Имя контейнера, используемого для хранения аренд. Если значение не задано, используется значение leases . |
createLeaseContainerIfNotExists | (Необязательно.) Если задано значение true , контейнер аренд создается автоматически, если он еще не создан. Значение по умолчанию — false . При использовании удостоверений Microsoft Entra, если задано значение true , создание контейнеров не является разрешенной операцией , и функция не сможет запуститься. |
leasesContainerThroughput | (Необязательно.) Определяет количество единиц запроса для назначения при создании контейнера аренд. Этот параметр используется, только если для createLeaseContainerIfNotExists задано значение true . Этот параметр задается автоматически при создании привязки с помощью портала. |
leaseContainerPrefix | (Необязательно.) Если этот параметр задан, значение добавляется в качестве префикса к арендам, созданным в контейнере аренд для этой функции. Использование префикса позволяет двум отдельным Функциям Azure совместно применять один контейнер аренд с помощью разных префиксов. |
feedPollDelay | (Необязательно.) Определяет задержку между опросами секции на наличие новых изменений в веб-канале, после того как все текущие изменения будут утеряны (в миллисекундах). Значение по умолчанию равно 5000 миллисекунд, или 5 секундам. |
leaseAcquireInterval | (Дополнительно) Если параметр задан, то он определяет интервал для запуска задачи вычисления при условии равномерности распределения секций между известными экземплярами узла (в миллисекундах). По умолчанию это 13000 (13 секунд). |
leaseExpirationInterval | (Дополнительно) Если параметр задан, то он определяет интервал, за который берется аренда, представляющая секцию (в миллисекундах). Если аренда не будет обновлена в течение этого интервала, это приведет к ее истечению и владение секцией перейдет к другому экземпляру. По умолчанию это 60000 (60 секунд). |
leaseRenewInterval | (Дополнительно) Если параметр задан, то он определяет интервал продления для всех аренд в разделах, которые на данный момент занятые экземплярами (в миллисекундах). По умолчанию это 17000 (17 секунд). |
maxItemsPerInvocation | (Необязательно.) Если это свойство задано, оно устанавливает максимальное число полученных элементов на вызов функции. Если операции в отслеживаемом контейнере выполняются с помощью хранимых процедур, область транзакции сохраняется при считывании элементов из канала изменений. В результате число полученных элементов может быть выше указанного значения, чтобы элементы, измененные одной транзакцией, возвращались как часть одного атомарного пакета. |
startFromBeginning | (Необязательно.) Этот параметр указывает триггеру считывать изменения с начала истории изменений контейнера, а не с текущего момента времени. Считывание с начала возможно только при первом запуске триггера, так как при последующих запусках контрольные точки уже будут сохранены. Если установить для этого параметра значение true при уже созданных арендах, этот параметр не будет иметь никакого эффекта. |
startFromTime | (Необязательно.) Возвращает или задает дату и время для начала инициализации операции чтения канала изменений. Рекомендуемый формат — ISO 8601 с указателем UTC, например 2021-02-16T14:19:29Z . Такой подход используется только для задания начального состояния триггера. После того как триггер перешел в состояние аренды, изменение этого значения не будет иметь никакого эффекта. |
preferredLocations | (Необязательно.) Определяет предпочтительные расположения (регионы) для геореплицированных учетных записей базы данных в службе Azure Cosmos DB. Значения должны быть разделены запятыми. Например, "Восточная часть США,Центрально-южная часть США,Северная Европа". |
Подробные примеры см. в разделе Примеры.
Использование
Триггеру требуется вторая коллекция, которая используется для хранения аренды в разделах. Отслеживаемая коллекция и та, в которой содержатся аренды, должны быть доступны для успешной работы триггера.
Внимание
Если для одной коллекции настроено несколько функций для использования триггера Azure Cosmos DB, каждая из функций должна использовать выделенную коллекцию аренды или указать другую LeaseCollectionPrefix
для каждой функции. В противном случае активируется только одна из функций. Сведения о префиксе см. в разделе Атрибуты.
Внимание
Если для одной коллекции настроено несколько функций для использования триггера Azure Cosmos DB, каждая из функций должна использовать выделенную коллекцию аренды или указать другую leaseCollectionPrefix
для каждой функции. В противном случае активируется только одна из функций. Сведения о префиксе см. в разделе Заметки.
Внимание
Если для одной коллекции настроено несколько функций для использования триггера Azure Cosmos DB, каждая из функций должна использовать выделенную коллекцию аренды или указать другую leaseCollectionPrefix
для каждой функции. В противном случае активируется только одна из функций. Сведения о префиксе см. в разделе с конфигурацией.
Триггер не указывает, был ли документ обновлен или вставлен. Вместо этого он представляет сам документ. Если операции обновления и вставки необходимо обрабатывать по-разному, это можно сделать, внедрив поля меток времени для операций обновления и вставки.
Тип параметра, поддерживаемый триггером Azure Cosmos DB, зависит от версии среды выполнения Функций, версии пакета расширения и используемой модальности C#.
Если требуется, чтобы функция обрабатывала один документ, триггер Cosmos DB может привязаться к следующим типам:
Тип | Описание |
---|---|
Сериализуемые в JSON типы | Функции пытаются десериализировать данные JSON документа из канала изменений Cosmos DB в обычный тип объекта CLR (POCO). |
Если требуется, чтобы функция обрабатывала пакет документов, триггер Cosmos DB может привязаться к следующим типам:
Тип | Описание |
---|---|
IEnumerable<T> где T является сериализуемым типом JSON |
Перечисление сущностей, включенных в пакет. Каждая запись представляет один документ из канала изменений Cosmos DB. |
Связи
Свойства connectionStringSetting
/connection
и leaseConnectionStringSetting
/leaseConnection
являются ссылками на конфигурацию среды, которая указывает, как приложение должно подключаться к Azure Cosmos DB. В них может быть указано следующее:
- Имя параметра приложения, содержащего строку подключения.
- Имя общего префикса для нескольких параметров приложения, а также определение подключения на основе удостоверений. Этот параметр доступен только для версий
connection
иleaseConnection
из версии расширения 4.x или выше.
Если настроенное значение одновременно точно соответствует одному параметру и является префиксом для других параметров, то используется точное совпадение.
Connection string
Строка подключения для учетной записи базы данных должна храниться в параметре приложения с именем, соответствующим значению, которое указано свойством подключения конфигурации привязки.
Подключения на основе удостоверений
Если вы используете расширение версии 4.x или более поздней версии, вместо использования строка подключения с секретом, приложение может использовать удостоверение Microsoft Entra. Для этого необходимо определить параметры с общим префиксом, который соответствует свойству подключения в конфигурации триггера и привязки.
В этом режиме для расширения требуются следующие свойства:
Свойство | Шаблон переменной среды | Description | Пример значения |
---|---|---|---|
Конечная точка учетной записи | <CONNECTION_NAME_PREFIX>__accountEndpoint |
URI конечной точки учетной записи Azure Cosmos DB. | https://<database_account_name>.documents.azure.com:443/ |
Для настройки подключения можно задать дополнительные свойства. См. раздел Общие свойства подключений на основе удостоверений.
При размещении в службе "Функции Azure" для подключений на основе удостоверений используется управляемое удостоверение. По умолчанию используется назначаемое системой удостоверение, однако вы можете указать назначаемое пользователем удостоверение с помощью свойств credential
и clientID
. Обратите внимание, что настройка назначаемого пользователем удостоверения с идентификатором ресурса не поддерживается. При выполнении в других контекстах, например при локальной разработке, вместо этого используется удостоверение разработчика, хотя это можно настроить. См. раздел Локальная разработка с использованием подключений на основе удостоверений.
Предоставление разрешения удостоверению
Любое используемое удостоверение должно иметь разрешения на выполнение предполагаемых действий. Для большинства служб Azure это означает, что необходимо назначить роль в Azure RBAC, используя встроенные или настраиваемые роли, которые предоставляют эти разрешения.
Внимание
Иногда целевая служба может предоставлять разрешения, которые не являются обязательными для всех контекстов. Там, где это возможно, придерживайтесь принципа минимальных привилегий, предоставляя удостоверению лишь самые необходимые привилегии. Например, если приложению требуется только возможность чтения из источника данных, используйте роль, которая имеет разрешение только на чтение. Было бы неуместным назначить роль, которая также разрешает запись в эту службу, так как это разрешение не требуется для операции чтения. Соответственно необходимо еще проверить, что область действия назначенной роли ограничена только теми ресурсами, которые необходимо прочитать.
Cosmos DB не использует Azure RBAC для операций с данными. Вместо этого она использует встроенную систему RBAC Cosmos DB, созданную на основе аналогичных концепций. Вам потребуется создать назначение ролей, которое предоставляет доступ к учетной записи базы данных во время выполнения. Роли управления Azure RBAC, такие как владелец , недостаточно. В следующей таблице показаны встроенные роли, которые рекомендуется использовать при использовании расширения Azure Cosmos DB в обычной работе. Приложению могут потребоваться дополнительные разрешения в зависимости от написанного кода.
Тип привязки | Пример встроенных ролей1 |
---|---|
Триггер2 | Встроенный участник данных Cosmos DB |
Входные привязки | Встроенное средство чтения данных Cosmos DB |
Выходные привязки | Встроенный участник данных Cosmos DB |
1 Эти роли нельзя использовать в назначении ролей RBAC Azure. Дополнительные сведения о назначении этих ролей см. в встроенной системной документации по RBAC Cosmos DB.
2 При использовании удостоверения Cosmos DB обрабатывает создание контейнера как операцию управления. Он недоступен в качестве операции плоскости данных для триггера. Перед настройкой функции необходимо создать контейнеры, необходимые триггеру (включая контейнер аренды).