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

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

最終更新日:Mar 12, 2026

プレイブックのコンポーネント操作では、定数、変数、式、関数などのパラメーターをサポートします。パラメーター処理には、抽出、重複排除、ループ実行などのステップが含まれます。

パラメーターの分類

  • 機能別に分類すると、パラメーターはプレイブック入力パラメーター、プレイブック出力パラメーター、コンポーネント操作入力パラメーター、コンポーネント操作出力パラメーターに分けられます。

  • 型別に分類すると、パラメーターはシステムパラメーターとコンポーネントパラメーターに分けられます。

    説明

    コンポーネント操作の実行中は、任意のノードからシステムデフォルトパラメーターを取得できます。ただし、コンポーネントパラメーターは含まれません。

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

コンポーネントの入力パラメーターは、カスタム値または上流ノードの出力である場合があります。上流ノードの出力を使用する場合は、そのノードがオーケストレーションパス上で現在のノードより前に配置されている必要があります。

重要

マルチパスのシナリオでは、ノード名がグローバルに一意であることを確認してください。

以下の図の ノード B を例に説明します。ノード B は、上流のノード A の出力およびプレイブック入力パラメーターを取得できます。一方、ノード D の出力は同一ブランチ上にないため取得できません。また、ノード C はノード B の先行ノードではないため、その出力も取得できません。

image

システムパラメーターの説明

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

システムデフォルトパラメーターは、任意のノードからアクセス可能です。以下の表に示す式を使用してパラメーターを取得します。「イベント」は開始ノードの名前とみなすことができます。プレイブックのシステムパラメーターを取得するには、`${event.parameter_name}` の形式を使用します。

パラメーター

データの型

説明

_tenant_id

String

${event._tenant_id}

プレイブックを呼び出した Alibaba Cloud アカウント ID。

_domain_id

String

${event._domain_id}

ログイン中のユーザーのロール状態。

  • 0:単一アカウントでのログインを示します。

  • 1:グローバルアカウントでのログインを示します。

_trigger_user

String

${event._trigger_user}

プレイブックをトリガーした Alibaba Cloud アカウント ID。RAM ユーザーを使用している場合は、RAM ユーザーの ID が返されます。

_region_id

String

${event._region_id}

リージョン ID。

_req_uuid

String

${event._req_uuid}

現在のプレイブック実行タスクの一意の識別子。

parentTaskUuid

String

${event.parentTaskUuid}

親プレイブックの `_req_uuid`。子プレイブックが呼び出された場合に存在します。

parentTaskName

String

${event.parentTaskName}

親プレイブックの UUID。子プレイブックが呼び出された場合に存在します。

コンポーネント操作出力におけるシステムパラメーター

任意のコンポーネントの出力には、以下のパラメーターが含まれます。カスタムパラメーターは `datalist` にカプセル化されます。すべての出力パラメーター値を取得するには、`${node_name.datalist.*}` を使用します。

パラメーター

データの型

説明

datalist

JSONArray

操作実行後の出力パラメーター。

重要

コンポーネントからのカスタム出力パラメーターも `datalist` に格納されます。

total_data_successful

Int

操作実行中に正常に処理されたデータ量。

total_data

Int

操作実行中に処理されたデータ量。

total_data_with_dup

Int

操作実行中に正常に処理され、重複排除されたデータ量。

total_exe_successful

Int

現在の操作が正常に実行された回数。

total_exe

Int

現在の操作が実行された回数。

status

Boolean

操作の実行ステータス。有効な値:`true`、`false`。

messageForUser

String

実行失敗時のユーザー向けエラーメッセージ。

message

String

実行失敗時のシステムエラーメッセージ。

failed_exe_detail

String

実行失敗時の詳細エラー情報。

パラメーターの形式

パラメーターは、定数変数 の 3 つの基本形式をサポートします。これらの形式を組み合わせたり、より複雑なネスト構造を使用したりすることもできます。

基本形式

説明

定数

固定文字列。

Ali.

変数

プレイブック入力パラメーターおよび先行ノードの出力パラメーターから値を抽出します。

${event.aliuid}(プレイブック入力パラメーターから `aliuid` を取得)。

埋め込み式および関数を使用して値を生成します。形式は `<%=expression|function%>` です。サポートされる関数の一覧については、「式のビルトイン関数一覧」をご参照ください。

式の例:Java 構文のみ対応(例:`<%=2*60*60%>`)。

機能: <%=currentTime()%>。

組み合わせ形式

定数_変数_式

組み合わせの例:

