このトピックでは、フロー制御関数の構文とパラメーターについて説明します。 このトピックでは、関数の使用方法の例も示します。
関数
関数 | 説明 |
複数の操作を組み合わせます。
この関数は、他の関数と組み合わせて使用できます。 詳細については、「複雑なJSONデータの変換」をご参照ください。 | |
指定された条件が満たされた場合に操作を実行します。 複数の条件と操作のペアを指定できます。
関数の上記の例は、次のPythonコードと同等です。
この関数は、他の関数と組み合わせて使用できます。 詳細については、「複雑なJSONデータの変換」をご参照ください。 | |
指定された条件の評価結果に基づいて操作を行います。
関数の上記の例は、次のPythonコードと同等です。
| |
指定された条件が満たされた場合に操作を実行します。 複数の条件と操作のペアを指定できます。
関数の上記の例は、次のPythonコードと同等です。
この関数は、他の関数と組み合わせて使用できます。 詳細については、「複数の宛先ログストアへのデータの配布」をご参照ください。 |
e_compose
e_compose関数は、複数の操作を組み合わせます。
構文
e_compose(Operation 1, Operation 2, ...)
パラメーター
パラメーター
データ型
必須
説明
Operation 1
グローバル処理関数
課金されます
グローバル処理関数またはグローバル処理関数の組み合わせ。
Operation 2
グローバル処理関数
課金されません
グローバル処理関数またはグローバル処理関数の組み合わせ。
レスポンス
指定された操作が実行されたログが返されます。
例
contentフィールドの値が123の場合は、ageフィールドとnameフィールドを削除し、contentフィールドの値をctxに変更します。
生ログ
content: 123 age: 23 name: twiss
変換ルール
e_if( e_search("content==123"), e_compose(e_drop_fields("age|name"), e_rename("content", "ctx")), )
結果
ctx: 123
関連ドキュメント
この関数は、他の関数と組み合わせて使用できます。 詳細については、「複雑なJSONデータの変換」をご参照ください。
e_if
e_if関数は、指定された条件が満たされると操作を実行します。
構文
e_if(Condition, Operation) e_if(Condition 1, Operation 1, Condition 2, Operation 2, ...)
説明[条件]
パラメーターと[操作]
パラメーターをペアで指定する必要があります。パラメーター
パラメーター
データ型
必須
説明
Condition
任意
課金されます
式または式の組み合わせ。 結果がブール値でない場合は、システムは条件が true か false かを評価します。
操作
グローバル処理関数
課金されます
グローバル処理関数またはグローバル処理関数の組み合わせ。
レスポンス
指定された操作が実行されたログが返されます。
例
例1: フィールド値を指定された値と照合し、操作を実行します。
resultフィールドの値がfailedまたはfailedの場合、__topic__ フィールドを
login_failed_event
に設定します。e_if(e_match("result", r"failed|failure"), e_set("__topic__", "login_failed_event"))
例2: フィールド値に基づいて評価を実行し、操作を実行します。
request_bodyフィールドが存在し、フィールドが空でない場合は、フィールド処理関数e_jsonを呼び出して、request_bodyフィールドの値を複数の値に展開します。
e_if(v("request_body"), e_json("request_body"))
例3: 高度な評価を実行し、操作を実行します。
validフィールドの値が小文字でfailedの場合は、ログを破棄します。
e_if(op_eq(str_lower(v("valid")), "failed"), DROP)
例4: 指定された条件に基づいて複数の操作を順番に実行します。
e_if(True, e_set("__topic__", "default_login"), e_match("valid", "failed"), e_set("__topic__", "login_failed_event") )
関連ドキュメント
この関数は、他の関数と組み合わせて使用できます。 詳細については、「複雑なJSONデータの変換」をご参照ください。
e_if_else
e_if_else関数は、指定された条件の評価結果に基づいて演算を行う。
構文
e_if_else(Condition, Operation 1 if Condition evaluates to true, Operation 2 if Condition evaluates to false)
パラメーター
パラメーター
データ型
必須
説明
Condition
任意
課金されます
式または式の組み合わせ。 結果がブール値でない場合は、システムは条件が true か false かを評価します。
条件がtrueに評価された場合の操作1
グローバル処理関数
課金されます
グローバル処理関数またはグローバル処理関数の組み合わせ。
条件がfalseに評価された場合の操作2
グローバル処理関数
課金されます
グローバル処理関数またはグローバル処理関数の組み合わせ。
レスポンス
指定した条件の評価結果に基づいて操作したログを返却します。
例
resultフィールドの値がokまたはpassの場合、またはstatusフィールドの値が200の場合は、ログを保持します。
生ログ
result: ok status: 400
result: Pass status: 200
result: failure status: 500
変換ルール
e_if_else( op_or(e_match("result", r"(?i)ok|pass"), e_search("status== 200")), KEEP, DROP )
結果: 最初の2つのログは保持されます。 3番目のログは破棄されます。
result: ok status: 400
result: Pass status: 200
e_switch
e_switch関数は、指定された条件が満たされると操作を実行します。
構文
e_switch(Condition 1, Operation 1, ..., default=None)
説明[条件]
パラメーターと[操作]
パラメーターをペアで指定する必要があります。パラメーター
パラメーター
データ型
必須
説明
Condition
任意
課金されます
式または式の組み合わせ。 結果がブール値でない場合は、システムは条件が true か false かを評価します。
操作
グローバル処理関数
課金されます
グローバル処理関数またはグローバル処理関数の組み合わせ。
default
グローバル処理関数
課金されません
グローバル処理関数またはグローバル処理関数の組み合わせ。 指定された条件が満たされない場合、デフォルトパラメーターで指定された操作が実行されます。
レスポンス
指定された操作が実行されたログが返されます。
例
contentフィールドの値が123の場合、__topic__ フィールドをNumberに設定します。 data フィールドの値が 123 の場合は、__topic__ フィールドを PRO と設定します。
生ログ
__topic__: age: 18 content: 123 name: maki data: 342
__topic__: age: 18 content: 23 name: maki data: 123
変換ルール
e_switch( e_search("content==123"), e_set("__topic__", "Number", mode="overwrite"), e_search("data==123"), e_set("__topic__", "PRO", mode="overwrite"), )
結果
__topic__: Number age: 18 content: 123 name: maki data: 342
__topic__: PRO age: 18 content: 23 name: maki data: 123
e_switch関数とe_output関数を組み合わせて、指定された条件を満たすログを異なるLogstoreに送信できます。 default=e_drop() を指定した場合、指定された条件を満たさないログは破棄され、出荷されません。 既定のパラメーターを設定しない場合、指定された条件を満たさないログは、指定した最初のLogstoreに送信されます。
生ログ
__topic__: sas-log-dns test: aliyun __topic__: aegis-log-network test:ecs __topic__: local-dns test:sls __topic__: aegis-log-login test: sls
変換ルール
e_switch(e_match("__topic__","sas-log-dns"),e_output(name="target1"), e_match("__topic__","sas-log-process"),e_output(name="target2"), e_match("__topic__","local-dns"),e_output(name="target3"), e_match("__topic__","aegis-log-network"),e_output(name="target4"), e_match("__topic__","aegis-log-login"),e_output(name="target5"), default=e_drop())
関連ドキュメント
この関数は、他の関数と組み合わせて使用できます。 詳細については、「複数の宛先ログストアへのデータの配布」をご参照ください。