針對 Azure Cosmos DB 禁止的例外狀況進行診斷和疑難排解
適用於:NoSQL
HTTP 狀態碼 403 表示禁止要求完成。
防火牆封鎖要求
資料平面要求可透過下列三個路徑傳送至 Azure Cosmos DB。
- 公用網際網路 (IPv4)
- 服務端點
- 私人端點
當資料平面要求遭到封鎖並出現 403 禁止時,錯誤訊息會指定要求透過上述三個路徑中其中一個傳送至 Azure Cosmos DB。
Request originated from client IP {...} through public internet.
Request originated from client VNET through service endpoint.
Request originated from client VNET through private endpoint.
解決方案
瞭解要求預期會透過哪個路徑傳送至 Azure Cosmos DB。
- 如果錯誤訊息顯示要求未透過預期路徑傳送至 Azure Cosmos DB,則問題可能與用戶端設定有關。 請遵循文件,再次檢查用戶端設定。
- 公用網際網路:在 Azure Cosmos DB 中設定 IP 防火牆。
- 服務端點:從虛擬網路設定存取 Azure Cosmos DB。 請考量您是否預期使用服務端點,但要求來自公用網際網路的 Azure Cosmos DB。 這種情況可能指出客戶端執行中的子網未啟用 Azure Cosmos DB 的服務端點。
- 私人端點:設定 Azure Cosmos DB 帳戶的 Azure Private Link。 也請考量您是否預期使用私人端點,但要求來自公用因特網的 Azure Cosmos DB。 這種情況可能表示虛擬機器上的網域名稱伺服器 (DNS) 未將帳戶端點解析設定為私人,而是設定為公用 IP 位址。
- 如果要求透過預期的路徑傳送至 Azure Cosmos DB,要求遭封鎖的原因為來源網路身分識別未針對帳戶進行設定。 根據要求傳送至 Azure Cosmos DB 的路徑,檢查帳戶的設定。
如果您最近已更新帳戶的防火牆設定,請記住,變更最多可能需要 15 分鐘的時間才會套用。
分割區索引鍵超過儲存限制
在此案例中,通常會看到類似下列錯誤:
Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB
解決方案
此錯誤表示您目前的資料分割設計和工作負載正在嘗試儲存超過指定分割區索引鍵值允許的資料量。 您容器中的邏輯分割區數目沒有任何限制,但每個邏輯分割區所能儲存的資料大小則有所限制。 您可以連絡支援人員進行釐清。
不允許非資料作業
嘗試使用 Microsoft Entra 身分識別執行非資料作業時,就會發生此案例。 在此案例中,通常會看到類似下列錯誤:
Operation 'POST' on resource 'calls' is not allowed through Azure Cosmos DB endpoint
Forbidden (403); Substatus: 5300; The given request [PUT ...] cannot be authorized by AAD token in data plane.
解決方案
透過 Azure Resource Manager、Azure 入口網站、Azure CLI 或 Azure PowerShell 來執行此作業。
如果您使用 Azure Functions Azure Cosmos DB 觸發程序,請確保觸發程序的 CreateLeaseContainerIfNotExists
屬性未設定為 true
。 使用 Microsoft Entra 身分識別會封鎖任何非資料作業,例如建立租用容器。