本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Republish
重新发布 (republish
) 操作可将 MQTT 消息重新发布到其它 MQTT 主题。
要求
此规则操作具有以下要求:
-
Amazon IoT 可以承担以执行
iot:Publish
操作的 IAM 角色。有关更多信息,请参阅向 Amazon IoT 规则授予所需的访问权限:在 Amazon IoT 控制台中,您可以选择或创建一个角色以允许 Amazon IoT 执行此规则操作。
参数
使用此操作创建 Amazon IoT 规则时,您必须指定以下信息:
headers
-
MQTT 版本 5.0 标头信息。
有关更多信息,请参阅《Amazon API 参考》中的 RepublishAction 和 MqttHeaders。
topic
-
消息重新发布到的 MQTT 主题。
若要重新发布到以
$
开头的预留主题,请使用$$
代替。例如,如果要重新发布到设备影子主题$aws/things/MyThing/shadow/update
,请将主题指定为$$aws/things/MyThing/shadow/update
。注意
不支持重新发布到保留的任务主题。
Amazon IoT Device Defender 保留主题不支持 HTTP 发布。
支持替换模板:是
qos
-
(可选)重新发布消息时要使用的服务质量 (QoS) 级别。有效值:
0
、1
。默认值为0
。有关 MQTT QoS 的更多信息,请参阅 MQTT。支持替换模板:否
roleArn
-
允许 Amazon IoT 发布至 MQTT 主题的 IAM 角色。有关更多信息,请参阅要求:
支持替换模板:否
示例
下面的 JSON 示例定义了 Amazon IoT 规则中的重新发布操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "another/topic", "qos": 1, "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish" } } ] } }
以下 JSON 示例定义了 Amazon IoT 规则中带有替代模板的重新发布操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish" } } ] } }
以下 JSON 示例在 Amazon IoT 规则中使用 headers
定义了重新发布操作。
{ "topicRulePayload": { "sql": "SELECT * FROM 'some/topic'", "ruleDisabled": false, "awsIotSqlVersion": "2016-03-23", "actions": [ { "republish": { "topic": "${topic()}/republish", "roleArn": "arn:aws:iam::123456789012:role/aws_iot_republish", "headers": { "payloadFormatIndicator": "UTF8_DATA", "contentType": "rule/contentType", "correlationData": "cnVsZSBjb3JyZWxhdGlvbiBkYXRh", "userProperties": [ { "key": "ruleKey1", "value": "ruleValue1" }, { "key": "ruleKey2", "value": "ruleValue2" } ] } } } ] } }