ステータス レスポンス コード

gRPC レスポンスで返されるステータス コードは次のとおりです。この内容は、このサイトに記載されているすべてのバージョンの gRPC に適用されます。

コード ステータス メモ
0 OK Successでの返品
1 CANCELLED オペレーションがキャンセルされました。通常、キャンセルは呼び出し元により行われます。
2 UNKNOWN たとえば、別のアドレス空間から受け取った Status 値が、このアドレス空間で未知のエラー空間に属している場合に、このエラーが返されることがあります。また、十分なエラー情報を返さない API によって生成されたエラーも、このエラーに変換されることがあります。
3 INVALID_ARGUMENT クライアントが無効な引数を指定しました。
4 DEADLINE_EXCEEDED オペレーションが完了する前に期限が切れました。システムの状態を変更するオペレーションの場合、オペレーションが正常に完了しても、このエラーが返されることがあります。たとえば、サーバーからのレスポンスが、期限が切れるほど長く遅延した場合などです。
5 NOT_FOUND リクエストされたエンティティの一部が見つかりませんでした。
6 ALREADY_EXISTS クライアントが作成しようとしたエンティティはすでに存在します。
7 PERMISSION_DENIED 呼び出し元には、指定したオペレーションを実行する権限がありません。リソース不足による拒否には PERMISSION_DENIED を使用しないでください。このようなエラーには RESOURCE_EXHAUSTED を使用します。呼び出し元を特定できない場合は PERMISSION_DENIED を使用しないでください(このようなエラーには代わりに UNAUTHENTICATED を使用します)。PERMISSION_DENIED エラーコードを受信しても、リクエストが有効であること、リクエストされたエンティティが存在すること、他の前提条件を満たしていることを意味するものではありません。
8 RESOURCE_EXHAUSTED ユーザーごとの割り当て、またはファイル システム全体で容量が不足しているため、一部のリソースが枯渇しています。
9 FAILED_PRECONDITION システムがオペレーションの実行に必要な状態ではないため、オペレーションが拒否されました。たとえば、削除するディレクトリが空でない場合、または rmdir 操作がディレクトリでない場合などです。
10 ABORTED オペレーションは、通常、シーケンサー チェックの失敗、またはトランザクションの中止などの同時実行の問題のために中止されています。
11 OUT_OF_RANGE オペレーションが有効な範囲を超えて試行されました。
12 UNIMPLEMENTED オペレーションが実装されていないか、このサービスでサポートされていないか、有効にされていません。
13 INTERNAL 内部エラー。これは、基盤となるシステムで予期される一部の不変条件から逸脱していることを意味します。このエラーコードは深刻なエラーのために予約されています。
14 UNAVAILABLE サービスは現在利用できません。これはほとんどの場合、バックオフで再試行すると修正できる一時的な状態です。
15 DATA_LOSS 回復不能なデータの消失や破損。
16 UNAUTHENTICATED オペレーションのための有効な認証情報がリクエストに含まれていません。

複数のエラーコードが該当する場合があります。サービスは、該当する最も具体的なエラーコードを返す必要があります。たとえば、両方のコードが適用される場合は、FAILED_PRECONDITION よりも OUT_OF_RANGE を優先します。同様に、FAILED_PRECONDITION よりも NOT_FOUND または ALREADY_EXISTS を優先します。

FAILED_PRECONDITION、ABORTED、UNAVAILABLE の違い

FAILED_PRECONDITIONABORTEDUNAVAILABLE のうちどれかを判定する際に役立つリトマス試験を以下に示します。

  • クライアントが失敗した呼び出しのみを再試行できる場合は、UNAVAILABLE を使用します。
  • ABORTED は、クライアントが読み取り - 変更 - 書き込みのシーケンスを再開する必要があることを示す、クライアント指定のテストとセットが失敗したときなど、クライアントが上位レベルで再試行する必要がある場合に使用します。
  • FAILED_PRECONDITION は、システム状態が明示的に修正されるまでクライアントが再試行を行わない場合に使用します。たとえば、ディレクトリが空でないために「rmdir」が失敗した場合は、FAILED_PRECONDITION を返すことをおすすめします。クライアントは、ディレクトリからファイルが削除されない限り再試行しないためです。

INVALID_ARGUMENT、FAILED_PRECONDITION、OUT_OF_RANGE の違い

INVALID_ARGUMENTFAILED_PRECONDITIONOUT_OF_RANGE のうちどれかを判定する際に役立つリトマス試験を以下に示します。

  • INVALID_ARGUMENT は、システムの状態に関係なく引数に問題がある場合に使用します。例: URL の形式が正しくない
  • システムの状態により値が範囲外の場合は、OUT_OF_RANGE を使用します。たとえば、start_date が start_date_restrict より前です。
  • システムの状態により値は無効であるが、OUT_OF_RANGE 値ではない場合は、FAILED_PRECONDITION を使用します。