【发布时间】:2018-10-16 15:53:06
【问题描述】:
前面的问题有点长,但请耐心等待:CosmosDB PM 在this 反馈线程中解释:
在 Cosmos DB 中,所有资源,例如数据库、集合/表/图、用户、权限、文档/项目/节点/边、附件都是运行时资源。您可以使用运行时 SDK 和 REST API 对这些资源进行 CRUD/查询。 [...] 所有“运行时资源”[...] 旨在供开发人员直接在其应用程序中使用。
用于管理目的的唯一资源是“数据库帐户”。此资源通过 ARM 公开。
因此,只能使用 ARM(Azure 资源管理器)预配资源“CosmosDB”,例如在 CI/CD 管道中,例如使用 Azure DevOps。
所以现在我的问题是:在 CosmosDB 帐户中创建数据库和集合的正确方法是什么?
假设我正在使用一个 Azure 函数来存储/读取 CosmosDB 中的数据。使用函数绑定我可以使用例如
[DocumentDB("ToDoList", "Migration", ConnectionStringSetting = "CosmosDB", CreateIfNotExists = true)] IAsyncCollector<Document> documentsToStore)
创建数据库和集合。我可以使用手动实例化 DocumentClient
await client.CreateDatabaseIfNotExistsAsync(database);
但是:这是正确的方法吗?例如,在 Function 绑定中执行此操作意味着在第一次执行 Function 之前不会创建集合。就是感觉不对。
或者是否应该在部署 ARM 脚本后使用部署管道中的 Powershell 脚本来创建数据库和集合?这当然是可行的,但如果这是推荐的方式,人们可能会认为这应该通过 ARM 公开。
【问题讨论】:
-
我在另一个问题上回答了这个问题,该问题得到了相同的问题:### 如何使用基础设施部署容器/集合,而无需在启动期间运行可选的引导代码?
现在存在 ARM 模板来配置这些。 stackoverflow.com/a/55962822/237723
标签: c# azure azure-functions azure-cosmosdb azure-resource-manager