

截至 2025 年 11 月 7 日，亚马逊 Fraud Detector 不再向新客户开放。要获得与 Amazon Fraud Detector 类似的功能 SageMaker，请浏览亚马逊 AutoGluon、和 AWS WAF。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# Rules
<a name="rules"></a>

规则是一种条件，它告诉 Amazon Fraud Detector 在欺诈预测期间如何解释变量值。规则是探测器逻辑的一部分，它由以下元素组成：
+ **变量或列表**-变量表示事件数据集中您要在欺诈预测中使用的数据元素。列表是事件数据集中变量的一组输入数据元素。规则中使用的变量必须在评估的事件类型中预定义，并且规则中使用的列表必须与变量类型相关联。有关更多信息，请参阅[变量](variables.md)和[Lists](lists.md)。
+ **表达式**-规则中的表达式可以捕获您的业务逻辑。如果在规则中使用变量，则使用变量、比较运算符（例如 >、<、<=、>=。==）和值构造一个简单的规则表达式。如果您使用的是列表，则规则表达式将构造为列表条目`in`、和列表名称。有关更多信息，请参阅 [规则语言参考](rule-language-reference.md)。您可以使用`and`和将多个表达式组合在一起`or`。所有表达式的计算结果都必须为布尔值（真或假），并且长度必须小于 4,000 个字符。不支持 if-else 类型条件。
+ **结果 — 结果**是 Amazon Fraud Detector 在匹配规则时返回的响应。结果表明欺诈预测的结果。您可以为每种可能的欺诈预测创建结果并将其添加到规则中。有关更多信息，请参阅 [成果](outcomes.md)。

探测器必须至少有一个关联的规则。一条规则最多可以有 3 个列表，而一个检测器最多可以有 30 个列表。作为检测器创建过程的一部分，您可以创建规则。您也可以创建新规则并将其与现有检测器相关联。

# 规则语言参考
<a name="rule-language-reference"></a>

以下部分概述了 Amazon Fraud Detector 中的表达式（即规则编写）功能。

## 使用变量
<a name="using-variables"></a>

您可以使用已评估事件类型中定义的任何变量作为表达式的一部分。使用美元符号表示变量：

```
$example_variable < 100
```

## 使用列表
<a name="using-lists"></a>

您可以使用任何与变量类型关联且填充有条目的列表作为规则表达式的一部分。使用美元符号表示列表条目值：

```
$example_list_variable in @list_name
```

## 比较、成员资格和身份运算符
<a name="compare-id-ops"></a>

Amazon Fraud Detector 包括以下比较运算符：>、>=、<、<=、\$1 =、==、in、not in

示例如下：

示例：<

```
$variable < 100
```

示例：在，不在

```
$variable in [5, 10, 25, 100]
```

示例：！ =

```
$variable != "US"
```

示例：==

```
$variable == 1000
```

**操作员表**


| 运算符 | 亚马逊 Fraud Detector 操作员 | 
| --- | --- | 
| 等于  | == | 
| 不等于  | \$1= | 
| Greater than | > | 
| Less than | < | 
| 大于或等于 | >= | 
| 小于或等于 | <= | 
| In | in | 
| And | 和 | 
| Or | 或者 | 
| Not | \$1 | 

## 基础数学
<a name="basic-math"></a>

可以在表达式中使用基本的数学运算符（例如，\$1、-、\$1、/）。一个典型的用例是在评估期间需要合并变量时。

在下面的规则中，我们将变量`$variable_1`与相加`$variable_2`，并检查总数是否小于 10。

```
$variable_1 + $variable_2 < 10
```

**基本数学表数据**


| 运算符 | 亚马逊 Fraud Detector 操作员 | 
| --- | --- | 
| Plus | \$1 | 
| 减去 | - | 
| Multiply | \$1 | 
| Divide | / | 
| 取模 | % | 

## 正则表达式（正则表达式）
<a name="reg-expressions"></a>

您可以使用正则表达式来搜索作为表达式一部分的特定模式。如果您要为其中一个变量匹配特定的字符串或数值，则此功能特别有用。Amazon Fraud Detector 仅在使用正则表达式时支持匹配（例如，它 True/False 根据提供的字符串是否与正则表达式匹配而返回）。Amazon Fraud Detector 的正则表达式支持基于 java 中的.matches ()（使用 RE2 J 正则表达式库）。互联网上有几个有用的网站，可用于测试不同的正则表达式模式。

在下面的第一个示例中，我们首先将变量`email`转换为小写。然后我们检查该模式`@gmail.com`是否在`email`变量中。请注意，第二个句点已转义，以便我们可以显式检查字符串`.com`。

```
regex_match(".*@gmail\.com", lowercase($email))
```

