このページでは、ワークフロー実行リクエストでランタイム引数を渡し、ワークフロー変数を使用してそれらの引数にアクセスする方法について説明します。
ランタイム引数を受け取るワークフローの設定
実行リクエストの一部として渡すランタイム引数を使用するワークフローを作成できます。ランタイム引数を受け取るようにワークフローを設定するには:
メイン ワークフローの定義に
params
フィールドを追加します。引数名が角かっこ内にあり、メイン ワークフローがmain
ブロック内にあることを確認します。YAML
main: params: [ARG_NAME] steps: ...
JSON
{ "main": { "params": ["ARG_NAME"], "steps": [ ... ] ... } }
main
ブロックは、有効な JSON データ型の名前(配列、オブジェクト、文字列など)である単一の引数を受け入れます。おすすめの方法として、複数の名前付き引数を使用してオブジェクトを渡すと、目的の理解や引数の追加が簡単になります。また、その後ドット表記を使用して引数にアクセスすることもできます。
他のサブワークフローには複数の引数を指定できます。
たとえば、次のワークフローは、ランタイムの引数として渡された姓と名の人に対する「Hello」というあいさつを返します。
YAML
main: params: [args] steps: - step1: assign: - outputVar: ${"Hello, " + args.firstName + " " + args.lastName + "!"} - step2: return: ${outputVar}
JSON
{ "main": { "params": [ "args" ], "steps": [ { "step1": { "assign": [ { "outputVar": "${\"Hello \" + args.firstName + \" \" + args.lastName}" } ] } }, { "step2": { "return": "${outputVar}" } } ] } }
ワークフローをデプロイして、作成または更新を完了します。
実行リクエストでデータを渡す
ランタイム引数を受け取るようにワークフローを設定したら、{"firstName":"Workflows","lastName":"User"}
などの JSON 形式の文字列を、実行リクエストのワークフローに渡すことができます。
gcloud
ワークフローの実行に使用する gcloud workflow execute コマンドに --data フラグを追加します。このフラグは、データの JSON 文字列を受け取ります。たとえば、firstName
と lastName
を前のワークフロー例に渡すには、次のようにします。
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
Google Cloud Console の [ワークフロー] ページから、実行するワークフローを選択します。
[ワークフロー] ページに移動ワークフローの [詳細] ページで、play_arrow [実行] をクリックします。
[ワークフローの実行] ページが表示されたら、パラメータ名と引数値(
{"firstName":"Workflows","lastName":"User"}
など)を含む JSON 文字列を [入力] 領域に入力します。[実行] をクリックします。Cloud Console に実行結果が表示されます。
REST API
ワークフローの実行に使用するコマンドに
data
フラグを追加します。data
の値は、エスケープされたパラメータ値のペアを 1 つ以上含む引数を持つ JSON 形式の文字列です。たとえば、firstName
とlastName
を前のワークフロー例に渡すには、次のようにします。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" } ```
実行結果を取得するには、次のコマンドを実行します。
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 を使用してワークフローを実行する方法については、ワークフローの実行をご覧ください。
ランタイム引数にアクセスする
このサンプルは、実行リクエストの一部としてワークフローに渡されるランタイム引数にアクセスします。すべての引数は同じマップに保存され、メイン ワークフローのパラメータとして宣言されます。
このワークフローを実行するときは、次の形式を使用してランタイム引数を渡します。
{"firstName":"Sherlock", "lastName":"Holmes"}