

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

# 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)。

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

使用此操作创建 Amazon IoT 规则时，必须指定以下信息：

`url`  
使用 HTTP POST 方法发送消息的 HTTPS 端点。如果使用 IP 地址代替主机名，则必须是 IPv4 地址。 IPv6 不支持地址。  
支持[替换模板](iot-substitution-templates.md)：是

`confirmationUrl`  
（可选）如果指定，则 Amazon IoT 使用确认 URL 创建匹配的主题规则目标。在 HTTP 操作中使用 HTTP 操作目标之前，必须将其启用。有关更多信息，请参阅 [HTTP 操作目的地](http-action-destination.md)。如果您使用替换模板，则必须先手动创建 HTTP 操作目标，然后才能使用该`http`操作。 `confirmationUrl`前缀必须为`url`。  
`url` 和 `confirmationUrl` 之间的关系由以下内容描述：  
+ 如果`url`是硬编码且`confirmationUrl`未提供，则我们会隐式地将该`url`字段视为. `confirmationUrl` Amazon IoT 为创建主题规则目标`url`。
+ 如果`url`和`confirmationUrl`是硬编码，则`url`必须以开头。`confirmationUrl` Amazon IoT 为创建主题规则目标`confirmationUrl`。
+ 如果 `url` 包含替换模板，则必须指定 `confirmationUrl` 并且 `url` 必须以 `confirmationUrl` 开头。如果`confirmationUrl`包含替换模板，则必须先手动创建 HTTP 操作目标，然后才能使用该`http`操作。如果`confirmationUrl`不包含替换模板，则为 Amazon IoT 创建主题规则目标`confirmationUrl`。
支持[替换模板](iot-substitution-templates.md)：是

`headers`  
（可选）要包含在对端点的 HTTP 请求中的标头列表。每个标头都必须包含以下信息：    
`key`  
标头的键。  
支持[替换模板](iot-substitution-templates.md)：否  
`value`  
标头的值。  
支持[替换模板](iot-substitution-templates.md)：是
当有效负载为 JSON 格式 application/json 时，默认内容类型为。否则，它是 application/octet-stream。您可以在标头中，使用键内容类型（不区分大小写）指定确切的内容类型来覆盖它。

`auth`  
（可选）规则引擎在连接到 `url` 参数中指定的端点 URL 时使用的身份验证。目前，Signature Version 4 是唯一支持的身份验证类型。有关更多信息，请参阅 [HTTP 授权](https://docs.amazonaws.cn/iot/latest/apireference/API_HttpAuthorization.html)。  
支持[替换模板](iot-substitution-templates.md)：否

`enableBatching`  
（可选）是否将 HTTP 操作消息处理成对给定网址的单个请求。值可以是真或假。有关批处理的更多信息，请参阅[批处理 HTTP 操作消息](http_batching.md)。  
布尔值  
支持[替换模板](iot-substitution-templates.md)：否

`batchConfig`  
（可选）批处理的配置设置。启用后，必须指定`batchConfig`参数。如果未指定`batchConfig`参数，则将使用默认值。    
`maxBatchOpenMs`  
传出消息等待其他消息创建批次的最长时间（以毫秒为单位）。设置越高，批处理 HTTP 操作的延迟时间就越长。  
最小值：5 毫秒。最大值：200 毫秒。  
默认值：20 毫秒  
支持[替换模板](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。您可以在标头中，使用键内容类型（不区分大小写）指定确切的内容类型来覆盖它。

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

以下 JSON 示例定义了一 Amazon IoT 条带有 HTTP 操作的规则。

```
{
    "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>

 Amazon IoT 规则引擎将根据以下规则重试 HTTP 操作：
+ 规则引擎尝试至少发送一次消息。
+ 规则引擎最多重试两次。最大尝试次数为三次。
+ 在下列情况中，规则引擎不会尝试重试：
  + 之前的尝试提供了大于 16384 字节的响应。
  + 下游 Web 服务或应用程序在尝试之后关闭了 TCP 连接。
  + 完成包括重试在内的请求总用时超过了请求超时限制。
  + 该请求返回除 429、500-599 之外的 HTTP 状态代码。

**注意**  
[标准数据传输费用](https://www.amazonaws.cn/ec2/pricing/on-demand/)适用于重试操作。

## 另请参阅
<a name="https-rule-action-see-also"></a>
+ [批处理 HTTP 操作消息](http_batching.md)
+ [HTTP 操作目的地](http-action-destination.md)
+ 通过 Amazon博客*上的物联网将数据直接路由 Amazon IoT Core 到您的* [Web 服务](https://www.amazonaws.cn/blogs/iot/route-data-directly-from-iot-core-to-your-web-services/)