次の方法で共有


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 ファイアウォールを構成します
    • サービス エンドポイント: 仮想ネットワークから Azure Cosmos DB へのアクセスを構成します。 サービス エンドポイントを使うことを予期したのに、要求がパブリック インターネットから Azure Cosmos DB に送信されたかどうかを検討します。 この状況は、クライアントが実行されていたサブネットで、Azure Cosmos DB へのサービス エンドポイントが有効になっていなかったことを示している可能性があります。
    • プライベート エンドポイント: Azure Cosmos DB アカウントの Azure Private Link を構成する。 また、プライベート エンドポイントを使うことを予期したのに、要求がパブリック インターネットから Azure Cosmos DB に送信されたかどうかを検討します。 この状況は、仮想マシン上のドメイン ネーム サーバー (DNS) が、アカウント エンドポイントをパブリック IP アドレスではなくプライベートに解決するように構成されていなかったことを示している可能性があります。
  • 要求が予期されるパスを経由して Azure Cosmos DB に送信された場合は、ソース ネットワーク ID がアカウント用に構成されていなかったため、要求がブロックされました。 要求が Azure Cosmos DB に送信されたパスに応じて、アカウントの設定を確認します。
    • パブリック インターネット: アカウントのパブリック ネットワーク アクセスと IP 範囲フィルターの構成を確認します。
    • サービス エンドポイント: アカウントの公衆ネットワーク アクセスと仮想ネットワークのフィルター構成を確認します。
    • プライベート エンドポイント: アカウントのプライベート エンドポイント構成とクライアントのプライベート DNS 構成を確認します。 この問題は、別のアカウント用に設定されているプライベート エンドポイントからアカウントにアクセスしたためである可能性があります。

最近アカウントのファイアウォール構成を更新した場合は、変更が適用されるまでに最大 15 分かかる可能性があることに注意してください。

ストレージを超過するパーティション キー

このシナリオでは、一般に次のようなエラーが表示されます。

Response status code does not indicate success: Forbidden (403); Substatus: 1014
Partition key reached maximum size of {...} GB

解決策

このエラーは、現在のパーティション デザインとワークロードでは、所与のパーティション キー値に対して、許可されるデータ量以上の格納が試行されることを意味します。 コンテナーの論理パーティションの数に上限はありませんが、各論理パーティションで格納できるデータのサイズには制限があります。 ご不明な点がございましたら、サポートにお問い合わせください。

除外されたデータ操作は許可されない

このシナリオは、Microsoft Entra の ID を使って除外されたデータ操作を実行しようとすると発生します。 このシナリオでは、一般に次のようなエラーが表示されます。

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 を使うと、リース コンテナーの作成のような除外されたデータ操作はブロックされます。