

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

# 替换模板
<a name="iot-substitution-templates"></a>

您可以使用替换模板来增加触发规则并 AWS IoT 执行操作时返回的 JSON 数据。替换模板的语法是`${`*表达式`}`，其中*表达*式*可以是 SELECT 子句、WHERE 子句和 AWS IoT 中支持的任何表达式[AWS IoT 规则动作](iot-rule-actions.md)。此表达式可插入到规则的操作字段中，使您可以动态配置操作。在生效时，此特征替换操作中的一段信息。这包括函数、运算符和原始消息有效载荷中存在的信息。

**重要**  
因为替换模板中的表达式与“SELECT ...”语句分开评估，所以，您无法引用使用 AS 子句创建的别名。您只能引用原始有效载荷中存在的信息、[函数](iot-sql-functions.md)和[运算符](iot-sql-operators.md)。

有关支持的表达式的更多信息，请参阅[AWS IoT SQL 参考](iot-sql-reference.md)。

以下规则操作支持替换模板。每个操作都支持不同的可替换字段。
+ [Apache Kafka](apache-kafka-rule-action.md)
+ [CloudWatch 警报](cloudwatch-alarms-rule-action.md)
+ [CloudWatch 日志](cloudwatch-logs-rule-action.md)
+ [CloudWatch 指标](cloudwatch-metrics-rule-action.md)
+ [DynamoDB](dynamodb-rule-action.md)
+ [迪纳摩 DBv2](dynamodb-v2-rule-action.md)
+ [Elasticsearch](elasticsearch-rule-action.md)
+ [HTTP](https-rule-action.md)
+ [AWS IoT Events](iotevents-rule-action.md)
+ [AWS IoT SiteWise](iotsitewise-rule-action.md)
+ [Kinesis Data Streams](kinesis-rule-action.md)
+ [Firehose](kinesis-firehose-rule-action.md)
+ [Lambda](lambda-rule-action.md)
+ [位置](location-rule-action.md)
+ [OpenSearch](opensearch-rule-action.md)
+ [重新发布](republish-rule-action.md)
+ [S3](s3-rule-action.md)
+ [SNS](sns-rule-action.md)
+ [SQS](sqs-rule-action.md)
+ [Step Functions](stepfunctions-rule-action.md)
+ [Timestream](timestream-rule-action.md)

替换模板显示在规则内的操作参数中：

```
{
    "sql": "SELECT *, timestamp() AS timestamp FROM 'my/iot/topic'",
    "ruleDisabled": false,
    "actions": [{
        "republish": {
            "topic": "${topic()}/republish",
            "roleArn": "arn:aws:iam::123456789012:role/my-iot-role"
        }
    }]
}
```

如果该规则由发布到 `my/iot/topic` 的以下 JSON 触发：

```
{
    "deviceid": "iot123",
    "temp": 54.98,
    "humidity": 32.43,
    "coords": {
        "latitude": 47.615694,
        "longitude": -122.3359976
    }
}
```

然后，此规则将以下 JSON 发布到`my/iot/topic/republish`，其 AWS IoT 替换为：`${topic()}/republish`

```
{
    "deviceid": "iot123",
    "temp": 54.98,
    "humidity": 32.43,
    "coords": {
        "latitude": 47.615694,
        "longitude": -122.3359976
    },
    "timestamp": 1579637878451
}
```