一般性问题
问:什么是 Amazon Data Firehose?
Amazon Data Firehose 是将流数据加载到各种数据存储和分析工具中的一种最轻松的方式。它可以捕获、转换流数据并将其加载到 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 和 Splunk 中,让您可以借助现今正在使用的现有业务情报工具和控制面板进行近乎实时的分析。 它是一项完全托管式服务,可以自动扩展以匹配数据吞吐量,并且无需持续管理。它还可以在加载数据前对其进行批处理、压缩和加密,从而最大程度地减少目标使用的存储量,同时提高安全性。
问:Amazon Data Firehose 可代我管理哪些内容?
Amazon Data Firehose 能够管理将您的数据捕获并加载到 Amazon S3、Amazon Redshift 或 Amazon OpenSearch Service 所需的所有底层基础设施、存储、联网和配置。您不必操心预置、部署、持续维护硬件、软件,或编写任意其他应用程序来管理这一流程。而且,Firehose 还能灵活扩展,无需任何人工干预,不产生相关的开发人员开销。此外,Amazon Data Firehose 还可在一个亚马逊云科技区域的三个设施之间同步复制数据,在将数据传输到目标的同时,提供高可用性和持久性。
问:如何使用 Amazon Data Firehose?
注册亚马逊云科技后,您可以按照以下步骤开始使用 Amazon Data Firehose:
- 通过 Firehose 控制台或 CreateDeliveryStream 操作创建 Amazon Data Firehose 流。您可以选择在 Firehose 流中配置 Amazon Lambda 函数,以便在加载原始数据之前准备和转换这些数据。
- 使用 Amazon Kinesis Agent 或 Firehose API 配置数据创建器,以持续地向 Firehose 流发送数据。
- Firehose 会自动和持续地将数据加载到您指定的目标。
问:什么是源?
源是指您的流数据连续生成和捕获的位置。例如,源可以是 Amazon EC2 实例上运行的日志服务器、移动设备上运行的应用程序、IoT 设备上的传感器或 Kinesis 流。
问:Amazon Data Firehose 有哪些限制?
有关限制的信息,请参阅开发人员指南中的 Amazon Data Firehose 限制。
重要概念
问:什么是 Firehose 流?
Firehose 流是 Amazon Data Firehose 的基础实体。您通过创建 Firehose 流然后向其发送数据的方式来使用 Firehose。
问:什么是记录?
记录是您的数据创建器发送到 Firehose 流的重要数据。记录的最大大小(进行 Base64 编码前)为 1024KB。
问:什么是目标?
目标是数据将传输到的数据存储。Amazon Data Firehose 目前支持将 Amazon S3、Amazon Redshift 和 Amazon OpenSearch Service 作为目标。
创建 Firehose 流
问:如何创建 Firehose 流?
您可以通过 Firehose 控制台或 CreateDeliveryStream 操作创建 Amazon Data Firehose 流。有关更多信息,请参阅创建 Firehose 流。
问:可以使用什么压缩格式?
使用 Amazon Data Firehose,您可以在向 Amazon S3 传输数据前压缩数据。该服务目前支持 GZIP、ZIP 和 SNAPPY 压缩格式。 如果数据进一步加载到 Amazon Redshift 中,将仅支持 GZIP。
问:当使用 CloudWatch Logs 订阅功能时,如何执行压缩?
您可以使用 CloudWatch Logs 订阅功能将数据从 CloudWatch Logs 流式传输到 Firehose。CloudWatch Logs 的所有日志事件已经采用 gzip 格式进行压缩,因此您应确保 Firehose 的压缩配置为未压缩,以避免重复压缩。
问:我可以使用哪种加密?
使用 Amazon Data Firehose,您可以在数据传输到 Amazon S3 存储桶后对其进行加密。在创建 Firehose 流时,您可以选择使用自己的 Amazon Key Management Service (KMS) 密钥加密数据。有关 KMS 的更多信息,请参阅 Amazon Key Management Service。
问:什么是使用 Lambda 进行数据转换?
Firehose 可以调用一个 Amazon Lambda 函数,从而在将传入的数据传输到目标之前对其进行转换。您可以使用我们提供的 Lambda 蓝图之一配置新的 Lambda 函数,也可以选择现有 Lambda 函数。
问:什么是源记录备份?
如果您使用 Lambda 进行数据转换,则可以启用源记录备份,Amazon Data Firehose 会将未转换的传入数据传输至单独的 S3 存储桶。您可以指定要添加到 Firehose 生成的“YYYY/MM/DD/HH”UTC 时间前缀之前的其他前缀。
问:什么是错误日志记录?
如果您使用 Lambda 进行数据转换,Firehose 可以将任何 Lambda 调用和数据传输错误记录到 Amazon CloudWatch Logs,以便您在 Lambda 调用失败或数据传输失败时查看特定的错误日志。有关更多信息,请参阅使用 Amazon CloudWatch Logs 进行监控。
问:什么是缓冲区大小和缓冲间隔?
在将传入流数据传输至目标之前,Amazon Data Firehose 会缓冲特定大小的传入流数据,或缓冲特定的时长。您可以在创建 Firehose 流时配置缓冲区大小和缓冲间隔。缓冲区大小以 MB 为单位,对于 Amazon S3 目标,缓冲区大小介于 1MB 到 128MB 之间,对于Amazon OpenSearch Service 目标,缓冲区大小介于 1MB 到 100MB 之间。缓冲间隔以秒为单位,范围为 60 秒到 900 秒。请注意,如果数据传输至目标的时间晚于数据写入 Firehose 流的时间,Firehose 将动态提高缓冲区大小,以赶上进度并确保将所有数据都传输至目标。
问:如果选择压缩数据,那么会如何应用缓冲区大小?
缓冲区大小在压缩前应用。因此,如果您选择压缩数据,Amazon S3 存储桶中的对象大小可能小于您指定的缓冲区大小。
问:创建 Firehose 流时,需要指定什么 IAM 角色?
Amazon Data Firehose 承担您指定的 IAM 角色,以访问 Amazon S3 存储桶和 Amazon OpenSearch Service 域等资源。有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的使用 Amazon Data Firehose 控制访问。
问:我在创建 Firehose 流时需要指定的 Amazon Redshift 用户需要什么权限?
Amazon Redshift 用户需要具有 Redshift INSERT 权限,以将数据从 Amazon S3 存储桶复制到 Redshift 集群。
问:如果我的 Amazon Redshift 集群在 VPC 内,需要执行什么操作?
如果您的 Amazon Redshift 集群在 VPC 内,您需要通过从 VPC 中取消阻止 Firehose IP 地址来授予 Amazon Data Firehose 对 Redshift 集群的访问权。有关如何取消阻止至 VPC 的 IP 的信息,请参阅《Amazon Data Firehose 开发人员指南》中的“授予 Firehose 对 Amazon Redshift 目标的访问权”。
问:选择 Amazon Redshift 作为目标时,我为什么需要提供 Amazon S3 存储桶?
对于 Amazon Redshift 目标,Amazon Data Firehose 先将数据传输到 Amazon S3 存储桶,然后再发出 Redshift COPY 命令以将数据从 S3 存储桶加载到 Redshift 集群。
问:Amazon OpenSearch Service 目标的索引轮换是什么?
Amazon Data Firehose 可以基于一个时间段轮换 Amazon OpenSearch Service 索引。您可以在创建 Firehose 流时配置此时间段。有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的针对 Amazon OpenSearch Service 目标的索引轮换。
问:选择 Amazon OpenSearch Service 作为目标时,为什么要提供 Amazon S3 存储桶?
将数据加载到 Amazon OpenSearch Service 时,Amazon Data Firehose 可以备份所有数据,或者仅备份传输失败的数据。要利用该功能并防止丢失任何数据,您需要提供一个备份 Amazon S3 存储桶。
问:创建 Firehose 流后,可以更改其配置吗?
您可以随时更改已创建的 Firehose 流的配置。为此,您可以使用 Firehose 控制台或 UpdateDestination 操作。更新配置时,Firehose 流仍保持 ACTIVE 状态,您可以继续向 Firehose 流发送数据。更新后的配置通常在数分钟内生效。
在向 VPC 目标传输的过程中,您可以更改目标终端节点 URL,但前提是可以在相同的 VPC、子网和安全组中访问新目标。如果您想更改 VPC、子网和安全组,需要重新创建 Firehose 流。
问:我能否使用某个账户中的 Firehose 流将数据传输到另一账户中的 Amazon OpenSearch Service 域 VPC 目标?
不能,您的 Firehose 流和目标 Amazon OpenSearch Service 域需要在同一账户中。
问:我能否使用某个区域的 Firehose 流将数据传输到另一区域的 Amazon OpenSearch Service 域 VPC 目标?
不能,您的 Firehose 流和目标 Amazon OpenSearch Service 域需要在同一区域中。
准备和转换数据
问:如何在 Amazon Data Firehose 中准备和转换原始数据?
使用 Amazon Data Firehose,您可以在将 Firehose 流中的传入原始数据加载到目标之前,使用 Amazon Lambda 函数准备和转换这些数据。您可以在创建新的 Firehose 流或编辑现有 Firehose 流时配置一个 Amazon Lambda 函数,用于数据转换。
问:如何将准备好并且已经转换的数据从 Amazon Lambda 函数返回到 Amazon Data Firehose?
Lambda 中的所有转换记录在返回到 Firehose 时必须具备以下三个参数,否则,Firehose 将拒绝接收记录并将其视为数据转换失败。
- recordId:在调用期间,Firehose 将 recordId 和每条记录一起发送到 Lambda。每条转换记录在返回时应具有完全相同的 recordId。原始 recordId 和返回的 recordId 之间存在任何不匹配都将被视为数据转换失败。
- result:每条记录的转换结果的状态。这一参数可以使用以下值:如果记录按预期转换成功,那么值为“Ok”。如果处理逻辑按预期有意丢弃记录,那么值为“Dropped”。如果未能按照预期转换记录,那么值为“ProcessingFailed”。在生成 SucceedProcessing.Records 和 SucceedProcessing.Bytes 指标时,Firehose 将返回的状态为“Ok”和“Dropped”的记录视为已处理成功的记录,将状态为“ProcessingFailed”的记录视为处理失败的记录。
- data:base64 编码之后的转换后数据负载。
问:哪些 Lambda 蓝图可以用于数据准备和转换?
Firehose 提供了以下 Lambda 蓝图,您可以使用它们来创建用于数据转换的 Lambda 函数:
- General Firehose Processing:这一蓝图包含上述数据转换和状态模型。将这一蓝图用于任何自定义转换逻辑中。
- Apache Log to JSON:这一蓝图可以解析 Apache 日志行并将其转换为带有预定义 JSON 字段名称的 JSON 对象。
- Apache Log to CSV:这一蓝图可以解析 Apache 日志行并将其转换为 CSV 格式。
- Syslog to JSON:这一蓝图可以解析 Syslog 行并将其转换为带有预定义 JSON 字段名称的 JSON 对象。
- Syslog to CSV:这一蓝图可以解析 Syslog 行并将其转换为 CSV 格式。
问:能否在 S3 存储桶中保留所有原始数据的副本?
能。Firehose 可以在将转换后的记录传输到目标的同时,将所有未转换的记录备份到您的 S3 存储桶。您可以在创建或更新 Firehose 流时启用源记录备份。
向 Firehose 流添加数据
问:如何向我的 Amazon Data Firehose 流添加数据?
您可以通过 Amazon Kinesis Agent 或 Firehose 的 PutRecord 和 PutRecordBatch 操作向 Amazon Data Firehose 流添加数据。Firehose 还集成了 Amazon Kinesis Data Streams、Amazon IoT、Amazon CloudWatch Logs 和 Amazon CloudWatch Events 等其他亚马逊云科技数据源。
问:什么是 Amazon Kinesis 代理?
Amazon Kinesis Agent 是一款预构建的 Java 应用程序,它提供了一种简便的方法来收集数据并将数据发送至 Firehose 流。您可以在基于 Linux 服务器的环境(如 Web 服务器、日志服务器和数据库服务器)上安装代理。该代理会监控某些文件,并持续向 Firehose 流发送数据。有关更多信息,请参阅使用代理写入数据。
问:Amazon Kinesis 代理支持哪些平台?
Amazon Kinesis 代理当前支持 Amazon Linux 和 Red Hat Enterprise Linux。
问:在哪里获取 Amazon Kinesis 代理?
您可以使用以下命令和链接来下载和安装 Amazon Kinesis 代理:
- 在 Amazon Linux 上:sudo yum install –y aws-kinesis-agent
- 在 Red Hat Enterprise Linux 上:sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm
- 在 GitHub 上:awlabs/amazon-kinesis-agent
问:如何使用 Amazon Kinesis 代理?
在服务器上安装 Amazon Kinesis 代理之后,您可以对其进行配置以监控磁盘上的某些文件,并持续将新数据发送到 Firehose 流。有关更多信息,请参阅使用代理写入数据。
问:PutRecord 和 PutRecordBatch 操作之间有何区别?
PutRecord 操作可以在一次 API 调用中添加一条数据记录,而 PutRecordBatch 操作则可以在一次 API 调用中添加多条数据记录。有关更多信息,请参阅 PutRecord 和 PutRecordBatch。
问:我可以使用哪些编程语言或平台访问 Amazon Data Firehose API?
亚马逊云科技软件开发工具包中包含 Amazon Data Firehose API。要获取亚马逊云科技软件开发工具包的编程语言或平台列表,请参阅适用于亚马逊云科技的工具。
问:如何将 Kinesis 流中的数据添加到 Firehose 流?
通过亚马逊云科技控制台或 Firehose API 创建或更新 Firehose 流时,您可以将 Kinesis 流配置为 Firehose 流的源。配置完成后,Firehose 将会自动读取 Kinesis 流中的数据,并将这些数据加载到指定目标。
问:Firehose 多久从 Kinesis 流读取一次数据?
对于每个 Kinesis 分区,Firehose 每秒调用一次 Kinesis Data Streams GetRecords()。
问:当 Kinesis 流被配置为 Firehose 流的源时,Firehose 从哪里读取数据?
当 Kinesis 数据流被配置为 Firehose 流的源时,Firehose 会从该数据流的“最新”位置开始读取数据。有关 Kinesis 数据流位置的更多信息,请参阅 Kinesis Data Streams Service API 参考中的 GetShardIterator。
问:我能否将 Kinesis 数据流配置为多个 Firehose 流的源?
是的,可以。但请注意,Firehose 发起的 GetRecords() 调用是根据 Kinesis 分片的总体节流限制计算的,因此您需要针对 Firehose 流以及其他 Kinesis 应用程序进行规划,从而确保不会受到限制。有关更多信息,请参阅《Kinesis Data Streams 开发人员指南》中的 Kinesis Data Streams 限制。
问:当我的 Kinesis 数据流被配置为源时,我是否还能通过 Kinesis 代理或 Firehose 的 PutRecord and PutRecordBatch 操作向 Firehose 流添加数据?
不能,您无法这样做。当 Kinesis 数据流被配置为 Firehose 流的源时,Firehose 的 PutRecord 和 PutRecordBatch 操作将被禁用。您应改为通过 Kinesis Data Streams 的 PutRecord 和 PutRecords 操作向 Kinesis 数据流添加数据。
问:如何从 Amazon IoT 向 Firehose 流添加数据?
您只需创建一个能够向 Firehose 流发送事件的 Amazon IoT 操作,即可从 Amazon IoT 向 Firehose 流添加数据。有关更多信息,请参阅《Firehose 开发人员指南》中的使用 Amazon IoT 写入 Amazon Data Firehose。
问:如何从 CloudWatch Logs 向 Firehose 流添加数据?
您只需创建一个能够向 Firehose 流发送事件的 CloudWatch Logs 订阅筛选条件,即可从 CloudWatch Logs 向 Firehose 流添加数据。有关更多信息,请参阅《Amazon CloudWatch 用户指南》中的使用 CloudWatch Logs 订阅筛选条件。
问:如何从 CloudWatch Events 向 Amazon Data Firehose 流添加数据?
您只需创建一个将 Firehose 流作为目标的 CloudWatch Events 规则,即可从 CloudWatch Events 向 Firehose 流添加数据。有关更多信息,请参阅《Firehose 开发人员指南》中的使用 CloudWatch Events 写入 Amazon Data Firehose。
数据传输
问:Amazon Data Firehose 多久向 Amazon S3 存储桶传输一次数据?
向 Amazon S3 传输数据的频率取决于您为 Firehose 流配置的 S3 缓冲区大小和缓冲间隔值。在将传入数据传输给 Amazon S3 之前,Amazon Data Firehose 会对其进行缓冲。您可以配置 S3 缓冲区大小(1MB 到 128MB)或缓冲间隔(60 到 900 秒)的值,首先满足的条件会触发向 Amazon S3 传输数据。请注意,如果数据传输至目标的时间晚于数据摄入 Firehose 流的时间,Amazon Data Firehose 将自动提高缓冲区大小,以赶上进度并确保将所有数据都传输至目标。
问:Amazon Data Firehose 多久向 Amazon Redshift 集群传输一次数据?
对于 Amazon Redshift 目标,Amazon Data Firehose 先将数据传输到 Amazon S3 存储桶,然后再发出 Redshift COPY 命令以将数据从 S3 存储桶加载到 Redshift 集群。从 Amazon S3 到 Amazon Redshift 的数据 COPY 操作的频率由 Redshift 集群完成 COPY 命令的速度决定。如果仍有数据要复制,Firehose 将在 Redshift 集群成功完成上一个 COPY 命令后立即发出新的 COPY 命令。
问:Amazon Data Firehose 多久向 Amazon OpenSearch Service 域传输一次数据?
向 Amazon OpenSearch Service 传输数据的频率取决于您为 Firehose 流配置的 OpenSearch 缓冲区大小和缓冲间隔值。在将传入数据传输给 Amazon OpenSearch Service 之前,Firehose 会对其进行缓冲。您可以配置 OpenSearch 缓冲区大小(1MB 到 100MB)或缓冲间隔(60 到 900 秒)的值,首先满足的条件会触发向 Amazon OpenSearch Service 传输数据。请注意,如果数据传输至目标的时间晚于数据摄入 Firehose 流的时间,Amazon Data Firehose 将自动提高缓冲区大小,以赶上进度并确保将所有数据都传输至目标。
问:Amazon S3 存储桶中的数据是如何组织的?
在将对象放入 Amazon S3 之前,Amazon Data Firehose 会在 YYYY/MM/DD/HH 格式中添加 UTC 时间前缀。该前缀会转换成 Amazon S3 文件夹结构,其中每个由正斜杠 (/) 分隔的标签都将成为子文件夹。您可以通过添加您自己的顶级文件夹和正斜杠(例如,myApp/YYYY/MM/DD/HH)或在 YYYY 顶级文件夹名称前面添加文本(例如,myApp YYYY/MM/DD/HH)来修改该文件夹结构。这是通过在创建 Firehose 流时指定 S3 前缀来实现的。
问:Amazon Data Firehose 传输的 Amazon S3 对象的命名模式是什么?
Amazon S3 对象名称遵循 FirehoseStreamName-FirehoseStreamVersion-YYYY-MM-DD-HH-MM-SS-RandomString 模式,其中 FirehoseStreamVersion 从 1 开始,并且在 Firehose 流每次发生配置变更时增加 1。您可以使用 Firehose 控制台或 UpdateDestination 操作更改 Firehose 流配置,例如 S3 存储桶的名称、缓冲提示、压缩和加密。
问:Amazon S3 存储桶中的清单文件夹是什么?
对于 Amazon Redshift 目标,Amazon Data Firehose 会生成清单文件,以将 Amazon S3 对象批量加载到 Redshift 集群中。清单文件夹存储 Firehose 生成的清单文件。
问:Amazon S3 存储桶中的备份 OpenSearch 文档是什么样的?
如果使用的是“所有文档”模式,Amazon Data Firehose 将根据 Firehose 流的缓冲配置连接多条传入记录,然后将这些记录作为 S3 对象传输到 S3 存储桶。不论配置的是何种备份模式,失败的文档都将采用某种 JSON 格式传输到 S3 存储桶,这种 JSON 格式提供了错误代码和传输尝试时间等额外信息。有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的 Amazon OpenSearch Service 目标的 Amazon S3 备份。
问:单个 Firehose 流能否将数据传输到多个 Amazon S3 存储桶?
目前,单个 Firehose 流只能将数据传输到一个 Amazon S3 存储桶。如果您希望将数据传输到多个 S3 存储桶,则可创建多个 Firehose 流。
问:单个 Firehose 流能否将数据传输到多个 Amazon Redshift 集群或表中?
目前,单个 Firehose 流只能将数据传输到一个 Amazon Redshift 集群和一个表。如果您希望将数据传输到多个 Redshift 集群或表,则可创建多个 Firehose 流。
问:单个 Firehose 流能否将数据传输到多个 Amazon OpenSearch Service 域或索引?
目前,单个 Firehose 流只能将数据传输到一个 Amazon OpenSearch Service 域和一个索引。如果您希望将数据传输到多个 Amazon OpenSearch 域或索引,则可创建多个 Firehose 流。
问:Amazon Data Firehose 如何将数据传输到 VPC 中的 Amazon OpenSearch Service 域?
如果您启用 Firehose 以将数据传输到 VPC 中的 Amazon OpenSearch Service 目标,Amazon Data Firehose 将为您选择的每个子网在 VPC 中创建一个或多个跨账户弹性网络接口 (ENI)。Amazon Data Firehose 使用这些 ENI 将数据传输到您的 VPC。ENI 的数量会自动扩展/缩减以满足服务要求。
对 Firehose 流进行故障排除和管理
问:为什么我在向 Amazon Data Firehose 流发送数据时会受到限制?
默认情况下,每个 Firehose 流每秒最多可以接收 2000 个事务、5000 条记录和 5MB 数据。您可以通过提交提高服务限制表来轻松地提高此限制。
问:为什么我会在 Amazon S3 存储桶、Amazon Redshift 表、Amazon OpenSearch 索引或 Splunk 集群中看到重复的记录?
Amazon Data Firehose 在传输数据时会至少使用一次语义。在少数情况(例如,在尝试传输数据时请求超时)下,如果前一个请求最终通过,Firehose 尝试再次传输便会造成重复。
问:如果向 Amazon S3 存储桶传输数据失败,会发生什么情况?
如果向 Amazon S3 存储桶传输数据失败,Amazon Data Firehose 最长可在 24 小时内每 5 秒重新传输一次数据。如果该问题在超过 24 小时的最长保留期仍然存在,Amazon Kinesis Data Firehose 将丢弃这些数据。
问:如果向 Amazon Redshift 集群传输数据失败,会发生什么情况?
如果向 Amazon Redshift 集群传输数据失败,Amazon Data Firehose 最长可在 60 分钟内每 5 分钟重新传输一次数据。60 分钟之后,Amazon Data Firehose 将跳过当前这批准备好 COPY 的 S3 对象并传输下一批对象。已跳过的对象的信息已作为错误文件夹中的清单文件传输到 S3 存储桶中,您可以将其用于手动回填。有关如何使用清单文件手动复制数据的信息,请参阅使用清单指定数据文件。
问:如果向 Amazon OpenSearch Service 域传输数据失败,会发生什么情况?
对于 Amazon OpenSearch Service 目标,您可以在创建 Firehose 流时指定 0 到 7200 秒之间的重试时间范围。如果向 Amazon OpenSearch Service 域传输数据失败,Amazon Data Firehose 将在指定的时间范围内重新传输数据。在重试期之后,Amazon Data Firehose 将跳过当前这批数据并传输下一批数据。跳过的文档的详细信息将被传输到 S3 存储桶的 OpenSearch_failed 文件夹中,您可以使用该文件夹进行手动回填。
问:如果数据转换失败,会发生什么情况?
当 Firehose 尝试调用 Lambda 函数进行数据转换时,可能会出现以下两种类型的失败场景:
- 第一种类型是函数调用因网络超时和达到 Lambda 调用限制而失败。在这些失败情况下,Firehose 默认将会重试调用三次,然后跳过该特定记录批次。跳过的记录将被视为未成功处理的记录。您可以使用 CreateDeliveryStream 和 UpdateDeliveryStream API 来配置 0 到 300 之间的调用重试次数。对于此类失败,您还可以使用 Firehose 的错误日志记录功能将调用错误发送到 CloudWatch Logs。有关更多信息,请参阅使用 Amazon CloudWatch Logs 进行监控。
- 当 Lambda 函数返回的记录转换结果被设置为“ProcessingFailed”时,将发生第二种类型的失败场景。Firehose 将这些记录视为未成功处理的记录。对于此类失败,您可以使用 Lambda 的日志记录功能将错误日志发送到 CloudWatch Logs。有关更多信息,请参阅访问 Amazon Lambda 的 Amazon CloudWatch Logs。
对于这两种失败场景,未成功处理的记录都将被传输到 S3 存储桶的 processing_failed 文件夹中。
问:为什么传输的 S3 对象的大小大于我在 Firehose 流配置中指定的缓冲区大小?
如果在缓冲间隔条件之前满足缓冲区大小条件,则在大多数情况下交付的 S3 对象的大小应反映指定的缓冲区大小。但是,如果数据传输至目标的时间晚于数据写入 Firehose 流的时间,Firehose 将动态提高缓冲区大小,以赶上进度并确保将所有数据都传输至目标。在这些情况下,传输的 S3 对象的大小可能会大于指定的缓冲大小。
问:Amazon S3 存储桶中的错误文件夹是什么?
错误文件夹中存储了清单文件,其中包含加载到 Amazon Redshift 集群失败的 S3 对象的信息。您可以通过 Redshift COPY 命令重新手动加载这些对象。有关如何使用清单文件手动复制数据的信息,请参阅使用清单指定数据文件。
问:Amazon S3 存储桶中的 OpenSearch_failed 文件夹是什么?
OpenSearch_failed 文件夹存储着未能加载到 Amazon OpenSearch Service 域的文档。您可以手动重新索引这些文档以进行回填。
问:Amazon S3 存储桶中的 processing_failed 文件夹是什么?
processing_failed 文件夹存储着通过 Amazon Lambda 函数转换失败的记录。您可以手动重新处理这些记录。
问:如何监控我的 Amazon Data Firehose 流的运行情况和性能?
Firehose 控制台会显示关键运行和性能指标,如传入数据量和已传输数据量。Amazon Data Firehose 还集成了 Amazon CloudWatch Metrics,以便您能够收集、查看和分析 Firehose 流的指标。有关 Amazon Data Firehose 指标的更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的使用 Amazon CloudWatch Metrics 进行监控。
问:如何监控 Amazon Data Firehose 流的数据转换和传输失败情况?
Amazon Data Firehose 与 Amazon CloudWatch Logs 集成,以便您可以在数据转换或传输失败时查看特定错误日志。您可以在创建 Firehose 流时启用错误日志记录。有关更多信息,请参阅《Amazon Data Firehose 开发人员指南》中的使用 Amazon CloudWatch Logs 进行监控。
问:如何管理和控制对 Amazon Data Firehose 流的访问权限?
Amazon Data Firehose 集成了 Amazon Identity and Access Management (IAM),这项服务让您能够安全地控制用户对亚马逊云科技服务和资源的访问权限。例如,您可以创建一个策略,仅允许特定用户或组向 Firehose 流添加数据。有关流的访问权限管理和控制的更多信息,请参阅使用 Amazon Data Firehose 控制访问权限。
问:如何记录用于安全分析和运行故障排除而对 Amazon Data Firehose 流进行的 API 调用?
Amazon Data Firehose 集成了 Amazon CloudTrail,这项服务用于记录账户的 Amazon API 调用,并向您提供日志文件。有关 API 调用日志记录和支持的 Amazon Data Firehose API 操作列表的更多信息,请参阅使用 Amazon CloudTrail 记录 Amazon Data Firehose API 调用。
定价和账单
问:使用 Amazon Data Firehose 如何收费?
Amazon Data Firehose 采用简单的按需付费定价模式。既无前期成本也没有最低费用,您只需为使用的资源付费。Amazon Data Firehose 的定价基于 Firehose 摄取的数据量 (GB),每条记录向上取整到最接近的 5KB。如果是传输到 VPC 中的目标,您还需要根据 Firehose 流在每个“可用区”保持预置状态的时间按小时付费,以及为处理到目标的每 GB 数据付费。有关 Amazon Data Firehose 费用的更多信息,请参阅 Amazon Data Firehose 定价。
问:当我使用 PutRecordBatch 操作向 Amazon Data Firehose 发送数据时,如何向上取整计算 5KB?
向上取整计算 5KB 发生在记录级别而非 API 操作级别。例如,如果您的 PutRecordBatch 调用包含两条 1KB 的记录,那么该调用的数据量将被计为 10KB。(每条记录 5KB)
问:Amazon Data Firehose 的费用是否包含 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 和 Amazon Lambda 的费用?
不包含,您需要单独支付使用 Amazon S3、Amazon Redshift、Amazon OpenSearch Service 和 Amazon Lambda 产生的相关费用,包括存储和请求费用。有关更多信息,请参阅 Amazon S3 定价、Amazon OpenSearch Service 定价和 Amazon Lambda 定价。