ワークフローの実行結果にアクセスする

ワークフローを実行した後、Google Cloud コンソールまたは Google Cloud CLI を使用してワークフローの実行結果にアクセスできます。

Console

  1. Google Cloud コンソールの [ワークフロー] ページに移動します。

    [ワークフロー] に移動

  2. ワークフローの実行結果にアクセスするには、ワークフローの名前をクリックして [ワークフローの詳細] ページに移動します。

  3. 特定の実行の詳細を確認するには、[実行] タブでリスト内の実行 ID をクリックして、[実行の詳細] ページに移動します。

  4. [Summary] タブでは、実行ごとに次の情報が表示されます。

    • Execution ID: ワークフローの実行の一意の識別子。
    • 実行の状態: 現在または最後のワークフロー ステップを含むワークフローの終了状態を示します。
    • 実行の作成: 実行が開始された日時。
    • 実行開始: 実行が開始され、ステップの実行が開始された日時。
    • 実行終了: 実行が終了した日時。
    • 実行期間: 合計経過時間。これは、ネットワーク エラーまたは接続の問題を示す場合があります。
    • ワークフロー名: ワークフローの名前。
    • ワークフロー リビジョン: 実行時点での現在のリビジョン。
    • 呼び出しログレベル: 実行中に適用される呼び出しロギングのレベル。詳細については、コールロギングをご覧ください。
    • 入力: ワークフローに渡されるランタイム引数(存在する場合)。
    • 出力: ワークフローの出力。実行が失敗した場合は、実行の失敗の原因となる例外が含まれます。このドキュメントの実行エラーマップをご覧ください。
  5. ワークフローの実行履歴をステップ エントリのリストとして表示するには、[ステップ] タブをクリックします。詳細については、実行ステップの履歴を表示するをご覧ください。

  6. ワークフローの実行のログを表示するには、[ログ] タブをクリックします。

  7. 実行ログをフィルタするには、テーブルの上部にある [フィルタ] フィールドを使用します。たとえば、失敗した実行の試行のみを表示するには、フィルタのテキスト フィールドに「failed」を入力します。

gcloud

  1. ワークフローの実行の完全なリストを確認するには、次のコマンドを入力します。

    gcloud workflows executions list WORKFLOW_NAME
    

    WORKFLOW_NAME は、ワークフローの名前に置き換えます。 目的の実行の実行 ID をコピーします。

  2. ワークフローの実行ログを表示するには、次のコマンドを入力します。

    gcloud workflows executions describe \
        --workflow=WORKFLOW_NAME \
        EXECUTION_ID
    

    以下のように置き換えます。

    • WORKFLOW_NAME: ワークフローの名前
    • EXECUTION_ID: 実行の一意の ID

    このコマンドは、次のような出力を返します。

    argument: 'null'
    endTime: '2022-07-19T12:40:07.070039707Z'
    error:
     context: |-
        The argument of 'in' must be a dict or an array; got: null
        in step "checkSearchTermInInput", routine "main", line: 12
     payload: "{"message":"The argument of 'in' must be a dict or an array; got: null"
    ,"tags":["TypeError"]}" stackTrace: elements: - position: column: '26' length: '24' line: '12' routine: main step: checkSearchTermInInput name: projects/1051295516635/locations/us-central1/workflows/myFirstWorkflow/executions/17ffc89c-0a27-4d2f-8356-e681d949a3d3 startTime: '2022-07-19T12:40:07.024823663Z' state: FAILED status: currentSteps: - routine: main step: checkSearchTermInInput workflowRevisionId: 000001-ac2
    出力には次の情報が含まれます。

    • argument: ワークフローに渡されるランタイム引数(存在する場合)。
    • endTime: 実行が終了した日時。
    • error: 実行の失敗につながった例外の一部としてスローされたエラー メッセージ。
    • name: 実行の完全な名前(プロジェクトの名前、ワークフローのロケーション、ワークフローの名前、実行 ID を含む)。
    • startTime: 実行が開始された日時。
    • state: ワークフローの終了状態を示します
    • status: 実行の現在または最後のワークフロー ステップ。
    • workflowRevisionID: 実行時点でのリビジョン。

