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

Security Center:コンポーネントパラメーターとノード実行フロー

最終更新日:Jul 25, 2026

プレイブックのコンポーネントアクションのパラメーターは、定数、変数、式、関数をサポートしています。パラメーター処理には、抽出、重複排除、ループ実行が含まれます。

パラメーターの分類

パラメーターは、2つの分類ディメンションに分けられます:

  • ロール別:プレイブック入力パラメーター、プレイブック出力パラメーター、コンポーネントアクション入力パラメーター、コンポーネントアクション出力パラメーター。

  • ソース別:システムパラメーター、コンポーネントパラメーター。

説明

コンポーネントアクションの実行中、システムパラメーター (コンポーネントパラメーター以外のデフォルトパラメーター) はどのノードからでもアクセスできます。

コンポーネント (ノード) の入出力パラメーター

ノードの入力には、固定値 (定数) または上流ノードの出力を指定できます。上流ノードの出力を参照するには、そのノードが同じオーケストレーションパス上で現在のノードより前にある必要があります。

重要

マルチパスのプレイブックでは、ノード名はグローバルで一意である必要があります。

次の図は、このルールを示しています。ノード B は、ノード A (直接の上流) の出力とプレイブックの入力パラメーターにアクセスできます。ノード D (異なるブランチ) やノード C (どのパス上でもノード B の先行ノードではない) にはアクセスできません。

image

システムパラメーター

プレイブックレベルのシステムパラメーター

どのノードからでも、${event.parameter_name} を使用してこれらのパラメーターにアクセスできます。event は開始ノードの予約名です。プレイブックのオーケストレーション中に、コンポーネントに event という名前を付けないでください。

パラメーターデータ型式説明
_tenant_idString${event._tenant_id}プレイブックを呼び出す Alibaba Cloud アカウント ID
_domain_idString${event._domain_id}

ログインしているユーザーのロールステータス。

  • 0:単一アカウントでのログイン。

  • 1:グローバルアカウントでのログイン。

_trigger_userString${event._trigger_user}プレイブックをトリガーする Alibaba Cloud アカウント ID。RAM ユーザーがプレイブックをトリガーした場合、その RAM ユーザーの ID が返されます。
_region_idString${event._region_id}リージョン ID
_req_uuidString${event._req_uuid}現在のプレイブック実行の一意の識別子
parentTaskUuidString${event.parentTaskUuid}_req_uuid。このプレイブックが子プレイブックとして呼び出された場合にのみ存在します。
parentTaskNameString${event.parentTaskName}親プレイブックの UUID。このプレイブックが子プレイブックとして呼び出された場合にのみ存在します。

コンポーネントアクション出力のシステムパラメーター

すべてのノード実行で、以下の標準出力フィールドが生成されます。コンポーネントからのカスタム出力パラメーターは datalist 内に保存されます。すべての出力値を取得するには ${node_name.datalist.*} を使用します。

パラメーターデータ型説明
datalistJSONArrayアクションによって生成された出力パラメーター。カスタムコンポーネントの出力もここに保存されます。
total_data_successfulInt正常に処理されたデータエントリ数
total_dataInt処理されたデータエントリの総数
total_data_with_dupIntアクションの実行中に正常に処理され、重複排除されたデータの量
total_exe_successfulIntアクションが正常に完了した回数
total_exeIntアクションが実行された総回数
statusBoolean実行ステータス:true (成功) または false (失敗)
messageForUserStringアクションが失敗した場合にユーザーに表示されるエラーメッセージ
messageStringアクションが失敗した場合の内部システムエラーメッセージ
failed_exe_detailStringアクションが失敗した場合の詳細なエラー情報

パラメーターのフォーマット

ノードの入力パラメーターは、定数、変数、式の 3 つの基本フォーマットと、それらの任意の組み合わせをサポートします。

