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

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 を使用します。