Azure Cosmos DB の 禁止例外を診断してトラブルシューティングする

適用対象: NoSQL

HTTP 状態コード 403 は、要求の完了が禁止されていることを表します。

要求をブロックするファイアウォール

データ プレーン要求は、次の 3 つのパスを使用して Azure Cosmos DB に送信できます。

  • パブリック インターネット (IPv4)
  • サービス エンドポイント
  • プライベート エンドポイント

データ プレーン要求が 403 Forbidden でブロックされた場合、エラー メッセージに、要求が上記の 3 つのパスのどれを経由して 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 ファイアウォールを構成します
    • サービス エンドポイント: 仮想ネットワーク (VNet) から Azure Cosmos DB へのアクセスを構成します。 たとえば、要求がサービス エンドポイントを使用することを予期しますが、要求はパブリック インターネット経由で Azure Cosmos DB に送信された場合、クライアントが実行していたサブネットは、Azure Cosmos DB に対してサービス エンドポイントを有効にしていない可能性があります。
    • プライベート エンドポイント: Azure Cosmos DB アカウントの Azure Private Link を構成する。 たとえば、要求がプライベート エンドポイントを使用することを予期しますが、要求はパブリック インターネット経由で Azure Cosmos DB に送信された場合、VM 上の DNS が、プライベート IP にアカウント エンドポイントを解決するように構成されていない可能性があります。そのため、要求は代わりにアカウントのパブリック IP を経由しました。
  • 要求が予期されるパスを経由して Azure Cosmos DB に送信された場合、ソース ネットワーク ID がアカウントに対して許可するように構成されていないため、要求はブロックされました。 要求が 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 portal、Azure CLI、または Azure PowerShell から操作を実行します。 Azure Functions Azure Cosmos DB トリガーを使用している場合は、トリガーの CreateLeaseContainerIfNotExists プロパティが true に設定されていないことを確認してください。 Microsoft Entra ID を使用すると、リース コンテナーの作成など、データ以外の操作がブロックされます。

次のステップ