すべてのプロダクト
Search
ドキュメントセンター

CloudFlow:Foreach ステップ

最終更新日:Jan 12, 2025

このトピックでは、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 によると、システムは現在の要素(abc を順番に)を値として、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"]
    }