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_PRECONDITION
、ABORTED
、UNAVAILABLE
のうちどれかを判定する際に役立つリトマス試験を以下に示します。
- クライアントが失敗した呼び出しのみを再試行できる場合は、
UNAVAILABLE
を使用します。 ABORTED
は、クライアントが読み取り - 変更 - 書き込みのシーケンスを再開する必要があることを示す、クライアント指定のテストとセットが失敗したときなど、クライアントが上位レベルで再試行する必要がある場合に使用します。FAILED_PRECONDITION
は、システム状態が明示的に修正されるまでクライアントが再試行を行わない場合に使用します。たとえば、ディレクトリが空でないために「rmdir」が失敗した場合は、FAILED_PRECONDITION
を返すことをおすすめします。クライアントは、ディレクトリからファイルが削除されない限り再試行しないためです。
INVALID_ARGUMENT、FAILED_PRECONDITION、OUT_OF_RANGE の違い
INVALID_ARGUMENT
、FAILED_PRECONDITION
、OUT_OF_RANGE
のうちどれかを判定する際に役立つリトマス試験を以下に示します。
INVALID_ARGUMENT
は、システムの状態に関係なく引数に問題がある場合に使用します。例: URL の形式が正しくない- システムの状態により値が範囲外の場合は、
OUT_OF_RANGE
を使用します。たとえば、start_date がstart_date_restrict
より前です。 - システムの状態により値は無効であるが、
OUT_OF_RANGE
値ではない場合は、FAILED_PRECONDITION
を使用します。