

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

# 创建受众规则
<a name="appconfig-experimentation-about-specifying-audience-rule-section"></a>

受**众规则**部分包括**规则生成器**选项卡和**编辑器**选项卡，用于创建规则以定位实验受众。

**Topics**
+ [使用受众规则生成器](#appconfig-experimentation-about-specifying-audience-rule-builder)
+ [使用编辑器](#appconfig-experimentation-about-specifying-audience-editor)

## 使用受众规则生成器
<a name="appconfig-experimentation-about-specifying-audience-rule-builder"></a>

规则生成器提供了一个可视化界面，无需编写表达式即可定义受众定位规则。您可以使用属性创建条件并将它们与逻辑运算符组合在一起，以控制实验中包括哪些用户。在规则生成器中，您可以通过组合条件和组来定义规则：
+ 条件评估单个属性（例如，`$plan equals "enterprise"`）。
+ 组使用逻辑运算符（如 `AND` or）组合多个条件`OR`。

每个组的计算结果为`true`或`false`。符合总体规则的用户将包含在目标受众中。

当您想执行以下操作时，请使用规则生成器：
+ 无需编写表达式即可快速定义或修改受众规则
+ 可视化条件是如何分组和评估的
+ 逐步构建和验证定位逻辑

下面是一些示例：

**在高级账户等级中定位用户的规则。**

![使用指定示例受众规则 AWS AppConfig 进行实验的 “规则生成器” 选项卡的图像。](http://docs.aws.amazon.com/zh_cn/appconfig/latest/userguide/images/experimentation-rule-builder-1.png)


**使用特定电子邮件域在特定地理区域定位用户的规则。**

![规则生成器选项卡的第二张图片，该选项卡 AWS AppConfig 正在尝试指定受众规则示例。](http://docs.aws.amazon.com/zh_cn/appconfig/latest/userguide/images/experimentation-rule-builder-2.png)


**一种规则，用于在特定计划中定位特定用户，或者在选择加入测试计划时使用二级套餐的用户。**

![规则生成器选项卡的第三张图片，该选项卡 AWS AppConfig 正在实验中指定了受众群体规则示例。](http://docs.aws.amazon.com/zh_cn/appconfig/latest/userguide/images/experimentation-rule-builder-3.png)


**与编辑的关系 **

规则生成器和编辑器以不同的格式定义相同的定位逻辑：
+ 规则生成器提供了一种构造规则的可视化方式。
+ 编辑器显示等效的逻辑表达式。

在一个视图中所做的更改会反映在另一个视图中。

**最佳实践**
+ 保持规则的可读性 — 使用群组按逻辑组织条件，避免结构深度嵌套。
+ 验证属性值-确保属性名称和值与应用程序提供的名称和值相匹配。
+ 暴露前测试 — 使用 0% 的曝光率和治疗分配替代来确认您的规则是否符合预期。

## 使用编辑器
<a name="appconfig-experimentation-about-specifying-audience-editor"></a>

该编辑器允许您定义定位规则，以确定实验中包含哪些用户。您可以将这些规则指定为逻辑表达式，用于评估用户或设备属性，例如平台、区域或应用程序版本。实验运行时， AWS AppConfig 评估每个用户的表达式。符合标准的用户将包含在目标受众中，可以被分配接受治疗。

**表达式格式 **

表达式使用前缀（函数风格）语法：

```
(operator argument1 argument2 ...)
```

例如：

```
(and
    (eq $system "iPhone")
    (lt $osVersion 1.8)
)
```

此表达式包括以下用户：
+ 使用 iPhone，然后
+ 操作系统版本早于 1.8

编辑器支持与规则生成器相同的定位方案。有关受众规则的直观示例，请参阅[使用受众规则生成器](#appconfig-experimentation-about-specifying-audience-rule-builder)。

**定义属性 **

属性代表正在评估的用户或环境的属性。使用`$`前缀引用属性。

常见示例包括：
+ `$system`— 设备或平台类型
+ `$osVersion`— 操作系统版本
+ `$region`— 地理区域
+ `$appVersion`— 应用程序版本

可用属性取决于您的应用程序以及将数据传递到的方式 AWS AppConfig。

**写作表达式 **

您可以使用逻辑运算符组合多个条件：
+ 用于`and`要求所有条件都为真
+ `or`用于匹配任何条件
+ `not`用于排除条件

示例：

```
(and
    (eq $region "us-east-1")
    (or
        (eq $system "iPhone")
        (eq $system "Android")
    )
)
```

此表达式针对的是使用iPhone或安卓设备的用户。`us-east-1`

**最佳实践**
+ 从简单开始 — 从一小部分条件开始，然后根据需要进行扩展。
+ 验证属性-确保表达式中使用的属性始终填充。
+ 避免过于复杂的表达式 — 复杂的逻辑会使定位更难理解和维护。
+ 暴露前测试 — 使用 0% 的曝光率和治疗分配替代来确认您的规则是否符合预期。

**表达式运算符 **

受众表达式支持以下运算符。

逻辑运算符



| 运算符 | 描述 | 示例 | 
| --- | --- | --- | 
| and | 如果所有条件都为真，则返回 true | `(and (eq $region "us") (eq $system "iPhone"))` | 
| 或者 | 如果任何条件为真，则返回 true | `(or (eq $system "iPhone") (eq $system "Android"))` | 
| not | 如果条件为假，则返回 true | `(not (eq $region "eu-west-1"))` | 

比较运算符



| 运算符 | 描述 | 示例 | 
| --- | --- | --- | 
| eq | Equals | `(eq $system "iPhone")` | 
| ne | Not equal | `(ne $region "us-west-2")` | 
| lt | Less than | `(lt $osVersion 1.8)` | 
| lte | Less than or equal | `(lte $osVersion 2.0)` | 
| gt | Greater than | `(gt $appVersion 5.0)` | 
| gte | Greater than or equal | `(gte $appVersion 5.0)` | 

字符串和集合运算符



| 运算符 | 描述 | 示例 | 
| --- | --- | --- | 
| in | 匹配列表中的任何值 | `(in $region ["us-east-1" "us-west-2"])` | 
| contains | 检查一个值是否包含子字符串 | `(contains $deviceName "iPhone")` | 

**注意**  
可用运算符可能会有所不同，具体取决于应用程序中属性的定义和评估方式。