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

Simple Log Service:フロー制御関数

最終更新日:Aug 27, 2024

このトピックでは、フロー制御関数の構文とパラメーターについて説明します。 このトピックでは、関数の使用方法の例も示します。

関数

関数

説明

e_compose

複数の操作を組み合わせます。

  • この関数は、e_if、e_switch、またはe_if_else関数で一般的に使用されます。

  • この関数は、ログに対して指定された操作を順番に実行し、結果を返します。

  • 関数がログを削除する操作を実行した場合、関数はログに対して他の操作を実行しなくなります。

この関数は、他の関数と組み合わせて使用できます。 詳細については、「複雑なJSONデータの変換」をご参照ください。

e_if

指定された条件が満たされた場合に操作を実行します。 複数の条件と操作のペアを指定できます。

  • 条件が満たされている場合、関数は条件に対応する操作を実行します。 条件が満たされない場合、関数は操作を実行しませんが、次の条件を評価します。

  • 関数がログを削除する操作を実行した場合、関数はログに対して他の操作を実行しなくなります。

e_if(
    e_has("a"), e_output("target-a"), 
    e_has("b"), e_output("target-b"),
)

関数の上記の例は、次のPythonコードと同等です。

if e_has("a"):
    e_output("target-a")
if e_has("b"):
    e_output("target-b")

この関数は、他の関数と組み合わせて使用できます。 詳細については、「複雑なJSONデータの変換」をご参照ください。

e_if_else

指定された条件の評価結果に基づいて操作を行います。

e_if_else(e_has("a"), e_output("target-a"), e_output("target-b"))

関数の上記の例は、次のPythonコードと同等です。

if e_has("a"):
    e_output("target-a")
else:
    e_output("target-b")

e_switch

指定された条件が満たされた場合に操作を実行します。 複数の条件と操作のペアを指定できます。

  • 条件が満たされている場合、関数は条件に対応する操作を実行し、結果を返します。 条件が満たされない場合、関数は操作を実行しませんが、次の条件を評価します。

  • 指定された条件が満たされず、既定のパラメーターが設定されている場合、関数は既定のパラメーターで指定された操作を実行し、結果を返します。

  • 関数がログを削除する操作を実行した場合、関数はログに対して他の操作を実行しなくなります。

e_switch(
    e_has("a"), e_output("target-a"), 
    e_has("b"), e_output("target-b"),
    default=e_output("target-default"), 
)

関数の上記の例は、次のPythonコードと同等です。

if e_has("a"):
    e_output("target-a")
elif e_has("b"):
    e_output("target-b")
else:
    e_output("target-default")

この関数は、他の関数と組み合わせて使用できます。 詳細については、「複数の宛先ログストアへのデータの配布」をご参照ください。

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())
  • 関連ドキュメント

    この関数は、他の関数と組み合わせて使用できます。 詳細については、「複数の宛先ログストアへのデータの配布」をご参照ください。