

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

# Firehose


Firehose (`firehose`) 操作可将 MQTT 消息中的数据发送至 Amazon Data Firehose 流。

## 要求


此规则操作具有以下要求：
+  Amazon IoT 可以代入执行`firehose:PutRecord`操作的 IAM 角色。有关更多信息，请参阅 [授予 Amazon IoT 规则所需的访问权限](iot-create-role.md)。

  在 Amazon IoT 控制台中，您可以选择或创建 Amazon IoT 允许执行此规则操作的角色。
+ 如果您使用 Firehose 将数据发送到亚马逊 S3 存储桶，并且您使用托管 Amazon KMS Amazon KMS key 客户加密亚马逊 S3 中的静态数据，则 Firehose 必须有权访问您的存储桶，并有权 Amazon KMS key 代表调用者使用这些存储桶。有关更多信息，请参阅《Amazon Data Firehose 开发人员指南》**中的 [Grant Firehose access to an Amazon S3 destination](https://docs.amazonaws.cn/firehose/latest/dev/controlling-access.html#using-iam-s3)。

## 参数


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

`batchMode`  
（可选）通过使用 [https://docs.amazonaws.cn/firehose/latest/APIReference/API_PutRecordBatch.html](https://docs.amazonaws.cn/firehose/latest/APIReference/API_PutRecordBatch.html) 批量交付 Firehose 流。默认值为 `false`。  
当 `batchMode` 为 `true` 且规则的 SQL 语句求值为一个数组时，每个数组元素在 `PutRecordBatch` 请求中形成一条记录。生成的数组，其记录不得超过 500 条。  
支持[替换模板](iot-substitution-templates.md)：否

`deliveryStreamName`  
消息数据写入的 Firehose 流。  
仅支持[替换模板](iot-substitution-templates.md)：API 且 Amazon CLI 仅支持

`separator`  
（可选）将用于分隔写入 Firehose 流的记录的分隔符。如果省略此参数，则流不使用分隔符。有效值：`,`（逗号），`\t`（选项卡），`\n`（换行符），`\r\n`（窗口换行符）。  
支持[替换模板](iot-substitution-templates.md)：否

`roleArn`  
授予对 Firehose 流的访问权限的 IAM 角色。有关更多信息，请参阅 [要求](#kinesis-firehose-rule-action-requirements)。  
支持[替换模板](iot-substitution-templates.md)：否

## 示例


以下 JSON 示例在规则中定义了 Fireh Amazon IoT ose 操作。

```
{
    "topicRulePayload": {
        "sql": "SELECT * FROM 'some/topic'", 
        "ruleDisabled": false, 
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "firehose": {
                    "deliveryStreamName": "my_firehose_stream",
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_firehose"
                }
            }
        ] 
    }
}
```

以下 JSON 示例使用规则中的替换模板定义了 Firehose Amazon IoT 操作。

```
{
    "topicRulePayload": {
        "sql": "SELECT * FROM 'some/topic'",
        "ruleDisabled": false,
        "awsIotSqlVersion": "2016-03-23",
        "actions": [
            {
                "firehose": {
                    "deliveryStreamName": "${topic()}",
                    "roleArn": "arn:aws:iam::123456789012:role/aws_iot_firehose"
                }
            }
        ]
    }
}
```

## 另请参阅

+ *《Amazon Data Firehose 开发人员指南》*中的 [What is Amazon Data Firehose?](https://docs.amazonaws.cn/firehose/latest/dev/)