エラーとエラー処理

Datastore モードの Cloud Firestore のリクエストに成功すると、API はリクエストされたデータと HTTP 200 OK ステータス コードをレスポンスの本文で返します。

リクエストが失敗すると、Cloud Datastore API は失敗の概要を表す HTTP 4xx または 5xx ステータス コードと、失敗の原因となったエラーの詳細情報を含むレスポンスを返します。

このページの残りの部分では、エラーの構造について説明し、具体的なエラーコードを列挙します。また、推奨される対処方法も示します。

JSON リクエストのエラー レスポンスの構造は次のとおりです。

{
  "error": {
    "code": "integer",
    "message": "string",
    "status": "string"
  }
}

レスポンス オブジェクトには単一のフィールド error が格納されており、その値には次の要素が格納されています。

要素 説明
code リクエストの失敗をおおまかに識別する HTTP ステータス コード
message リクエストの失敗に関する具体的な情報
status Google API の標準的なエラーコードgoogle.rpc.Code)。Cloud Datastore API から返されるコードについては、エラーコードをご覧ください。

次に、JSON リクエストに対するエラー レスポンスの例を示します。

{
  "error": {
    "code": 400,
    "message": "Key path is incomplete: [Person: null]",
    "status": "INVALID_ARGUMENT"
  }
}

コンテンツ タイプ application/x-protobuf のリクエストがエラーになると、シリアライズされた google.rpc.Status メッセージがペイロードとして返されます。

エラーコード

エラーの分類におすすめする方法は、標準的なエラーコードgoogle.rpc.Code)の値を調べることです。JSON のエラーでは、このコードは status フィールドに格納されます。application/x-protobuf のエラーでは code フィールドに格納されます。

標準的なエラーコード 説明 推奨される対処
ABORTED リクエストが別のリクエストと競合していることを示します。 非トランザクション commit:
リクエストを再試行するか、競合がなくなるようにエンティティを構築します。

トランザクション commit に含まれるリクエスト:
トランザクション全体を再試行するか、競合がなくなるようにエンティティを構築します。
ALREADY_EXISTS リクエストが既存のエンティティを挿入しようとしていることを示します。 問題を解決してから再試行します。
DEADLINE_EXCEEDED サーバーでの期限を超過しました。 指数バックオフを使用して再試行します。
FAILED_PRECONDITION リクエストの前提条件が満たされていなかったことを示します。エラー レスポンスのメッセージ フィールドで、失敗した前提条件に関する情報が提供されます。考えられる原因の 1 つとして、クエリが未定義のインデックスを必要としていることが挙げられます。 問題を解決してから再試行します。
INTERNAL サーバーがエラーを返しました。 このリクエストを複数回再試行しないでください。
INVALID_ARGUMENT リクエストのパラメータに無効な値があることを示します。エラー レスポンスのメッセージ フィールドで、無効であった値を特定する情報が提供されます。 問題を解決してから再試行します。
NOT_FOUND リクエストが存在しないエンティティを更新しようとしていることを示します。 問題を解決してから再試行します。
PERMISSION_DENIED ユーザーがリクエストの実行を承認されなかったことを示します。 問題を解決してから再試行します。
RESOURCE_EXHAUSTED ユーザーがプロジェクトの割り当てを超過したことを示します。 問題を解決してから再試行します。プロジェクトの割り当てを増やす方法については、料金と割り当てをご覧ください。
UNAUTHENTICATED リクエストに有効な認証情報がなかったことを示します。 問題を解決してから再試行します。
UNAVAILABLE サーバーがエラーを返しました。 指数バックオフを使用して再試行します。
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Cloud Datastore ドキュメント