Azure Cosmos DB 数据资源管理器无法连接

有时,Azure Cosmos DB 数据资源管理器无法连接到帐户或对资源或项执行操作。 本文介绍此问题的潜在原因和解决方案。

重要

Azure Cosmos DB 数据资源管理器不适用于 API for PostgreSQL 或 API for vCore。

先决条件

现有的 Azure Cosmos DB for NoSQL、MongoDB RU、Apache Cassandra、Apache Gremlin 或表帐户

症状

即使启用“允许从 Azure 门户访问”选项,也无法连接到 数据资源管理器。

原因

即使配置了正确的基于角色的访问控制和门户权限,也必须根据所选 API 配置额外的网络访问要求。

  • 某些服务(如 API for NoSQL、API for Apache Gremlin 和 API for Table)使用客户端 JavaScript SDK 来执行操作,并需要一组解决方案。

  • 其他服务(例如 API for MongoDB RU 和 API for Apache Cassandra)使用特定于协议的中间件,并且需要替代解决方案。

适用于 NoSQL、Apache Gremlin 或表的 API 的解决方案

数据库、容器、图形和表 (控制平面) 操作通过使用 Azure Cosmos DB 资源提供程序通过调用 Azure 资源管理器控制平面来执行。 网络配置不会影响这些操作。

项 (数据平面) 操作是在浏览器上下文中使用 JavaScript SDK 执行的。 当前使用的设备必须具有对帐户的直接网络访问权限。

  • 对于配置了 公共访问权限 (所有网络) 的帐户,数据平面操作不应有任何与网络相关的连接问题。

  • 对于配置了 公共访问权限 (所选网络) 的帐户,必须创建防火墙规则以允许从当前设备访问帐户。 Azure 门户服务页中的“网络”功能具有可自动添加 IP 地址的“添加当前 IP (...) ”超链接。

  • 如果帐户没有防火墙规则,数据资源管理器将引发可在数据资源管理器通知中观察到的错误。 此错误消息包含类似于以下示例的文本:

    API 错误
    Nosql Request originated from IP XXX.XXX.XXX.XXX through public internet. This is blocked by your Cosmos DB account firewall settings.
    Apache Gremlin Failure in submitting query: g.V(): Request originated from IP XXX.XXX.XXX.XXX through public internet. This is blocked by your Cosmos DB account firewall settings.
    Table Error while refreshing databases: Request originated from IP XXX.XXX.XXX.XXX through public internet. This is blocked by your Cosmos DB account firewall settings.
  • 对于配置为 禁用公共访问的帐户,设备必须连接到虚拟网络,并且该虚拟网络必须连接到该帐户,数据平面操作才能正常运行。

适用于 MongoDB RU 或 Apache Cassandra 的 API 的解决方案

分别查看控制平面和数据平面解决方案。

数据库、密钥空间和集合 (控制平面) 操作通过使用 Azure Cosmos DB 资源提供程序通过调用 Azure 资源管理器控制平面来执行。 网络配置不会影响这些操作。

项 (数据平面) 操作使用 API 中间件中的代理服务执行。 此服务有助于在项操作和查询中使用服务本机 (MongoDB、Cassandra) 协议。 代理服务需要对帐户进行直接网络访问。

  • 对于配置了 公共访问权限 (所有网络) 的帐户,数据平面操作不应有任何与网络相关的连接问题。

  • 对于配置了公共访问权限 (所选网络) 的帐户,必须在Azure 门户服务页的“网络”功能中选择“允许从 Azure 门户访问”。 此选项添加一系列包含中间件服务的 IP 地址。 无需添加当前设备的 IP 地址。

  • 如果帐户没有防火墙规则,数据资源管理器将引发可在浏览器开发人员工具中观察到的错误。 此错误消息包含中间件服务生成的泛型 Error querying documentsFailed to establish connection with cassandra node 消息。 展开的错误消息包含在计算网关日志中,类似于以下示例:

    Request originated from IP XXX.XXX.XXX.XXX through public internet. This is blocked by your Cosmos DB account firewall settings.