`Ali_${event.aliuid}_<%=currentTime()%>_<%=2*60*60%>`。操作実行時に、変数および式が解析され、対応する値に置き換えられます(例:`Ali_aliuid_current_time_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

指定された秒数(`secNum`)を現在のタイムスタンプに加算します。

<%=secondstamp_add(currentTime(),300L)%>

2025-06-05 10:30:09

formatTimeStamp

指定されたフォーマットに基づいて入力タイムスタンプをフォーマットします。

<%=formatTimeStamp(currentTime(),"yyyyMMdd")%>

20250605

timestampToseconds

指定された秒数(`secNum`)を現在のタイムスタンプに加算し、結果を秒単位で出力します。

<%=timestampToseconds(currentTime(),300L)%>

1749099848

splitStr

入力文字列(`inputStr`)を指定されたデリミタ(`splitStr`)に基づいてリストに分割します。

<%=splitStr("test,value",",")%>

[test,value]

parseTimeMs

時刻形式の文字列をミリ秒に変換します。

<%=parseTimeMs("2025-06-05 10:30:32","yyyy-MM-ddHH:mm:ss")%>

1749090632000

currentTimeToMs

現在のタイムスタンプをミリ秒に変換します。

<%=currentTimeToMs()%>

1749091369688

currentHourToMs

現在の時間のタイムスタンプをミリ秒に変換します。計算は、現在の時間の 0 分 0 秒から開始されます。

<%=currentHourToMs()%>

1749088800000

currentDayToMs

現在の日のタイムスタンプをミリ秒に変換します。計算は、現在の日の 0 時 0 分 0 秒から開始されます。

<%=currentDayToMs()%>

1749052800000

parseTimeMsWDefault

タイムスタンプをミリ秒に解析し、デフォルト値をサポートします。最初のパラメーターが空の場合、2 番目のパラメーターがデフォルト値として使用されます。

<%=parseTimeMsWDefault("2025-06-05 10:30:32",1749091369688L)%>

1749090632000

splitStrToJsonArray

入力文字列(`inputStr`)を指定されたデリミタ(`splitStr`)に基づいて JSONArray に分割します。

<%=splitStrToJsonArray("test,value",",")%>

["test","value"]

concatListStr

指定されたデリミタを使用して文字列を連結します。この関数は `splitStr` 関数と併用する必要があります。

<%=concatListStr("|",splitStr("test,value",","))%>

test|value

substring

部分文字列を抽出します。

パラメーター 1:抽出元の文字列。

パラメーター 2:開始インデックス。

パラメーター 3:終了インデックス。

<%=substring("012345",0,3)%>

012

remainStrStartEnd

指定された開始および終了マーカーの外側の文字を保持します。`inputStr` の先頭 `beginSize` 文字と末尾 `endSize` 文字を保持し、それらをアンダースコア 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

toJSONObject

JSON 文字列を JSON オブジェクトに変換します。

<%=toJSONObject("{\"name\":\"test\",\"age\":12}")%>

{"name":"test","age":12}

base64encode

Base64 を使用して文字列をエンコードします。

<%=base64encode("abc")%>

YWJj

base64decode

Base64 文字列をデコードします。

<%=base64decode("YWJj")%>

abc

replace

文字列の一部を置き換えます。

  • パラメーター 1:変更対象の文字列。

  • パラメーター 2:置き換えるサブストリング。

  • パラメーター 3:新しいサブストリング。

<%=replace("abc123","abc","aaa")%>

aaa123

isNull

オブジェクトが null または空かどうかをチェックします。

<%=isNull("")%>

true

変数パラメーター

プレイブックコンポーネントの実行中、フロー内の先行ノードからパラメーターを取得したい場合は、コンポーネント内で変数パラメーター形式を使用します。プレイブック入力パラメーターの場合は、ノード名として event を使用します。これは 開始ノードの出力パラメーター とみなすことができます。したがって、プレイブックのオーケストレーション中には、コンポーネント名として「event」を使用しないでください。

重要
  • 現在、ノードの出力パラメーターからのみデータを取得できます。

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

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

構文形式

ノード出力パラメーター を取得する構文は `${node_name.parameter_path}` です。パスには JSONPath 方式を使用し、任意の階層数の JSON 形式をサポートします。

  • JSONObject 形式の場合、ピリオド(`.`)を使用して子ノードのデータを直接取得します。JSONArray 形式の場合、アスタリスク(`*`)はすべてのデータを示します。また、数値インデックスを使用して単一のデータを取得することもできます。以下に、操作実行後の出力パラメーター を取得する例を示します:

    タイプ

    構文

    説明

    JSON 内のパラメーターを取得

    ${node_name.datalist.*.parameter1.parameter2}

    説明

    開始ノード(プレイブック)の出力パラメーターを取得する構文は `${event.parameter1.parameter2}` です。

    `parameter1` の下の `parameter2` のデータを取得します。

    説明

    `parameter1` の値は JSONObject 形式である必要があります。

    JSON 配列内のすべてのデータを取得

    ${node_name.datalist.*.parameter1.*.parameter2}

    説明

    開始ノード(プレイブック)の出力パラメーターを取得する構文は `${event.parameter1.*.parameter2}` です。

    `parameter1` の下のすべての JSONObject から `parameter2` のデータを取得します。

    説明

    `parameter1` の値は JSONArray 形式である必要があります。

    JSON 配列から単一のデータを取得

    ${node_name.datalist.*.parameter1.[0].parameter2}

    説明

    開始ノード(プレイブック)の出力パラメーターを取得する構文は `${event.parameter1.[0].parameter2}` です。

    `parameter1` の下の最初の JSONObject から `parameter2` のデータを取得します。

    説明

    `parameter1` の値は JSONArray 形式である必要があります。

  • 構文ルールを手動で記述するほか、入力ボックス内のドロップダウンリストからパラメーターを選択することで、対応する構文を自動生成することもできます。テスト完了後にこの方法を推奨します。以下の図に例を示します。image

変数パラメーターの取得例

ノード名が `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}` です。以下の表に、サポートされるデータの型変換を示します。

データの型

説明

サポートされるソース型

Boolean

ブール値に変換します。有効な値:`true`、`false`。

  1. Long、Int、Double などの数値型。値 `1` は `true` に変換され、他の値は `false` に変換されます。

  2. String 型:文字列 `"true"`、`"1"`、`"Y"`、`"T"` は `true` に変換されます。文字列 `"false"`、`"0"`、`"N"`、`"F"` は `false` に変換されます。その他の文字列はサポートされておらず、エラーを引き起こします。

Long

Long に変換します。

  1. Long、Int、Double などの数値型。

  2. String 型:数字とカンマのみを含む文字列(例:`1,000,000`)。

Int

Int に変換します。

Double

Double に変換します。

String

String に変換します。

すべての型がサポートされます。

DateTime

日付に変換します。

  1. Long、Int、Double などの数値型。

  2. String 型:数値型(例:`1696487400000`)または ISO 8601 日付フォーマット(例:`2023-10-05 14:30:00`)である必要があります。

JSONObject

JSONObject からキーと値を抽出して新しい JSONObject を作成します。これは、複数列のデータを `{}` 形式でカプセル化するために使用されます。出力形式は `{"fieldname":"fieldValue",...}` です。

JSONObject 型のみサポートされます。

JSONArray

JSONObject からキーと値を抽出して JSONArray を作成します。これは、複数行・複数列のデータを `[{}]` 形式でカプセル化するために使用されます。その後、データは単一行・単一列の形式で出力されます。

JSONObject 型のみサポートされます。

JSONObjectStr

JSONObject を文字列に変換します。

JSONObject 型。

JSONArrayStr

JSONArray を文字列に変換します。

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` フィールドから JSONObject を作成します。結果:`{"src_ip":"127.0.0.1"}`。

    • ${JSONObject:event.src_ip|msg}:イベントの `src_ip` および `msg` フィールドから JSONObject を作成します。結果:`{"src_ip":"127.0.0.1","msg":"hello"}`。

    • ${JSONArray:event}: イベント全体を完全な JSONArray として出力します。

    • ${JSONArray:event.src_ip}:イベントの `src_ip` フィールドから JSONArray を作成します。結果:`[{"src_ip":"127.22.22.1"}]`。

    • ${JSONArray:event.src_ip|msg}:イベントの `src_ip` および `msg` フィールドから JSONArray を作成します。結果:`[{"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}:複数行に展開されます。各行の結果は JSONObject であり、例:`{"src_ip":"127.x.0.1"}`。

    • ${JSONObject:event.datalist.*.src_ip|msg}:複数行に展開されます。各行は JSONObject であり、例:{"src_ip":"127.x.0.1","msg":"hello"}

    • ${JSONArray:event.datalist.*.src_ip}:単一行の JSON 配列に展開されます。例:`[{"src_ip":"127.0.0.1"},{"src_ip":"127.1.0.1"}]`。

    • ${JSONArray:event.datalist.*.src_ip|msg}:結果を単一の JSONArray に結合します。結果:`[{"src_ip":"127.0.0.1","msg":"hello"},{"src_ip":"127.1.0.1","msg":"hello"}]`。

パラメーター処理およびノード実行フロー

image
  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"
        }
    ]

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

1 つのデータソースの処理

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

  1. データは任意の深さから自動的に抽出されます。以下の図に例を示します。image

  2. 同一深さの兄弟関係は維持されます。以下の図に例を示します。

    image

  3. 先祖ノードは展開されます。以下の図に例を示します。

    image

  4. 兄弟でも先祖でもないノード間ではデカルト積が作成されます。以下の図に例を示します。image

複数のデータソースの処理

各データソースの処理結果からデカルト積が作成されます。

image