了解 Amazon Data Firehose 中的数据传输 - Amazon Data Firehose
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

了解 Amazon Data Firehose 中的数据传输

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

目标 详细信息
Amazon S3

对于到 Amazon S3 的数据传输,Firehose 根据 Firehose 流的缓冲配置连接多个传入记录。然后,将记录作为 Amazon S3 对象传输到 Amazon S3。默认情况下,Firehose 连接数据时不使用任何分隔符。如果您想在记录之间使用新行分隔符,则可以通过在 Firehose 控制台配置API 参数中启用此功能来添加新行分隔符。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 命令数据格式参数

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 服务配置高级选项
Splunk

为向 Splunk 进行数据传输,Amazon Data Firehose 会连接您发送的字节。如果要在您的数据中使用分隔符(如换行符),您必须自行插入这些分隔符。确保将 Splunk 配置为解析任何此类分隔符。要将传输到 S3 错误存储桶(S3 备份)的数据重新驱动回 Splunk,请按照 Splunk 文档中提到的步骤进行操作。

HTTP 端点 在向受支持的第三方服务提供商拥有的 HTTP 端点进行数据传输时,您可以使用集成的 Amazon Lambda 服务创建一个函数,将传入记录转换为与服务提供商集成预期的格式匹配的格式。请联系您选择其 HTTP 端点作为目标的第三方服务提供商,了解有关他们接受的记录格式的更多信息。
Snowflake

为了将数据传输到 Snowflake,Amazon Data Firehose 会在内部缓冲数据一秒钟,并使用 Snowflake 流式传输 API 操作将数据插入到 Snowflake。默认情况下,每秒都会刷新您插入的记录并将其提交到 Snowflake 表中。在您进行插入调用后,Firehose 会发出一个 CloudWatch 指标,用于衡量将数据提交到 Snowflake 所花费的时间。Firehose 目前仅支持将单个 JSON 项目作为记录有效负载,并且不支持 JSON 数组。请确保您的输入有效负载是有效的 JSON 对象,并且格式正确,没有任何额外的双引号、引号或转义字符。

每个 Firehose 目的地都有自己的数据传输频率。有关更多信息,请参阅 配置缓冲提示

重复记录

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