

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

# 了解 Amazon Data Firehose 中的数据传输
<a name="basic-deliver"></a>

当你向 Firehose 直播发送数据时，数据会自动传送到你选择的目的地。下表说明了到不同目的地的传输数据。


| 目标位置 | Details | 
| --- | --- | 
| Amazon S3 | 对于到 Amazon S3 的数据传输，Firehose 根据 Firehose 流的缓冲配置连接多个传入记录。然后，将记录作为 Amazon S3 对象传输到 Amazon S3。默认情况下，Firehose 连接数据时不使用任何分隔符。如果您想在记录之间使用新行分隔符，则可以通过在 [Firehose 控制台配置](https://docs.aws.amazon.com/firehose/latest/dev/create-destination.html#create-destination-s3)或 [API 参数](https://docs.aws.amazon.com/firehose/latest/APIReference/API_Processor.html)中启用此功能来添加新行分隔符。Firehose 和 Amazon S3 目的地之间的数据传输使用 TLS（HTTPS）加密。 | 
| Amazon Redshift | 为向 Amazon Redshift 进行数据传输，Firehose 首先会将传入数据按上述格式传输到 S3 存储桶。然后，Firehose 会发出 Amazon Redshift **COPY** 命令，将数据从 S3 存储桶加载到 Amazon Redshift 预置集群或 Amazon Redshift Serverless 工作组。确保在 Amazon Data Firehose 将多个传入记录连接到 Amazon S3 对象后，可以将 Amazon S3 对象复制到您的 Amazon Redshift 预置集群或 Amazon Redshift Serverless 工作组。有关更多信息，请参阅 [Amazon Redshift COPY 命令数据格式参数](https://docs.aws.amazon.com/redshift/latest/dg/copy-parameters-data-format.html)。 | 
| OpenSearch 服务和 OpenSearch 无服务器 | 为了向 OpenSearch 服务和 OpenSearch 无服务器传输数据，Amazon Data Firehose 会根据您的 Firehose 流的缓冲配置来缓冲传入的记录。然后，它会生成一个 OpenSearch 服务或 OpenSearch无服务器批量请求，将多条记录索引到您的 OpenSearch 服务集群或 OpenSearch 无服务器集合。在将记录发送到 Amazon Data Firehose 之前，确保记录采用 UTF-8 编码并展平为单行 JSON 对象。此外，必须将 OpenSearch 服务集群的rest.action.multi.allow\_explicit\_index选项设置为 true（默认），才能使用为每条记录设置的显式索引来接受批量请求。有关更多信息，请参阅《Amazon OpenSearch 服务开发者指南》中的 OpenSearch 服务[配置高级选项](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/es-createupdatedomains.html#es-createdomain-configure-advanced-options)。 | 
| Splunk | 为向 Splunk 进行数据传输，Amazon Data Firehose 会连接您发送的字节。如果要在您的数据中使用分隔符（如换行符），您必须自行插入这些分隔符。确保将 Splunk 配置为解析任何此类分隔符。要将传输到 S3 错误存储桶（S3 备份）的数据重新驱动回 Splunk，请按照 [Splunk 文档](https://www.splunk.com/en_us/blog/tips-and-tricks/aws-technical-add-on-simplifying-error-data-re-ingestion.html)中提到的步骤进行操作。 | 
| HTTP 端点 | 在向受支持的第三方服务提供商拥有的 HTTP 端点进行数据传输时，您可以使用集成的 Amazon Lambda 服务创建一个函数，将传入记录转换为与服务提供商集成预期的格式匹配的格式。请联系您选择其 HTTP 端点作为目标的第三方服务提供商，了解有关他们接受的记录格式的更多信息。 | 
| Snowflake | 为了将数据传输到 Snowflake，Amazon Data Firehose 会在内部缓冲数据一秒钟，并使用 Snowflake 流式传输 API 操作将数据插入到 Snowflake。默认情况下，每秒都会刷新您插入的记录并将其提交到 Snowflake 表中。在您进行插入调用后，Firehose 会发出一个 CloudWatch 指标，用于衡量将数据提交到 Snowflake 所花费的时间。Firehose 目前仅支持将单个 JSON 项目作为记录有效负载，并且不支持 JSON 数组。请确保您的输入有效负载是有效的 JSON 对象，并且格式正确，没有任何额外的双引号、引号或转义字符。 | 

每个 Firehose 目的地都有自己的数据传输频率。有关更多信息，请参阅 [配置缓冲提示](create-configure-backup.md#buffering-hints)。

**重复记录**

Amazon Data Firehose 使用 at-least-once语义进行数据传输。在某些情况下（比如数据传输超时），如果原始数据传输请求最终通过，Amazon Data Firehose 的传输重试可能会导致重复。这适用于 Amazon Data Firehose 支持的所有目的地类型，但 Amazon S3 目的地、Apache Iceberg 表和 Snowflake 目的地除外。

**Topics**
+ [了解跨 AWS 账户和地区的配送情况](across.md)
+ [了解 HTTP 端点传输请求和响应规范](httpdeliveryrequestresponse.md)
+ [处理数据传输失败](retry.md)
+ [配置 Amazon S3 对象名称格式](s3-object-name.md)
+ [为 OpenSearch 服务配置索引轮换](es-index-rotation.md)
+ [暂停和恢复数据传输](pause-restart-stream.md)