Share via


針對 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,因為來源網路身分識別未設定為帳戶允許的身分識別,所以已封鎖要求。 根據要求傳送至 Azure Cosmos DB 的路徑,檢查帳戶的設定。
    • 公用網際網路:檢查帳戶的公用網路存取和 IP 範圍篩選設定。
    • 服務端點:檢查帳戶的公用網路存取和 VNet 篩選設定。
    • 私人端點:檢查帳戶的私人端點設定和用戶端的私人 DNS 設定。 這可能是因為從針對不同帳戶設定的私人端點存取帳戶所造成。

如果您最近已更新帳戶的防火牆設定,請記住,變更最多可能需要 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 身分識別會封鎖任何非資料作業,例如建立租用容器。

下一步