実行リクエストでのランタイム引数渡し

このページでは、ワークフロー実行リクエストでランタイム引数を渡す方法と、ワークフロー変数を使用してこれらの引数にアクセスする方法について説明します。

ランタイム引数を受け取るワークフローを設定する

実行リクエストの一部として渡すランタイム引数を使用するワークフローを作成できます。ランタイム引数を受け取るようにワークフローを設定するには:

  1. 手順に沿って新しいワークフローを作成するか、既存のワークフローを選択して更新しますが、まだデプロイしないでください。

  2. ワークフローの定義に params フィールドを追加します。

    main:
      params: [DICTIONARY_NAME]
      steps:
        ...
    

    DICTIONARY_NAME は、ワークフローに渡すパラメータ名と引数の値を格納する辞書の名前に置き換えます。

    たとえば、次のワークフローは、ランタイムの引数として渡された姓と名の人に対する「Hello」というあいさつを返します。

    main:
      params: [args]
      steps:
        - step1:
            assign:
              - OutputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"}
        - step2:
            return: ${OutputVar}
    
  3. ワークフローをデプロイして作成または更新を完了します。

実行リクエストでデータを渡す

ランタイム引数を受け取るようにワークフローを設定したら、{"firstName":"Workflows","lastName":"User"} などの JSON 形式の文字列を、実行リクエストのワークフローに渡すことができます。

gcloud

ワークフローの実行に使用する gcloud workflows execute コマンドに --data フラグを追加します。このフラグは、データの JSON 文字列を受け取ります。たとえば、上記のサンプルのワークフローに firstNamelastName を渡すには:

gcloud workflows run WORKFLOW_NAME \
--data='{"firstName":"FIRST","lastName":"LAST"}'

以下を置き換えます。

  • WORKFLOW_NAME: ワークフローの名前
  • FIRST: ワークフローの firstName に渡す文字列
  • LAST: ワークフローの lastName に渡す文字列

次のような出力が表示されます。

Waiting for execution [EXECUTION_ID] to complete...done
.
argument: '{"firstName":"Workflows","lastName":"User"}'
endTime: '2020-11-18T23:28:36.134741660Z'
name: projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID
result: '"Hello, Workflows User!"'
startTime: '2020-11-18T23:28:36.003269841Z'
state: SUCCEEDED
workflowRevisionId: 000001-ae2

Console

  1. Google Cloud Console の [ワークフロー] ページから、実行するワークフローを選択します。
    [ワークフロー] ページに移動

  2. ワークフローの [詳細] ページで、 [実行] をクリックします。

  3. [ワークフローの実行] ページが表示されたら、パラメータ名と引数値({"firstName":"Workflows","lastName":"User"} など)を含む JSON 文字列を [入力] 領域に入力します。

    JSON 文字列の例が入力された入力領域

  4. [実行] をクリックします。Cloud Console に実行結果が表示されます。

    実行の結果、「Hello, Workflows User!」という出力が表示されます。

REST API

  1. ワークフローの実行に使用するコマンドに data フラグを追加します。data の値は、エスケープされたパラメータ値のペアを 1 つ以上含む引数を持つ JSON 形式の文字列です。たとえば、上記のサンプルのワークフローに firstNamelastName を渡すには:

    curl --request POST --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    --header 'Content-Type: application/json' --data '{"argument":"{\"firstName\":\"FIRST\",\"lastName\":\"LAST\"}"}' \
    "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/WORKFLOW_NAME/executions"
    

    以下を置き換えます。

    • PROJECT_ID: プロジェクト名
    • WORKFLOW_NAME: ワークフローの名前
    • FIRST: ワークフローの firstName に渡す文字列
    • LAST: ワークフローの lastName に渡す文字列

    次のような出力が表示されます。

    {
      "name": "projects/PROJECT_NUMBER/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID",
      "startTime": "2020-11-09T23:51:31.765761331Z",
      "state": "ACTIVE",
      "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}",
      "workflowRevisionId": "000001-08c"
    }
     ```
    
  2. 実行結果を取得するには、次のコマンドを実行します。

    curl --request GET --header "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    --header 'Content-Type: application/json' \
    "https://workflowexecutions.googleapis.com/v1/projects/PROJECT_ID/locations/us-central1/workflows/WORKFLOW_NAME/executions/EXECUTION_ID"
    

    EXECUTION_ID は、最初のコマンドで返された出力の ID に置き換えます。

    この出力には、次のような行が含まれます。

    "argument": "{\"firstName\":\"Workflows\",\"lastName\":\"User\"}",
    "result": "\"Hello, Workflows User!\"",
    

REST API を使用してワークフローを実行する方法の詳細については、ワークフローの実行をご覧ください。

次のステップ