我正在尝试使用 mongorestore 命令恢复 Cosmos 上转储的数据库,但不幸的是它抛出了如下错误:
运行创建命令时出错:(未经授权)错误=13,详细信息='响应状态代码不表示成功:禁止(403);子状态:0;活动ID:421d33eb-dea0-4372-92b0-ece63fd2b357;原因:(“不允许通过 Azure Cosmos DB 终结点对资源“dbs”执行“POST”操作。请为您的帐户打开此类操作,或通过 Azure 资源管理器、Azure 门户、Azure CLI 或 Azure Powershell 执行此操作” ActivityId:421d33eb-dea0-4372-92b0-ece63fd2b357,Microsoft.Azure.Documents.Common/2.11.0,请参阅CosmosDiagnostics、Windows/10.0.14393 cosmos-netstandard-sdk/3.3.2); 2020-08-25T20:47:42.088+0530 0 个文档已成功恢复。 0 个文档恢复失败。
我按照 Microsoft 提供的此链接来迁移数据:https://azure.microsoft.com/en-in/resources/videos/using-mongodb-tools-with-azure-cosmos-db/
恢复DB使用的命令如下:
mongorestore --host 主机名:端口 -u 用户名 -p 密码 --db DBNAME DUMPED_DB_DIRECTORY_PATH --ssl --sslAllowInvalidCertificates
它指的是哪个帐户来启用该操作以及如何在日志中突出显示的我的帐户上启用该操作? Azure CLI 或门户中是否有与 mongorestore 等效的东西?
我也尝试恢复单个集合,但出现了同样的错误。我成功地从另一个 Cosmos DB 实例转储数据。
这是 Azure 策略方面的问题。与 Cosmos DB 相关的 Azure 策略已启用,该策略阻止基于密钥的元数据写入访问,因此无法在数据库中进行任何更改。该组织制定了该策略,现在在禁用该策略后已解决。
在 Azure Cosmos MongoDB 上实现 PartitionKeys 后尝试更新元数据时,我们遇到了此错误。
我们可以通过更改 Cosmos 帐户属性来解决此问题:
disableKeyBasedMetadataWriteAccess
从 true
更改为 false
。
我们使用 terraform 并能够通过
access_key_metadata_writes_enabled
设置来完成。
https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/resources/cosmosdb_account#access_key_metadata_writes_enabled
这也可以通过 Azure Cli 建立:
az cosmosdb update --disable-key-based-metadata-write-access false --name MyCosmosDBDatabaseAccount --resource-group MyResourceGroup