

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

# 步骤 4：创建发送电子邮件的 AWS IoT 规则
<a name="iot-moisture-create-rule"></a>

 AWS IoT 规则定义了从设备收到消息时要执行的查询和一项或多项操作。 AWS IoT 规则引擎监听设备发送的消息，并使用消息中的数据来确定是否应采取某些措施。有关更多信息，请参阅 [的规则 AWS IoT](iot-rules.md)。

在本教程中，您的 Raspberry Pi 在 `aws/things/RaspberryPi/shadow/update` 上发布消息。这是设备和 Thing Shadow 服务使用的内部 MQTT 主题。Raspberry Pi 发布具有以下形式的消息：

```
{
    "reported": {
        "moisture" : moisture-reading,
        "temp" : temperature-reading
    }
}
```

创建查询来从传入消息中提取含水量和温度数据。创建 Amazon SNS 操作来在含水量读数低于阈值时获取数据并将其发送给 Amazon SNS 主题订阅者。

**创建 Amazon SNS 规则**

1. 在 [AWS IoT 控制台](https://console.aws.amazon.com/iot/home)中，选择**消息路由**，然后选择**规则**。如果显示**您还没有任何规则**对话框，请选择**创建规则**。否则，请选择**创建规则**。

1. 在**规则属性**页面中，输入**规则名称**（例如 **MoistureSensorRule**），并提供简短的**规则描述**（例如 **Sends an alert when soil moisture level readings are too low**）。

1. 选择**下一步**并配置您的 SQL 语句。选择 **SQL 版本**为 **2016-03-23**，然后输入以下 AWS IoT SQL 查询语句：

   ```
   SELECT * FROM '$aws/things/RaspberryPi/shadow/update/accepted' WHERE state.reported.moisture < 400
   ```

   当 `moisture`读数小于 `400`时，该语句将触发规则操作。
**注意**  
您可能需要使用其它值。在 Raspberry Pi 上运行代码之后，您可以通过触摸传感器、将其放入水中或放入花盆中来查看从传感器获得的值。

1. 选择**下一步**并附加规则操作。对于**操作 1**，选择 **Simple Notification Service**。此规则操作的描述为**将消息作为 SNS 推送通知发送**。

1. 对于 **SNS 主题**，请选择您在[步骤 3：创建 Amazon SNS 主题和订阅](iot-moisture-create-sns-topic.md)、中创建的主题 **MoistureSensorTopic**，并将**消息格式**保留为 **RAW**。对于 **IAM 角色**，选择**创建新角色**。输入角色的名称（例如 **LowMoistureTopicRole**），然后选择**创建角色**。

1. 选择**下一步**进行查看，然后选择**创建**来创建规则。