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

適用対象: NoSQL

HTTP 401: HTTP 要求で見つかった MAC 署名は、計算された署名と同じではありません。 "HTTP 要求で見つかった MAC 署名は、計算された署名と同じではありません" という 401 エラー メッセージを受け取った場合は、原因として次のシナリオが考えられます。

以前の SDK では、この例外は正しい 401 の未承認の例外ではなく、無効な JSON 例外として表示される場合があります。 新しい SDK はこのシナリオを正しく処理し、有効なエラー メッセージを表示します。

トラブルシューティングの手順

次の一覧には、未承認の例外の既知の原因と解決方法が含まれています。

キーが正しくローテーションされなかったことが最も一般的なシナリオです。

401 MAC 署名は、キーのローテーションの直後に見られ、最終的には変更なしに停止します。

解答:

キーがローテーションされたが、ベスト プラクティスに従っていなかった。 Azure Cosmos DB アカウントのキーのローテーションには、Azure Cosmos DB アカウントのサイズに応じて、数秒から数日かかる場合があります。

キーが正しく構成されていない

401 MAC 署名の問題は一貫性があり、そのキーを使用するすべての呼び出しで発生します。

解答:

キーがアプリケーションで正しく構成されておらず、アカウントに対して間違ったキーを使用しているか、またはキー全体がコピーされませんでした。

アプリケーションが書き込み操作に読み取り専用キーを使用している

401 MAC 署名の問題が作成や置き換えなどの書き込み操作でのみ発生し、読み取り要求は成功します。

解決方法:

操作が正常に完了できるようにするために、読み取り/書き込みキーを使用するようにアプリケーションを切り替えます。

コンテナーの作成での競合状態

401 MAC 署名の問題がコンテナーの作成の直後に確認されます。 この問題が発生するのは、コンテナーの作成が完了するまでに限られています。

解答:

コンテナーの作成で競合状態があります。 コンテナーの作成が完了する前に、アプリケーション インスタンスがコンテナーにアクセスしようとしています。 この競合状態の最も一般的なシナリオは、アプリケーションが実行されているときに、コンテナーが削除され、同じ名前で再作成される場合です。 SDK は新しいコンテナーを使用しようとしますが、コンテナーの作成はまだ進行中であるため、キーがありません。

[Bulk mode enabled](一括モードを有効にする)

[Bulk mode enabled](一括モードを有効にする) を使用すると、読み取りと書き込みの操作が最適なネットワーク パフォーマンスのために最適化され、専用の Bulk API 通じてバックエンドに送信されます。 [Bulk mode enabled](一括モードを有効にする) を使用して読み取り操作を実行しているときの 401 エラーは、多くの場合、アプリケーションで読み取り専用キーを使用していることを意味します。

解決策

[Bulk mode enabled](一括モードを有効にする) を使用して操作を実行するときは、読み取り/書き込みキーを使用するか、または書き込みアクセス権を持つ承認メカニズムを使用します。

次のステップ