このトピックでは、foreach ステップと関連する例について説明します。
概要
foreach ステップは、入力の配列タイプの パラメーター をトラバースし、配列内の各要素に対してシリアルステップを並列に実行します。 Foreach ステップは、プログラミング言語の foreach と似ています。違いは、foreach ステップの反復が並列に実行されることです。
foreach ステップの各反復は、ローカル変数に対応します。 foreach ステップでは、入力パラメーターの各要素のシリアルステップが並列に実行されます。これらのシリアルステップは、反復に対応するローカル変数を変更します。すべての反復が実行された後、出力マッピングを使用して、反復のローカル変数配列を foreach ステップの出力に変換できます。
説明 foreach ステップで同時に実行できるシリアルステップの最大数は 100 です。
foreach ステップには、次の属性が含まれています。
- type: 必須。ステップタイプ。値 foreach は、ステップが foreach ステップであることを示します。
- name: 必須。ステップ名。
- iterationMapping: 必須。反復マッピング。
- collection: 必須。foreach ステップのコレクションとして機能する入力パラメーター。
- item: 必須。反復入力に組み込まれる現在の要素の名前。
- index: オプション。反復入力に組み込まれる現在の位置の名前。
- steps: 必須。シリアルステップ。
- end: オプション。現在のステップが終了した後、後続のステップに進むかどうかを指定します。
- inputMappings: オプション。入力マッピング。
- outputMappings: オプション。出力マッピング。このステップでは、
$localは配列です。配列の各要素は、各反復の結果を記録する JSON オブジェクトです。説明 出力マッピングが指定されていない場合、このステップはデフォルトで出力されません。
例
次のサンプルフローは、タスクステップを含む foreach ステップを定義しています。
version: v1
type: flow
steps:
- type: foreach
name: myforeach
iterationMapping:
collection: $.names
item: name
steps:
- type: task
name: toUpperCase
resourceArn: acs:fc:{region}:{account}:services/fnf_test/functions/toUpperCase
outputMappings:
- target: names
source: $local[*].name
- 次の情報はフロー入力です。
myforeachステップには入力マッピングが指定されていません。したがって、その入力はフロー入力と同じです。{ "names": ["a", "b", "c"] } toUpperCaseには入力マッピングが定義されていません。したがって、その入力は親ステップの入力と同じです。iterationMappingによると、システムは現在の要素(a、b、cを順番に)を値として、nameをキーとして各反復に入力します。{ "name": "a", "names":["a","b","c"] } { "name": "b", "names":["a","b","c"] } { "name": "c", "names":["a","b","c"] }toUpperCaseは 3 回実行され、次の出力が順番に出力されます。{ "name": "A" } { "name": "B" } { "name": "C" }myforeachのローカル変数は配列であり、次の値を持ちます。[ { "name": "A" }, { "name": "B" }, { "name": "C" } ]- 次の情報は
myforeachの出力です。フローには出力マッピングまたは結果マッピングが定義されていません。したがって、出力は最終的なフロー出力です。{ "names": ["A", "B", "C"] }