Azure Cosmos DB 数据资源管理器无法连接
有时,Azure Cosmos DB 数据资源管理器无法连接到帐户或针对资源或项执行操作。 本文介绍此问题的潜在原因和解决方案。
重要
Azure Cosmos DB 数据资源管理器不适用于适用于 PostgreSQL 的 API 或 vCore API。
先决条件
现有的 Azure Cosmos DB for NoSQL、MongoDB RU、Apache Cassandra、Apache Gremlin 或表帐户
现象
即使启用“允许从 Azure 门户访问”选项后,也无法连接到数据资源管理器。
原因
即使在配置正确的基于角色的访问控制和门户权限之后,也必须根据所选 API 配置额外的网络访问要求。
某些服务(如 API for NoSQL、用于 Apache Gremlin 的 API 和用于表的 API)使用客户端 JavaScript SDK 来执行操作,并需要一组解决方案。
其他服务(如用于 MongoDB RU 的 API 和 Apache Cassandra 的 API)使用特定于协议的中间件,并需要替代解决方案。
适用于 NoSQL、Apache Gremlin 或 Table 的 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.
表 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 documents
或Failed 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.