

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

# HTTP
<a name="https-rule-action"></a>

HTTPS (`http`) 動作會將資料從 MQTT 訊息傳送至 HTTPS 端點，該端點可以指向 Web 應用程式或服務。

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

此規則動作具有下列需求：
+ 您必須先確認並啟用 HTTPS 端點，才可讓規則引擎使用它們。如需詳細資訊，請參閱[HTTP 動作目的地](http-action-destination.md)。

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

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

`url`  
使用 HTTP POST 方法傳送訊息的 HTTPS 端點。若您使用 IP 地址取代主機名稱，其必須為 IPv4 地址。不支援 IPv6 地址。  
支援[替代範本](iot-substitution-templates.md)：是

`confirmationUrl`  
（選用） 如果指定， AWS IoT 會使用確認 URL 來建立相符的主題規則目的地。您必須先啟用 HTTP 動作目的地，才能在 HTTP 動作中使用它。如需詳細資訊，請參閱[HTTP 動作目的地](http-action-destination.md)。如果您使用替代範本，您必須先手動建立 HTTP 動作目的地，才能使用 `http`動作。 `confirmationUrl`必須是 的字首`url`。  
`url` 與 `confirmationUrl` 之間的關係如下所述：  
+ 如果 `url` 為硬式編碼`confirmationUrl`且未提供，我們會隱含地將 `url` 欄位視為 `confirmationUrl`。 會 AWS IoT 建立 的主題規則目的地`url`。
+ 如果 `url`和 `confirmationUrl`為硬式編碼， `url`必須以 開頭`confirmationUrl`。 會 AWS IoT 建立 的主題規則目的地`confirmationUrl`。
+ 如果 `url` 包含替代範本，則您必須指定 `confirmationUrl` 且 `url` 必須以 `confirmationUrl` 開頭。如果 `confirmationUrl`包含替代範本，您必須先手動建立 HTTP 動作目的地，才能使用 `http`動作。如果 `confirmationUrl` 不包含替代範本， 會為 AWS IoT 建立主題規則目的地`confirmationUrl`。
支援[替代範本](iot-substitution-templates.md)：是

`headers`  
(選用) 要包含於端點之 HTTP 請求中的標頭清單。每個標頭必須包含下列資訊：    
`key`  
標頭的金鑰。  
支援[替代範本](iot-substitution-templates.md)：否  
`value`  
標頭的值。  
支援[替代範本](iot-substitution-templates.md)：是
當承載採用 JSON 格式時，預設內容類型為 application/json。否則，它是 application/octet-stream。您可以在標頭中使用重要的 content-type 指定確切的內容類型 (不區分大小寫) 來覆寫它。

`auth`  
(選用) 規則引擎用來連線至 `url` 引數中所指定端點 URL 的身分驗證。目前，Signature 第 4 版是唯一支援的身分驗證類型。如需詳細資訊，請參閱 [HTTP 授權](https://docs.aws.amazon.com/iot/latest/apireference/API_HttpAuthorization.html)。  
支援[替代範本](iot-substitution-templates.md)：否

`enableBatching`  
（選用） 是否將 HTTP 動作訊息處理為特定 URL 的單一請求。值可以是 true 或 false。如需批次處理的詳細資訊，請參閱[批次處理 HTTP 動作訊息](http_batching.md)。  
布林值  
支援[替代範本](iot-substitution-templates.md)：否

`batchConfig`  
（選用） 批次處理的組態設定。啟用後，必須指定`batchConfig`參數。如果未指定`batchConfig`參數，則會使用預設值。    
`maxBatchOpenMs`  
傳出訊息等待其他訊息建立批次的時間上限 （以毫秒為單位）。設定越高，批次 HTTP 動作的延遲就越長。  
最小值：5 毫秒。最大值：200 毫秒。  
預設值：20 ms  
支援[替代範本](iot-substitution-templates.md)：否  
`maxBatchSize`  
在單一動作執行中批次處理的訊息數量上限。  
支援[替代範本](iot-substitution-templates.md)：否  
最小值：2 則訊息。最大值：10 則訊息  
預設值：10 則訊息  
`maxBatchSizeBytes`  
訊息批次的大小上限，以位元組為單位。  
最小值：100 位元組。最大值：131，072 個位元組  
預設值：5，120 位元組  
支援[替代範本](iot-substitution-templates.md)：否
當承載採用 JSON 格式時，預設內容類型為 application/json。否則，它是 application/octet-stream。您可以在標頭中使用重要的 content-type 指定確切的內容類型 (不區分大小寫) 來覆寫它。

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

下列 JSON 範例使用 HTTP 動作定義 AWS IoT 規則。

```
{
    "topicRulePayload": {
        "sql": "SELECT * FROM 'some/topic'", 
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23", 
        "actions": [
            { 
                "http": { 
                    "url": "https://www.example.com/subpath",
                    "confirmationUrl": "https://www.example.com", 
                    "headers": [
                        { 
                            "key": "static_header_key", 
                            "value": "static_header_value" 
                        },
                        { 
                            "key": "substitutable_header_key", 
                            "value": "${value_from_payload}" 
                        }
                    ] 
                } 
            }
        ]
    }
}
```

```
"http": { 
    "url": "https://www.example.com/subpath",
    "confirmationUrl": "https://www.example.com", 
    "headers": [
        { 
            "key": "Content-Type",
            "value": "application/json"
          }
    ],
    "enableBatching": true, 
    "batchConfig": {     
      "maxBatchOpenMs": 123, 
      "maxBatchSize": 5, 
      "maxBatchSizeBytes": 131072,
     }
 },
 "errorAction": { 
        "http": { 
            "url": "https://www.example.com/subpath",
            "confirmationUrl": "https://www.example.com"
            // batchConfig is not allowed here
        }
}
```

## HTTP 動作重試邏輯
<a name="https-rule-action-retry-logic"></a>

 AWS IoT 規則引擎會根據這些規則重試 HTTP 動作：
+ 規則引擎會嘗試傳送訊息至少一次。
+ 規則引擎最多重試兩次。嘗試次數上限為三次。
+ 在下列情況下，規則引擎不會嘗試重試：
  + 上一次嘗試提供了大於 16,384 個位元組的回應。
  + 下游 Web 服務或應用程式在嘗試之後關閉 TCP 連線。
  + 完成請求的總時間超過請求逾時限制。
  + 請求傳回了 429、500-599 以外的 HTTP 狀態碼。

**注意**  
[標準資料傳輸成本](https://aws.amazon.com/ec2/pricing/on-demand/)適用於重試。

## 另請參閱
<a name="https-rule-action-see-also"></a>
+ [批次處理 HTTP 動作訊息](http_batching.md)
+ [HTTP 動作目的地](http-action-destination.md)
+ 部落格*上的物聯網 AWS*將[資料直接從 路由 AWS IoT Core 到您的 Web 服務](https://aws.amazon.com/blogs/iot/route-data-directly-from-iot-core-to-your-web-services/) 