フォーマット説明例
定数固定の文字列値Ali
変数プレイブックの入力パラメーターまたは上流ノードの出力から値を抽出します${event.aliuid}
式埋め込まれた式または関数を評価します。フォーマット:<%=expression|function%>。Java 構文のみがサポートされています。サポートされている関数については、後述のビルトイン関数リストをご参照ください。式:<%=2*60*60%>。関数:<%=currentTime()%>。
組み合わせ単一の値に定数、変数、式を混在させます組み合わせ:Ali_${event.aliuid}_<%=currentTime()%>_<%=2*60*60%> — ランタイム時に、変数と式はそれぞれの値に解決されます:Ali_aliuid_<timestamp>_7200。ネスト (式に変数を埋め込むことができます):<%=formatTimeStamp(secondstamp_add(${DateTime:event.datalist.*.gmt_create},-600L),"yyyy-MM-dd'T'HH:mm:ss.SSSXXX")%> — ${DateTime:event.datalist.*.gmt_create} から gmt_create の値を取得し、600 秒を減算して、結果を日付としてフォーマットします。

ビルトイン関数

関数説明例出力
currentTime現在のタイムスタンプを返します<%=currentTime()%>2025-06-05 10:30:00
secondstamp_addタイムスタンプに指定された秒数を加算します<%=secondstamp_add(currentTime(),300L)%>2025-06-05 10:30:09
formatTimeStamp指定されたパターンを使用してタイムスタンプをフォーマットします<%=formatTimeStamp(currentTime(),"yyyyMMdd")%>20250605
timestampTosecondsタイムスタンプに秒数を加算し、結果をエポック秒に変換します<%=timestampToseconds(currentTime(),300L)%>1749099848
splitStr文字列をデリミタで分割してリストにします<%=splitStr("test,value",",")%>[test,value]
parseTimeMsフォーマットされた時間文字列を解析してミリ秒に変換します<%=parseTimeMs("2025-06-05 10:30:32","yyyy-MM-ddHH:mm:ss")%>1749090632000
currentTimeToMs現在のタイムスタンプをミリ秒で返します<%=currentTimeToMs()%>1749091369688
currentHourToMs現在の時の開始時刻のミリ秒タイムスタンプを返します<%=currentHourToMs()%>1749088800000
currentDayToMs現在の日の開始時刻のミリ秒タイムスタンプを返します<%=currentDayToMs()%>1749052800000
parseTimeMsWDefault時間文字列をミリ秒に解析します。入力が空の場合、デフォルト値 (パラメーター 2) を返します<%=parseTimeMsWDefault("2025-06-05 10:30:32",1749091369688L)%>1749090632000
splitStrToJsonArray文字列をデリミタで分割して JSONArray にします<%=splitStrToJsonArray("test,value",",")%>["test","value"]
concatListStrリストの要素をデリミタで連結します。splitStr と一緒に使用します<%=concatListStr("|",splitStr("test,value",","))%>test|value
substring部分文字列を抽出します。パラメーター 1:ソース文字列。パラメーター 2:開始インデックス。パラメーター 3:終了インデックス<%=substring("012345",0,3)%>012
remainStrStartEnd先頭 N 文字と末尾 M 文字を保持し、5つのアンダースコアで結合します。パラメーター 1:ソース文字列。パラメーター 2:先頭の文字数。パラメーター 3:末尾の文字数<%=remainStrStartEnd("012345",2,2)%>01_____45
toLong値を Long 型に変換します。パラメーター 1:入力値。パラメーター 2:変換に失敗した場合のデフォルト値<%=toLong("1234",12L)%>1234.0
toLowerCase文字列内のすべての英字を小文字に変換します<%=toLowerCase("TEST")%>test
toUpperCase文字列内のすべての英字を大文字に変換します<%=toUpperCase("test")%>TEST
toJSONObjectJSON 文字列を解析して JSONObject にします<%=toJSONObject("{\"name\":\"test\",\"age\":12}")%>{"name":"test","age":12}
base64encode文字列を Base64 を使用してエンコードします<%=base64encode("abc")%>YWJj
base64decodeBase64 エンコードされた文字列をデコードします<%=base64decode("YWJj")%>abc
replace部分文字列を置き換えます。パラメーター 1:ソース文字列。パラメーター 2:対象の部分文字列。パラメーター 3:置換文字列<%=replace("abc123","abc","aaa")%>aaa123
isNull値が null または空の場合に true を返します<%=isNull("")%>true

変数パラメーター

