このトピックでは、フロー制御関数の構文とパラメーターについて説明します。また、関数の使用例も紹介します。
関数
関数 | 説明 |
複数の操作を組み合わせます。
この関数は他の関数と組み合わせて使用できます。詳細については、「複雑な JSON データの変換」をご参照ください。 | |
指定された条件が満たされた場合に操作を実行します。複数の条件と操作のペアを指定できます。
たとえば、この変換ルールは、次の Python コードの構造に相当します。 この関数は他の関数と組み合わせて使用できます。詳細については、「複雑な JSON データの変換」をご参照ください。 | |
指定された条件の評価結果に基づいて操作を実行します。 たとえば、この変換ルールは、次の Python コードの構造に対応します。 | |
条件とそれに関連付けられた操作のセットです。
たとえば、この変換ルールは、次の Python コードの構造に相当します。 この関数は他の関数と組み合わせて使用できます。詳細については、「複数の宛先 Logstore へのデータ配信」をご参照ください。 |
e_compose
複数の操作を組み合わせることができます。
-
構文
e_compose(Operation 1, Operation 2, ...) -
パラメーター
パラメーター名
型
必須
説明
操作 1
グローバル処理関数
はい
グローバル処理関数またはグローバル処理関数の組み合わせ。
操作 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(Condition, Operation) e_if(Condition 1, Operation 1, Condition 2, Operation 2, ...)説明ConditionパラメーターとOperationパラメーターはペアで指定する必要があります。 -
パラメーター
パラメーター名
型
必須
説明
条件
任意
はい
式または式の組み合わせ。結果がブール値でない場合、システムは条件が true か false かを評価します。
操作
グローバル処理関数
はい
グローバル処理関数またはグローバル処理関数の組み合わせ。
-
レスポンス
指定された操作が実行されたログが返されます。
-
例
例 1:フィールド値を指定された値と照合し、操作を実行します。
result フィールドの値が failed または failure の場合、__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(条件, 条件が true と評価された場合の操作 1, 条件が false と評価された場合の操作 2) -
パラメーター
パラメーター名
タイプ
必須
説明
Condition
Arbitrary
はい
式または複数の式の組み合わせです。結果がブール値でない場合、システムはその条件が真か偽かを評価します。
Real-time operation
Global processing function
はい
グローバル処理関数または複数のグローバル処理関数の組み合わせです。
Mock operation
Global processing function
はい
グローバル処理関数または複数のグローバル処理関数の組み合わせです。
-
レスポンス
異なる条件に基づいて操作結果を返します。
-
例
result フィールドの値が ok または pass であるか、status フィールドの値が 200 の場合、ログを保持します。
元のログ
result: ok status: 400result: Pass status: 200result: 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: 400result: Pass status: 200
e_switch
複数の条件と操作を組み合わせることができます。
-
構文
e_switch(Condition 1, Operation 1, ..., default=None)説明ConditionパラメーターとOperationパラメーターはペアで指定する必要があります。 -
パラメーター
パラメーター名
型
必須
説明
条件
任意
はい
式または式の組み合わせ。結果がブール値でない場合、システムは条件が true か false かを評価します。
操作
グローバル処理関数
はい
グローバル処理関数またはグローバル処理関数の組み合わせ。
default
グローバル処理関数
いいえ
グローバル処理関数またはグローバル処理関数の組み合わせ。指定されたどの条件も満たされない場合、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()` が設定されている場合、ルールに一致しないログは破棄され、配信されません。`default` パラメーターを設定しない場合、ルールに一致しないログは、設定された最初の 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())
参照
この関数は他の関数と組み合わせて使用できます。詳細については、「複数の宛先 Logstore へのデータ配信」をご参照ください。