実行エラーマップ

ワークフローが実行中に、try/except ブロックでキャッチされないエラーをスローする場合、実行は失敗し、エラーを説明するエラーマップ(JSON 辞書)が返されます。

ワークフローの実行中にスローされたエラーには、エラーの原因を特定するためのタグが含まれています。たとえば、コネクタから返されるエラーに、次のような 2 つのキー(tagsmessage)が含まれる場合があります。

{'tags': ['SystemError'], 'message': 'an error has occurred'}

複数のタグが存在している可能性があります。特定のタグを確認するには、を使用します。次に例を示します。

${'SystemError' in e.tags}

文字列として返されたエラーデータにアクセスする

一部のコネクタと HTTP API は、エラーを返す前に、エラーを文字列としてシリアル化します。標準ライブラリ関数を使用して、ペイロードを元のエラーに復元できます。たとえば、エラー文字列をマップに変換するには、json.decode 関数と text.encode 関数を使用します。

json.decode(text.encode(ERROR_FROM_API))

エラータグ

次の表は、さまざまなエラータグの意味を説明したものです。

タグ 説明
AuthError HTTP リクエストの認証情報の生成が失敗した場合に発生します。
ConnectionError エンドポイントとの接続が正常に確立されたものの、データ転送中に接続に問題が起こった場合に発生します。レスポンスを完全に受信する前に接続が切断されたため、メッセージがエンドポイントに配信されていない可能性があります。再試行はべき等でない場合があります。
ConnectionFailedError API エンドポイントとの接続が確立されていない場合に発生します。たとえば、ドメイン名の誤り、DNS の解決に関する問題などのネットワークに関する問題により発生します。再試行はべき等です。
HttpError HTTP リクエストが HTTP エラー ステータスで失敗した場合に発生します。この例外が発生すると、レスポンスは次の要素を持つマップになります。
  • tags - HttpError 文字列を含むリスト
  • message: 人が読めるエラー メッセージ
  • code - HTTP レスポンス ステータス コード
  • headers - レスポンス ヘッダー
  • body - レスポンスの本文
IndexError シーケンス サブスクリプトが範囲外の整数である場合に発生します。
KeyError 既存のキーのセットにマップキーが見つからない場合に発生します。
OperationError 長時間実行オペレーションが失敗した場合に発生します。
ParallelNestingError 並列ステップをネストできる最大深度を超えた場合に発生します。
RecursionError コールスタックの最大深度を超過していることをインタープリタが検出した場合に発生します。
ResourceLimitError 一部のリソースを上限まで使い切った場合に発生します。内部で発生すると、このタイプのエラーはキャッチされず、すぐに実行は失敗します。
ResponseTypeError 長時間実行オペレーションが間違ったタイプのレスポンスを返した場合に発生します。
SystemError インタープリタで内部エラーを検出した場合に発生します。
TimeoutError システム関数がシステムレベルでタイムアウトした場合に発生します。
TypeError オペレーションまたは関数が互換性のないタイプのオブジェクトに適用された場合に発生します。関連する値は、タイプの不一致の詳細を示す文字列です。
UnhandledBranchError 1 つ以上のブランチまたはイテレーションで、未処理のランタイム エラーが最大数に達した場合に発生します。
ValueError オペレーションまたは関数が、型は適切ですが、値が正しくない引数を受け取った場合で、「IndexError」などの、より厳密な例外で状況が説明されない場合に発生します。
ZeroDivisionError 除算または剰余演算の 2 番目の引数がゼロの場合に発生します。関連する値は、演算対象のタイプと演算を示す文字列です。

raise 構文を使用してカスタムエラーを発生させることもできます。

次のステップ