You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

New-CosmosDbContext提示无资源令牌无法获取Cosmos DB集合怎么办

问题根因说明

VERBOSE: Context does not contain any resource tokens 日志表示CosmosDB PowerShell模块初始化上下文时,未从服务端获取到有效的资源访问令牌,后续集合查询请求无有效授权因此返回空结果。

定位步骤

  • 校验CosmosDB模块版本:执行Get-Module -Name CosmosDB -ListAvailable查看模块版本,确认是否近期自动更新了版本,新旧版本的认证逻辑差异会导致原有脚本失效。
  • 验证上下文属性:执行$sourceCosmosDbContext | Select-Object *输出上下文全量属性,确认Account、Database、密钥参数是否和预期一致,排查是否存在参数转义、截断问题。
  • 排查网络连通性:执行Test-NetConnection -ComputerName <cosmos账号名>.documents.azure.com -Port 443,确认运行脚本的机器和CosmosDB服务网络连通正常,排查防火墙、VNet规则、私有端点配置更新导致的网络阻断。
  • 检查CosmosDB账号认证配置:登录Azure门户查看CosmosDB账号的「身份验证」设置,确认是否开启了「禁用本地密钥认证」,该配置开启后即使密钥有效也无法通过密钥方式获取授权。
  • 开启Debug日志排查响应:在脚本开头添加$DebugPreference = 'Continue'后重新运行,查看完整请求响应日志,确认是否返回401、403、404等错误状态码。

解决步骤

  • 模块版本问题:卸载当前版本,回退到脚本正常运行时的历史版本即可,示例命令:Install-Module -Name CosmosDB -RequiredVersion <历史版本号> -Force
  • 网络问题:将运行脚本的机器IP添加到CosmosDB防火墙白名单,或修正VNet、私有端点的路由/权限配置。
  • 本地密钥被禁用:可以在Azure门户重新开启本地密钥访问,或改用AAD RBAC方式构造上下文,示例代码:
Connect-AzAccount
$sourceCosmosDbContext = New-CosmosDbContext -Account 'cosmosAccount' -Database 'bdname' -UseAadAuth -Environment 'AzureCloud'
  • 改用官方Az.CosmosDB模块:如果第三方CosmosDB模块兼容性问题较多,可以换用官方Az.CosmosDB模块的命令实现相同逻辑,示例:
Install-Module Az.CosmosDB -Force
Get-AzCosmosDBSqlContainer -ResourceGroupName <资源组名> -AccountName 'cosmosAccount' -DatabaseName 'bdname'

内容的提问来源于stack exchange,提问作者rUbbrdUcky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:36:08