プレイブックのコンポーネント実行中に先行ノードからの出力を参照するには、変数パラメーターのフォーマットを使用します。プレイブックの入力パラメーターについては、ノード名として event を使用します。これは開始ノードの出力として扱われます。プレイブックのオーケストレーション中に、コンポーネントに event という名前を付けないでください。

  • 変数として参照できるのは、ノードの出力パラメーターのみです。

  • プレイブックの入力パラメーターは、開始ノードの出力パラメーターと同じです。

  • 現在のノードの入力パラメーターは、前のノードの出力パラメーターと同じです。

構文フォーマット

ノードの出力パラメーターを取得するには、${node_name.parameter_path} を使用します。パスは JSONPath の規則に従い、任意の深さの JSON ネストをサポートします。

JSONObject 構造の場合、. を使用してネストされたフィールドにアクセスします。JSONArray 構造の場合、* はすべてのアイテムを取得し、[0] などの数値インデックスは特定のアイテムを取得します。次の表では、アクションの出力パラメーターを例として使用しています:

タイプ構文説明
JSON からパラメーターを取得${node_name.datalist.*.param1.param2}。開始ノードの構文:${event.param1.param2}。param1 の下にある param2 の値を取得します。param1 は JSONObject である必要があります。
JSON 配列からすべてのアイテムを取得${node_name.datalist.*.param1.*.param2}。開始ノードの構文:${event.param1.*.param2}。param1 の下にあるすべての JSONObject から param2 を取得します。param1 は JSONArray である必要があります。
JSON 配列から単一のアイテムを取得${node_name.datalist.*.param1.[0].param2}。開始ノードの構文:${event.param1.[0].param2}。param1 の下にある最初の JSONObject から param2 を取得します。param1 は JSONArray である必要があります。

変数構文を手動で記述する代わりに、入力ボックスのドロップダウンリストを使用してパラメーターを選択し、構文を自動的に生成できます。この方法は、デバッグが完了した後に推奨されます。たとえば、outputFields 構成で、フィールドマッピングの値のエリアをクリックすると、データソースのドロップダウンメニュー (InputCheck、dataSetFilter、SiemEventFormat など) が表示されます。データソースを選択すると、利用可能なフィールドパスが右側に表示されます。ターゲットフィールドをクリックすると、${InputCheck.datalist.*.records.*.hackerIP} のような変数式が生成されます。

変数パラメーターの例

次の例では、node1 という名前のノードの以下の出力を使用します:

{
  "datalist": [
    {
      "person": {
        "weight": "120",
        "age": "12"
      }
    },
    {
      "person": {
        "weight": "121",
        "age": "13"
      }
    }
  ],
  "total_data_successful": 2,
  "total_data": 2,
  "total_exe_successful": 2,
  "total_exe": 2,
  "total_data_with_dup": 2,
  "status": true
}
構文説明
${event._req_uuid}開始ノード (プレイブック入力) から _req_uuid システムパラメーターを取得します。
${event.parentTaskUuid}子プレイブックで、親プレイブックの _req_uuid を取得します (子プレイブックとして呼び出された場合にのみ存在します)。
${node1.total_data_successful}node1 から正常に処理されたデータ数を取得します。出力:2。
${node1.datalist.*.person.age}node1 の datalist からすべての person.age の値を取得します。出力:{12,13}。
${node1.datalist.[0].person.age}node1 の datalist から最初の person.age の値を取得します。出力:12。

データ型変換

プレイブックの実行中、ほとんどのデータは文字列として処理されます。アクションが特定の型を必要とする場合は、${data_type:data} を使用して変換します。

ターゲット型説明サポートされるソース型
Booleantrue または false数値:1 → true、その他のすべての値 → false。文字列:"true"、"1"、"Y"、"T" → true;"false"、"0"、"N"、"F" → false。その他の文字列はエラーを引き起こします。
LongLong 型の整数に変換します数値型;数字とカンマのみを含む文字列 (例:1,000,000)
Int整数に変換します数値型 (Long, Int, Double)。数字とカンマのみを含む文字列型 (例:1,000,000)。
Double倍精度浮動小数点数に変換します数値型 (Long, Int, Double)。数字とカンマのみを含む文字列型 (例:1,000,000)。
String文字列に変換しますすべての型
DateTime日付に変換します数値型;数値である文字列 (例:1696487400000) または ISO 8601 形式 (例:2023-10-05 14:30:00)
JSONObjectJSONObject からキーと値のペアを抽出し、新しい JSONObject にします。出力フォーマット:{"fieldname":"fieldValue",...}JSONObject のみ
JSONArrayJSONObject からキーと値のペアを抽出し、JSONArray にします。出力フォーマット:[{"fieldname":"fieldValue",...}]JSONObject のみ
JSONObjectStrJSONObject をその文字列表現に変換しますJSONObject
JSONArrayStrJSONArray をその文字列表現に変換しますJSONArray

