

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

# 重新發佈
<a name="republish-rule-action"></a>

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

## 要求
<a name="republish-rule-action-requirements"></a>

此規則動作具有下列需求：
+  AWS IoT 可以擔任以執行`iot:Publish`操作的 IAM 角色。如需詳細資訊，請參閱[授予 AWS IoT 規則所需的存取權](iot-create-role.md)。

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

## Parameters
<a name="republish-rule-action-parameters"></a>

當您使用此動作建立 AWS IoT 規則時，您必須指定下列資訊：

`headers`  
MQTT 5.0 版標頭資訊。  
如需詳細資訊，請參閱《AWS API 參考》** 中的 [RepublishAction](https://docs.aws.amazon.com//iot/latest/apireference/API_RepublishAction.html) 和 [MqttHeaders](https://docs.aws.amazon.com//iot/latest/apireference/API_MqttHeaders.html)。

`topic`  
要將訊息重新發佈至該 MQTT 主題。  
如要重新發佈至以 `$` 開頭的預留主題，請改用 `$$`。例如，如要重新發佈至裝置影子主題 `$aws/things/MyThing/shadow/update`，請將主題指定為 `$$aws/things/MyThing/shadow/update`。  
重新發佈至[預留任務主題](reserved-topics.md#reserved-topics-job)不受支援。  
AWS IoT Device Defender 預留主題不支援 HTTP 發佈。
支援[替代範本](iot-substitution-templates.md)：是

`qos`  
(選用) 重新發佈訊息時要使用的服務品質 (QoS) 層級。有效值：`0`、`1`。預設值為 `0`。如需 MQTT QoS 的詳細資訊，請參閱 [MQTT](mqtt.md)。  
支援[替代範本](iot-substitution-templates.md)：否

`roleArn`  
允許 AWS IoT 發佈至 MQTT 主題的 IAM 角色。如需詳細資訊，請參閱[要求](#republish-rule-action-requirements)。  
支援[替代範本](iot-substitution-templates.md)：否

## 範例
<a name="republish-rule-action-examples"></a>

下列 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 不會透過[重新發布動作](#republish-rule-action)傳遞。