开发自定义转换器

支持:

您可以直接在 IDE 中创建基于 Python 的自定义转换函数和逻辑运算符,并在策略方案中使用它们,以实现复杂且多样的使用场景。

扩展包

扩展包是一种专门的集成类型,旨在充当自定义转换函数和逻辑运算符的容器。与标准集成不同,扩展包不需要实例配置,可以直接从 IDE 创建。

扩展包的最佳实践

  • 整合 :创建一个主扩展包,并向其中添加多个 转换函数或逻辑运算符。
  • 分离:当您需要一组可能与主包冲突的不同 Python 库(依赖项)时,请创建一个新的扩展包。

创建扩展包

如需创建新的扩展包,请按以下步骤操作:

  1. 依次前往响应 > IDE
  2. 点击 add 创建新项
  3. 从下拉列表中选择扩展包
  4. 为扩展包提供唯一的名称
  5. 点击保存

上传依赖项

与标准集成一样,扩展包在虚拟环境中运行,您可以在其中管理 Python 库。

如需管理库,请按以下步骤操作:

  1. 在 IDE 中打开扩展包设置
  2. 从 PyPi 添加所需的 Python 库,或从您的 计算机上传这些库。

这些依赖项可供此特定扩展包中包含的所有转换器和逻辑运算符使用。

导入和导出

您可以直接在 IDE 界面中手动导入和导出扩展包。

自定义转换器

自定义转换器 是用户定义的 Python 函数,用于扩展表达式构建器 中的预构建函数。您可以直接在 IDE 中创建它们来提取和处理数据,并且它们可以与现有的内置函数一起使用。

创建自定义转换器

如需定义新的自定义转换器,请按以下步骤操作:

  1. IDE 中,找到目标扩展包。
  2. 选择目标扩展包,以在该包下添加新项。
  3. 选择自定义转换函数
  4. 为其命名。
  5. 可选:添加说明。当您将鼠标悬停在表达式构建器中的 自定义转换器上时,系统会显示此说明。
  6. 使用 Python 定义脚本逻辑。您可以将提供的默认 模板作为起点。
    • 脚本必须包含 main 函数,如 预定义模板 所示。
    • 脚本必须使用 SDK end 函数向表达式构建器返回结果。
    • 自定义转换器的输入可以是不同的类型 (例如字符串或列表)。请确保在 main 函数中将其转换为预期 类型。
    • 您只能在 IDE 中使用 SDK 方法的子集来创建 转换器:
      • transformer.extract_param("ParamName"):用于检索输入值。
      • transformer.LOGGER:用于写入日志以进行 调试。
      • transformer.end(result):用于返回 转换后的值。
  7. 创建参数:
    • 每个自定义转换函数都包含一个默认的输入 参数。此参数表示输入数据,即 函数应用到的占位符。您无法删除此 参数。
    • 此外,您还可以添加要在函数中使用的可选参数。
  8. 文档(可选):为 表达式构建器定义产品内文档:
    • 预期输入:描述函数预期为此转换器接收的数据类型(例如“字符串”或“字符串列表”)。
    • 预期输出:描述函数预期为此转换器返回的数据类型(例如“布尔值”)。
    • 用法示例 :提供如何调用 函数的示例(例如 if_empty("new_value"))。

您可以在策略方案中使用自定义转换函数逻辑之前,直接在 IDE 中对其进行测试。这样,您就可以验证 Python 脚本是否正确处理各种输入类型和参数,并返回预期的结果。

超时

  • 默认超时时间 :1 分钟。
  • 最长超时时间 :3 分钟。

在表达式构建器中使用自定义转换器

保存后,自定义转换器会与内置函数一起显示在表达式构建器的函数列表中。它们的格式为:ExtensionPackName.TransformerName。将鼠标悬停在函数上会显示根据参数说明生成的文档。

支持所有占位符(JSON 和非 JSON)

表达式构建器支持策略方案设计器中公开的每个占位符,包括非 JSON 结果。

对于非 JSON 占位符:

  • 您可以手动将示例数据输入到表达式构建器中,以测试 逻辑,针对各种输入类型(字符串、列表 [以英文逗号分隔的值]) 和 JSON。
  • 使用输入类型进行测试并不能保证占位符在运行时会 返回该特定类型。
  • 大多数占位符都会解析为字符串,但某些特定类型会 根据其数量解析为字符串或列表(例如 entity.identifier)。对于这些类型,建议始终将输入视为列表。

错误处理

如果自定义转换函数在执行期间遇到错误,则 使用该转换器的策略方案操作会失败。Python 脚本生成的具体错误消息会显示在策略方案运行视图中的屏幕上,以便您直接排查逻辑问题。

自定义逻辑运算符

借助自定义逻辑运算符 ,您可以定义自己的布尔逻辑来比较值。

创建自定义逻辑运算符

如需定义新的逻辑运算符,请按以下步骤操作:

  1. IDE 中,找到目标 扩展包
  2. 选择自定义逻辑运算符
  3. 为其命名。
  4. 可选:在 策略方案设计器中为逻辑运算符菜单添加说明。
  5. 使用 Python 定义脚本逻辑。您可以将提供的 预定义模板作为起点。
    • 脚本必须包含 main 函数。
    • 脚本必须使用 SDK end 函数向条件返回布尔值结果。
    • 您只能在 IDE 中使用 SDK 方法的子集来创建 逻辑运算符:
      • logical_operator.extract_param("ParamName"):用于 检索输入值。
      • logical_operator.LOGGER:用于写入日志以进行 调试。
      • logical_operator.end(result):结果为布尔值(truefalse)。

您可以直接在 IDE 中测试自定义逻辑运算符逻辑。这样,您就可以为参数输入测试值,并验证函数是否根据您定义的条件返回正确的布尔值(True 或 False)结果。

参数

自定义逻辑运算符接受两个参数:左侧 (必填且不可修改)和右侧 (可选;用户可以停用)。

  • 示例 1if [left side] not in [right side]
  • 示例 2 if [left side] is greater than 80(无 右侧)。

超时

  • 默认超时时间 :1 分钟。
  • 最长超时时间 :3 分钟。

在策略方案中使用

自定义逻辑运算符会显示在策略方案条件上一个操作条件实体选择 中的运算符菜单中。

自定义逻辑运算符可以与标准运算符(例如“等于”或“包含”)一起选择。

错误处理

如果自定义逻辑运算符函数在执行期间遇到错误,则使用该运算符的策略方案条件或步骤会失败。Python 脚本返回的错误消息会显示在策略方案运行视图中,以帮助进行问题排查。

限制

  • 自定义转换函数和逻辑运算符在触发器Webhook中不受支持 。

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。