Вопрос еще длиннее, но, пожалуйста, потерпите меня: PM CosmosDB объясняет в эту ветку обратной связи:
В Cosmos DB все ресурсы, например, базы данных, коллекции /таблицы / графики, пользователи, разрешения, документы / элементы / узлы / ребра, вложения - все это ресурсы времени выполнения.Вы можете CRUD / запрашивать эти ресурсы, используя SDK времени выполнения и API REST.[...] Все «ресурсы времени выполнения» [...] предназначены для использования разработчиками непосредственно внутри своих приложений.
Единственный ресурс, предназначенный для административных целей, - это «учетная запись базы данных».Этот ресурс предоставляется через ARM.
Таким образом, только ресурс "CosmosDB" может быть подготовлен с использованием ARM (Azure Resource Manager), например, в конвейере CI / CD, например, с помощью Azure DevOps.
Итак, теперь мой вопрос: Как правильно создать базы данных и коллекции (и) внутри учетной записи CosmosDB?
Допустим, я использую, используюфункция Azure, которая хранит / читает данные из CosmosDB.Используя привязку функций, я мог, например, использовать
[DocumentDB("ToDoList", "Migration", ConnectionStringSetting = "CosmosDB", CreateIfNotExists = true)] IAsyncCollector<Document> documentsToStore)
для создания БД и коллекции.Создавая DocumentClient вручную, я мог бы использовать await client.CreateDatabaseIfNotExistsAsync(database);
Но: это правильный способ сделать это?Выполнение этого, например, в привязке к функции будет означать, что коллекция не будет создана, пока функция не будет выполнена в первый раз.Это просто кажется неправильным.
Или вместо этого следует использовать, например, сценарий Powershell в конвейере развертывания, чтобы создать базу данных и коллекцию после развертывания сценария ARM?Это, конечно, выполнимо, но если это было бы рекомендованным способом, можно утверждать, что это должно быть раскрыто с помощью ARM.