Application Integration でサポートされているコネクタをご覧ください。
エラー処理の概要
Application Integration では、統合のテスト時と公開時、または統合の実行中にエラーが発生することがあります。これらのエラーは、クライアント側とサーバー側のさまざまな問題が原因で発生する可能性があり、次のように大きく分類されます。
- 永続的なエラー: 認証の失敗、データ検証エラーなどのクライアント側のエラーはすべて、永続的なエラーと見なされます。永続的なエラーの場合、タスクが永続的に失敗します。
- 一時的なエラー: HTTP 503(サービスを利用できない)、HTTP 400(不正なリクエスト)といったサーバー側のエラーはすべて、一時的なエラーと見なされます。一時的なエラーでは、一時的なタスクの障害が発生します。
エラー メッセージは、次の場所に表示されます。
- 実行ログページ: 統合の実行中に発生したエラーが表示されます。統合が実行されるたびに個別のログエントリが作成されます。実行ログページの詳細については、実行ログをご覧ください。
- 統合エディタページ: 統合を公開したときに発生したエラーを表示します。エラーは統合エディタ ページの下部に表示されます。統合エディタページの詳細については、統合エディタをご覧ください。
発生する可能性のあるエラーコードのリストについては、エラーコードをご覧ください。
エラー処理メソッド
Application Integration では、統合で発生したエラーをスロー、キャッチ、再試行、カスタマイズするために、次のエラー処理方法がサポートされています。
- エラー処理方法: タスクのエラー処理方法では、一時的なエラーによってタスクが失敗した場合のアクションを指定します。エラー処理方法は、同期実行モードと非同期実行モードの両方に異なる方法を指定できます。
- エラー キャッチャー: エラー キャッチャーは、統合内で特定されたトリガー、タスク、エッジ条件の失敗を処理するためのカスタマイズされた方法を定義します。1 つの統合で 1 つ以上のエラー キャッチャーを定義して、タスクエラーや実行の失敗を処理できます。各エラー キャッチャーは、Error Catcher トリガーと呼ばれるトリガーを使用して起動でき、エラーを処理するようにカスタマイズされた、一連の構成済み統合タスクを実行します。
エラー処理方法は、インテグレーション実行の同期モードと非同期モードの両方に使用できます。
-
同期実行: 同期モードでは、インテグレーションの実行後すぐにインテグレーションの実行結果がわかります。同期モードは、インテグレーションの実行直後に実行結果を必要とする場合に便利です。トリガーは、次のような同期モードでインテグレーションを実行します。
- インテグレーションをテストまたは公開する
projects.locations.integrations.execute
API を呼び出す- 同期モードでサブ インテグレーションからインテグレーションを呼び出す
-
非同期実行: 非同期実行では、ファイア アンド フォーゲット モデルが使用されます。非同期モードは、インテグレーションの実行に長時間かかる可能性がある場合や、インテグレーションの実行直後に実行結果を必要としない場合に便利です。非同期モードでインテグレーションを実行するトリガーは次のとおりです。
- 同期ではないすべての実行は、非同期モードで実行されます。一般的な非同期モードには次のようなものがあります(ただし、これらに限定されません)。
- 最初の実行が同期モードであっても、一時停止タスクまたは承認タスクから再開された実行は非同期モードです。
ベスト プラクティス
統合でエラー処理方法とエラー キャッチャーの両方を使用します。エラーが発生した場合、統合はエラー処理セクションで定義された戦略に従います。構成されたエラー処理方法がすべて試行されると、エラー キャッチャー ロジックがトリガーされます。システム変数を使用して、エラーコードとエラー メッセージの値をキャプチャし、エラー キャッチャー フローに送信します。
例
注文を作成する統合フローがあるとします。新しい注文は Cloud SQL for MySQL に作成されます。このフローでは、コネクタタスク(この例では「Create an order」)を使用して Cloud SQL for MySQL に接続します。データベースが停止した場合、コネクタタスクはデータベースに新しい注文を挿入するときにエラーをスローします。ベスト プラクティスとして、統合でエラー処理方法とエラー キャッチャーの両方を使用する必要があります。
エラー処理戦略を追加するには、統合デザイナーでコネクタタスクをクリックして、タスク構成ペインを開きます。次の図は、注文を作成コネクタタスク用に構成されたエラー処理方法を示しています。
エラー処理戦略を追加するには、統合デザイナーで [REST エンドポイントの呼び出し] タスクをクリックして、タスク構成ペインを開きます。次の図は、REST エンドポイントの呼び出しタスクに構成されたエラー処理方法を示しています。
エラー キャッチャーを追加するには、統合デザイナーで [Call REST Endpoint] タスクをクリックして、タスク構成ペインを開きます。[Error Catcher] セクションで、エラー キャッチャーの詳細を追加します。次の図は、REST エンドポイントの呼び出しタスク用に構成されたエラー キャッチャーを示しています。
エラーコード
次の表に、発生する可能性のあるエラーと、エラーに対する原因を示します。Application Integration では、google.rpc.Code
で定義されている正規のエラーコードを使用します。
Application Integration のエラーとさまざまなエラー処理方法については、エラーとエラー処理をご覧ください。
標準の例外タイプ | 正規コード | HTTP コード | 説明 |
---|---|---|---|
FailedPreconditionException | FAILED_PRECONDITION |
400 | 現在のシステム状態ではリクエストを実行できません。 |
BadRequestException | INVALID_ARGUMENT |
400 | クライアントが無効な引数を指定しました。詳しくは、エラー メッセージとエラーの詳細を確認してください。 |
UnauthenticatedException | UNAUTHENTICATED |
401 | OAuth トークンがない、もしくは無効、期限切れのためにリクエストが認証されませんでした。 |
ForbiddenException | PERMISSION_DENIED |
403 | クライアントに十分な権限がありません。これは、OAuth トークンに正しいスコープが割り当てられていないか、クライアントに必要な権限がないか、または API が有効になっていない場合に発生することがあります。 |
NotFoundException | NOT_FOUND |
404 | 指定されたリソースが見つかりません。 |
AlreadyExistsException | ALREADY_EXISTS |
409 | クライアントが作成しようとしたリソースはすでに存在します。 |
InternalError | INTERNAL |
500 | 内部サーバーエラーが発生しました。通常、サーバーのバグです。 これは、タスクやトリガーが正しく構成されていない場合に発生します。 |
UnimplementedException | UNIMPLEMENTED |
501 | API メソッドはサーバーによって実装されていません。 |
ServiceUnavailableException | UNAVAILABLE |
503 | サービス利用不可。通常、サーバーがダウンしています。 |
AbortedException | ABORTED |
409 | レスポンスのサイズが大きすぎます。 |