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 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.