例:

JSONObject の例:プレイブック入力:{"src_ip":"127.0.0.1","dst_ip":"127.0.0.2","msg":"hello"}

式結果
${JSONObject:event}イベント全体を JSON 文字列として
${JSONObject:event.src_ip}{"src_ip":"127.0.0.1"}
${JSONObject:event.src_ip|msg}{"src_ip":"127.0.0.1","msg":"hello"}
${JSONArray:event}イベント全体を JSONArray として
${JSONArray:event.src_ip}[{"src_ip":"127.22.22.1"}]
${JSONArray:event.src_ip|msg}[{"src_ip":"127.0.0.1","msg":"hello"}]

JSONArray の例:プレイブック入力:{"datalist":[{"src_ip":"127.0.0.1","dst_ip":"127.1.0.1","msg":"hello"},{"src_ip":"127.1.0.1","dst_ip":"127.1.0.1","msg":"hello"}]}

式結果
${JSONObject:event.datalist.*.src_ip}複数の行に展開されます。各行:{"src_ip":"127.x.0.1"}
${JSONObject:event.datalist.*.src_ip|msg}複数の行に展開されます。各行:{"src_ip":"127.x.0.1","msg":"hello"}
${JSONArray:event.datalist.*.src_ip}[{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}]
${JSONArray:event.datalist.*.src_ip|msg}[{"src_ip":"127.0.0.1","msg":"hello"},{"src_ip":"127.1.0.1","msg":"hello"}]

パラメーター処理とノード実行フロー

  1. ノードパラメーターの抽出:すべての必須の上流ノードの実行が完了した後、システムは現在のノードの入力構成に基づいて、実際の入力データを抽出します。抽出プロセスについては、以下で詳しく説明します。

  2. ノードの実行:ノードの入力パラメーターがアセンブルされた後、システムは同一のパラメーターセットを重複排除し、コンポーネントアクションを実行します。

    説明

    アクションが複数のパラメーター値のセットを受け入れる場合、アクションは自動的に複数回実行されます。

    たとえば、侵害されたアプリケーションのすべてのサーバー (複数のサーバー) で「悪意のあるファイルのパージ」アクションを実行するには、サーバー IP パラメーターを ${node1.datalist.*.ip} に設定します。システムはループを必要とせずに、各 IP アドレスで自動的にアクションを実行します。

  3. 出力結果の集約と重複排除:ノードが複数回実行された後、システムは結果を集約し、自動的に重複排除します。すべてのフィールドが同一である場合、エントリは重複と見なされます。

    重複排除前:

    [
        {
            "a":"11",
            "b":"22"
        },
        {
            "a":"11",
            "b":"22"
        },
        {
            "a":"11",
            "b":"33"
        }
    ]

    重複排除後:

    [
        {
            "a":"11",
            "b":"22"
        },
        {
            "a":"11",
            "b":"33"
        }
    ]

パラメーター抽出プロセス

単一データソース

任意の深さの複雑な JSON 構造は、ツリーと見なすことができます。JSON からパラメーターを抽出する原則は次のとおりです:同じ深さの兄弟関係は維持され、先祖ノードは展開され、兄弟でも先祖でもないフィールドはデカルト積を形成します。

  1. 任意の深さのデータを自動的に抽出します。例:

    image

  2. 兄弟関係の維持:JSON 構造の同じレベルにあるフィールドはペアのままです。

    image

  3. 先祖ノードの展開:親ノードに複数の子がある場合、子の数に合わせて展開されます。

    image

  4. 兄弟でも先祖でもないノードはデカルト積を形成:2つのフィールドに兄弟関係も先祖関係もない場合、すべての組み合わせが生成されます。

    image

複数データソース

個々のデータソースの抽出結果にデカルト積を適用します。

image