Republish - AWS IoT Core

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Republish

重新發佈 (republish) 動作將 MQTT 訊息重新發佈至另一個 MQTT 主題。

要求

此規則動作具有下列需求:

  • AWS IoT 可假設執行iot:Publish作業的 IAM 角色。如需詳細資訊,請參閱 授與 AWS IoT 規則所需的存取權

    在 AWS IoT 主控台中,您可以選擇或建立允許 AWS IoT 執行此規則動作的角色。

參數

使用此動作建立 AWS IoT 規則時,必須指定下列資訊:

headers

MQTT 5.0 版標頭資訊。

如需詳細資訊,請參閱 AWS API 參考MqttHeaders中的RepublishAction和。

topic

要將訊息重新發佈至該 MQTT 主題。

如要重新發佈至以 $ 開頭的預留主題,請改用 $$。例如,如要重新發佈至裝置影子主題 $aws/things/MyThing/shadow/update,請將主題指定為 $$aws/things/MyThing/shadow/update

注意

重新發佈至預留任務主題不受支援。

AWS IoT Device Defender 保留主題不支援 HTTP 發佈。

支援替代範本:是

qos

(選用) 重新發佈訊息時要使用的服務品質 (QoS) 層級。有效值:01。預設值為 0。如需 MQTT QoS 的詳細資訊,請參閱 MQTT

支援替代範本:否

roleArn

允許發佈 AWS IoT 至 MQTT 主題的 IAM 角色。如需詳細資訊,請參閱 要求

支援替代範本:否

範例

下列 JSON 範例會定義 AWS 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 範例會在 AWS 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 範例定義 AWS 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" } ] } } } ] } }
注意

原始來源 IP 不會透過重新發布動作傳遞。