在第二个示例中，我们检查变量是否`phone_number`包含国家/地区代码，`+1`以确定电话号码是否来自美国。加号被转义以便我们可以显式检查字符串`+1`。

```
regex_match(".*\+1", $phone_number)
```

**正则表达式表**


| 运算符 | 亚马逊 Fraud Detector 示例 | 
| --- | --- | 
| 匹配任何以开头的字符串 | regex\$1match（“^mystring”，\$1variable） | 
| 精确匹配整个字符串 | regex\$1match（“mystring”，\$1variable） | 
| 匹配除换行之外的任何字符 | regex\$1match (” 。 “，\$1变量） | 
| 匹配任意数量的字符，但'mystring'之前的换行符除外 | regex\$1match (”。 \$1mystring”，\$1变量） | 
| 逃避特殊字符 | \$1 | 

## 正在检查缺失值
<a name="missing-variables"></a>

有时，检查该值是否缺失是有益的。在 Amazon Fraud Detector 中，它用空值表示。你可以使用以下语法来做到这一点：

```
$variable != null
```

同样，如果你想检查值是否不存在，你可以执行以下操作：

```
$variable == null
```

## 多种条件
<a name="multi-cond"></a>

您可以使用`and`和将多个表达式组合在一起`or`。当找到单个真值时，Amazon Fraud Detector 会停在`OR`表达式中，当找到单个假值`AND`时，它会停在表达式中。

在下面的示例中，我们使用条件检查两个`and`条件。在第一条语句中，我们正在检查变量 1 是否小于 100。在第二个中，我们检查变量 2 是否不是美国。

如果规则使用`and`，则两者都必须为 TRUE 才能使整个条件计算为 TRUE。

```
$variable_1 < 100 and $variable_2 != "US"
```

您可以使用圆括号对布尔运算进行分组，如下所示：

```
$variable_1 < 100 and $variable_2 != "US" or ($variable_1 * 100.0 > $variable_3)
```

## 其他表达式类型
<a name="expressions"></a>

### DateTime 函数
<a name="date-time"></a>


| 函数 | 说明 | 示例 | 
| --- | --- | --- | 
| 获取当前日期时间 () | 以 ISO8601 UTC 格式提供规则执行的当前时间。你可以使用 getepochmliseconds (getcurrentdatetime ()) 来执行其他操作  | getcurrentdatetime () == “2023-03-28T 18:34:02 Z” | 
| is before (DateTime1, DateTime 2) | 如果调用方 DateTime 1 在 2 之前，则返回布尔值（真/假） DateTime | isbefore（获取当前日期时间 ()，“2019-11-30T 01:01:01 Z”）== “False” isbefore（获取当前日期时间 ()，“2050-11-30T 01:05:01 Z”）== “True” | 
| isafter (DateTime1, DateTime 2) | 如果调用方 DateTime 1 在 2 之后，则返回布尔值（真/假） DateTime | isafter（获取当前日期时间 ()，“2019-11-30T 01:01:01 Z”）== “True” isafter（获取当前日期时间 ()，“2050-11-30T 01:05:01 Z”）== “False” | 
| getepochmliseconds () DateTime | 取一个， DateTime 并以纪元毫秒 DateTime 为单位返回。对于对日期进行数学运算很有用 | getepochmilliseconds（“2019-11-30T 01:01:01 Z”）== 1575032461 | 

### 字符串运算符
<a name="string-ops"></a>


| 运算符 | 示例 | 
| --- | --- | 
| 将字符串转换为大写 | 大写（\$1变量） | 
| 将字符串转换为小写 | 小写（\$1变量） | 

### 其他
<a name="other"></a>


| 运算符 | Comment | 
| --- | --- | 
|  添加评论  |  \$1 我的评论  | 

# 创建规则
<a name="create-a-rule"></a>

您可以在 Amazon Fraud Detector 控制台中[创建规则，使用 create-](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/frauddetector/create-rule.html) rule 命令，使用 [CreateRule](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateRule.html)API 或使用。 适用于 Python (Boto3) 的 AWS SDK

每条规则都必须包含一个用于捕获您的业务逻辑的表达式。所有表达式的计算结果都必须为布尔值（真或假），并且长度必须小于 4,000 个字符。不支持 if-else 类型条件。表达式中使用的所有变量都必须在已评估的事件类型中进行预定义。同样，表达式中使用的所有列表都必须经过预定义，与变量类型相关联并填充条目。

以下示例为现有检测器创建规则`high_risk``payments_detector`。该规则将表达式和结果`verify_customer`与规则相关联。

**先决条件**

要按照下面提到的步骤进行操作，请确保在继续创建规则之前完成以下操作：
+ [创建探测器](create-a-detector.md)
+ [创建结果](create-an-outcome.md)

如果您要为用例创建检测器、规则和结果，请将示例检测器名称、规则名称、规则表达式和结果名称替换为与您的用例相关的名称和表达式。

## 在 Amazon Fraud Detector 控制台中创建新规则
<a name="create-rule-console"></a>

1. 打开 [AWS 管理控制台](https://console.aws.amazon.com/)，登录您的账户。导航到亚马逊 Fraud Detector。

1. 在左侧导航窗格中，选择**探测器**，然后选择您为用例创建的探测器，例如 **payment** s\$1detector。

1. **在 **payments\$1detec** tor 页面中，选择**关联规则**选项卡，然后选择创建规则。**

1. **在新规则**页面中，输入以下内容：

   1. 在**名称**中，输入规则的名称，例如 **high\$1risk**

   1. 在 “**描述-可选**” 中，可以选择输入规则描述，例如，**This rule captures events with a high ML model score**

   1. 在**表达式**中，使用表达式**快速参考指南为您的用例输入规则表达式**。示例 `$sample_fraud_detection_model_insightscore >900`

   1. 在**结果**中，选择你为用例创建的结果，例如 **verif** y\$1customer。结果是欺诈预测的结果，如果在评估期间规则匹配，则返回结果。

1. 选择**保存规则**

您为探测器创建了一条新规则。这是该规则的第 1 版，Amazon Fraud Detector 会自动将其提供给探测器使用。

## 使用创建规则 适用于 Python (Boto3) 的 AWS SDK
<a name="create-a-rule-using-the-aws-python-sdk"></a>

以下示例代码使用 [CreateRule](https://docs.aws.amazon.com//frauddetector/latest/api/API_CreateRule.html)API `high_risk` 为现有检测器创建规则`payments_detector`。示例代码还为规则添加了规则表达式和结果`verify_customer`。

**先决条件**

要使用示例代码，请确保在继续创建规则之前完成以下操作：
+ [创建探测器](create-a-detector.md)
+ [创建结果](create-an-outcome.md)

如果您要为用例创建检测器、规则和结果，请将示例检测器名称、规则名称、规则表达式和结果名称替换为与您的用例相关的名称和表达式。

```
import boto3
fraudDetector = boto3.client('frauddetector')

fraudDetector.create_rule(
ruleId = 'high_risk',
detectorId = 'payments_detector',
expression = '$sample_fraud_detection_model_insightscore > 900',
language = 'DETECTORPL',
outcomes = ['verify_customer']
)
```

您已经创建了规则的版本 1，Amazon Fraud Detector 会自动将其提供给检测器使用。

# 更新规则
<a name="update-rule"></a>

您可以随时更新规则，方法是添加或更新规则描述、更新规则表达式或添加或删除规则的结果。更新规则时，会创建一个新的规则版本。

您可以使用[update-rule-version](https://awscli.amazonaws.com/v2/documentation/api/latest/reference/frauddetector/update-rule-version.html)命令、[UpdateRuleVersion](https://docs.aws.amazon.com//frauddetector/latest/api/API_UpdateRuleVersion.html)API 或使用软件开发工具包在 Amazon Fraud AWS Detector 控制台中更新规则。

更新规则后，请务必更新您的检测器版本以使用新的规则版本。

## 在 Amazon Fraud Detector 控制台中更新规则
<a name="update-rule-console"></a>

**要更新规则，**

1. 打开 [AWS 管理控制台](https://console.aws.amazon.com/)，登录您的账户。导航到亚马逊 Fraud Detector。

1. 在左侧导航窗格中，选择**探测器**。

1. 在 “检测**器**” 窗格中，选择与要更新的规则关联的检测器。

1. 在检测器页面中，选择 “**关联规则**” 选项卡，然后选择要更新的规则。

1. 在规则页面中，选择**操作**并选择**创建版本**。

1. 请注意，版本已更改。输入更新的描述、表达方式或结果。

1. 选择 “**保存新版本**”

## 使用更新规则 适用于 Python (Boto3) 的 AWS SDK
<a name="update-rule-sdk"></a>

以下示例代码使用 [UpdateRuleVersion](https://docs.aws.amazon.com//frauddetector/latest/api/API_UpdateRuleVersion.html)API 将规则的阈值`high_risk`从 900 更新为 950。此规则与探测器关联`payments_detector`。

```
fraudDetector.update_rule_version(
rule = {
    'detectorId' : 'payments_detector',
    'ruleId' : 'high_risk',
    'ruleVersion' : '1'
},
expression = '$sample_fraud_detection_model_insightscore > 950',
language = 'DETECTORPL',
outcomes = ['verify_customer']
)
```