开始免费使用 AWS

创建免费账户

获得 12 个月的 AWS 免费使用套餐,同时享受 AWS 的基本支持功能,包括全年全天候无休客户服务、支持论坛及更多。AWS 免费套餐中目前不提供 Amazon Kinesis Firehose。


问:什么是 Amazon Kinesis Firehose?

Amazon Kinesis Firehose 是将流数据加载到 AWS 最简单的方式。它可以捕捉、转换流数据并将其加载到 Amazon S3Amazon RedshiftAmazon Elasticsearch Service,让您可以利用正在使用的现有商业智能工具和仪表板进行近乎实时的分析。这是一项完全托管的服务,可以自动扩展以匹配数据吞吐量,并且无需持续管理。它还可以在加载数据前对其进行批处理、压缩和加密,从而最大程度地减少目的地使用的存储量,同时提高安全性。

 

问:Amazon Kinesis Firehose 可代我管理哪些内容?

Amazon Kinesis Firehose 能够管理将您的数据捕获并加载到 Amazon S3Amazon Redshift 或 Amazon Elasticsearch Service 所需的所有底层基础设施、存储、联网和配置。您不必操心调配、部署、持续维护硬件、软件,或编写任意其他应用来管理这一流程。而且,Firehose 还能灵活扩展,无需任何人工干预,不产生相关的开发人员开销。此外,Amazon Kinesis Firehose 能够跨 AWS 地区中的三个机构同步复制数据,在将数据传输到目标的同时,提供高可用性和可靠性。

问:如何使用 Amazon Kinesis Firehose?

注册 Amazon Web Services 后,您可以按照以下步骤开始使用 Amazon Kinesis Firehose:

  • 通过 Firehose 控制台CreateDeliveryStream 操作创建 Amazon Kinesis Firehose 交付流。您可以选择性地在交付流中配置 AWS Lambda 函数,以便在加载数据之前准备和转换原始数据。
  • 使用 Amazon Kinesis AgentFirehose API 配置数据生产者,以持续地向交付流发送数据。
  • Firehose 会自动和持续地将数据加载到您指定的目标。

问:什么是源?

源是指您的流数据连续生成和捕获的位置。例如,源可以是 Amazon EC2 实例上运行的日志服务器、IoT 设备上运行的应用程序或 Kinesis 流。 

问:Amazon Kinesis Firehose 有哪些限制?

Amazon Kinesis Firehose 交付流的吞吐量可无限扩展。然而,您在使用 Firehose 时需要注意某些限制。

  • 发送到 Firehose 的记录的最大大小(进行 base64 编码前)为 1000KB。
  • CreateDeliveryStream()DeleteDeliveryStream()DescribeDeliveryStream()ListDeliveryStreams()UpdateDestination() API 操作每秒可提供高达 5 笔事务。
  • 每个交付流存储数据记录长达 24 小时,以防交付目标不可用。
  • PutRecordBatch() 操作每次调用可处理 500 条记录或 4MB,以较小者为准。
  • 缓冲区大小为 1MB 到 128MB。大小阈值在压缩前应用到缓冲区。
  • 缓冲区时间间隔为 60 秒到 900 秒。

默认情况下,每个账户在每个 AWS 区域可拥有多达 20 个交付流。每个交付流可消化多达 2000 笔事务/秒、5000 条记录/秒和 5MB/秒。您只需提交服务限值提升表即可方便地提高这两个限值。

 

 

 

问:什么是交付流?

交付流是 Amazon Kinesis Firehose 的基础实体。您通过创建交付流然后向其发送数据的方式来使用 Firehose。

问:什么是记录?

记录是您的数据生产者发送到交付流的重要数据。记录的最大大小(进行 Base64 编码前)为 1000KB。

问:什么是目标?

目标是数据将交付到的数据存储。Amazon Kinesis Firehose 目前支持将 Amazon S3、Amazon Redshift 和 Amazon Elasticsearch Service 作为目标。

 

 

 

问:如何创建交付流?

您可以通过 Firehose 控制台CreateDeliveryStream 操作创建 Amazon Kinesis Firehose 交付流。有关更多信息,请参阅创建交付流

问:可以使用什么压缩格式?

Amazon Kinesis Firehose 允许您在向 Amazon S3 交付数据前压缩数据。该服务目前支持 GZIP、ZIP 和 SNAPPY 压缩格式。如果将数据进一步加载到 Amazon Redshift,则仅支持 GZIP 格式。

问:当使用 CloudWatch Logs 订阅功能时,如何执行压缩?

您可以使用 CloudWatch Logs 订阅功能将数据从 CloudWatch Logs 流式传输到 Kinesis Firehose。CloudWatch Logs 的所有日志事件已经采用 gzip 格式进行压缩,因此您应确保 Firehose 的压缩配置为未压缩,以避免重复压缩。有关 CloudWatch Logs 订阅功能的更多信息,请参阅 Amazon CloudWatch Logs 用户指南中的 Amazon Kinesis Firehose 订阅筛选器

问:可以使用哪种类型的加密?

Amazon Kinesis Firehose 允许您在将数据交付到 Amazon S3 存储桶后加密数据。在创建交付流时,您可以选择使用您拥有的 AWS Key Management Service (KMS) 密钥加密数据。有关 KMS 的更多信息,请参阅 AWS Key Management Service

问:什么是使用 Lambda 进行数据转换?

Firehose 可以调用一个 AWS Lambda 函数,从而在将传入的数据传输到目标之前对其进行转换。您可以使用我们提供的 Lambda 蓝图配置一个新的 Lambda 函数,也可以选择一个现有的 Lambda 函数。

问:什么是源记录备份?

如果您使用 Lambda 进行数据转换,则可以启用源记录备份,Amazon Kinesis Firehose 会将未转换的传入数据传输到单独的 S3 存储桶。您可以指定要添加到 Firehose 生成的“YYYY/MM/DD/HH”UTC 时间前缀之前的其他前缀。

问:什么是错误日志记录?

如果您使用 Lambda 进行数据转换,Firehose 可以将任何 Lambda 调用和数据传输错误记录到 Amazon CloudWatch Logs,以便您在 Lambda 调用失败或数据传输失败时查看特定的错误日志。有关更多信息,请参阅使用 Amazon CloudWatch Logs 进行监控

问:什么是缓冲区大小和缓冲区时间间隔?

在将数据交付到目标之前,Amazon Kinesis Firehose 会缓冲特定大小的传入流数据,或缓冲特定的时长。您可以在创建交付流时配置缓冲区大小和缓冲区时间间隔。缓冲区大小以 MB 为单位,Amazon S3 目标的缓冲区范围为 1MB 到 128MB,Amazon Elasticsearch Service 目标的缓冲区范围为 1MB 到 100MB。缓冲区时间间隔以秒为单位,范围为 60 秒到 900 秒。请注意,有时数据交付至目标的时间会晚于数据写入交付流的时间,在这种情况下,Firehose 会动态增加缓冲区大小以赶上进度,并确保将所有数据交付至目标。

问:如果我选择压缩数据的话,缓冲区大小怎样计算?

缓冲区大小在压缩前应用。因此,如果您选择压缩数据,Amazon S3 存储桶中的对象大小可能小于您指定的缓冲区大小。

问:在创建交付流时需要指定的 IAM 角色是什么?

Amazon Kinesis Firehose 承担您指定的 IAM 角色,以访问 Amazon S3 存储桶和 Amazon Elasticsearch 域等资源。有关更多信息,请参阅《Amazon Kinesis Firehose Developer Guide》中的 Controlling Access with Amazon Kinesis Firehose

问:在创建交付流时需要指定的 Amazon Redshift 用户需要具备哪些权限?

该 Amazon Redshift 用户需要具备 Redshift INSERT 权限,以便将数据从您的 Amazon S3 存储桶复制到您的 Redshift 群集。

问:如果我的 Amazon Redshift 群集位于 VPC 中,我需要做些什么?

如果您的 Amazon Redshift 群集位于 VPC 中,则您需要在该 VPC 中取消阻止 Firehose IP 地址,以授予 Amazon Kinesis Firehose 访问您 Redshift 群集的权限。目前,Firehose 针对每个可用的 AWS 区域使用一个 CIDR 块:美国东部(弗吉尼亚北部)为 52.70.63.192/27;美国西部(俄勒冈)为 52.89.255.224/27;欧洲(爱尔兰)为 52.19.239.192/27。有关如何取消阻止 VPC 中的 IP 的信息,请参阅《Amazon Kinesis Firehose Developer Guide》中的 Grant Firehose Access to an Amazon Redshift Destination

问:选择 Amazon Redshift 作为目标时,为什么要提供 Amazon S3 存储桶?

对于 Amazon Redshift 目标,Amazon Kinesis Firehose 先将数据交付到您的 Amazon S3 存储桶,然后发出 Redshift COPY 命令将数据从您的 S3 存储桶加载到您的 Redshift 群集。

问:Amazon Elasticsearch Service 目标的索引轮换是什么?

Amazon Kinesis Firehose 可以基于一个时间段轮换 Amazon Elasticsearch Service 索引。您可以在创建交付流时配置此时间段。有关更多信息,请参阅《Amazon Kinesis Firehose Developer Guide》中的 Index Rotation for the Amazon ES Destination

问:选择 Amazon Elasticsearch Service 作为目标时,为什么要提供 Amazon S3 存储桶?

将数据加载到 Amazon Elasticsearch Service 时,Amazon Kinesis Firehose 会备份所有的数据,或者只备份交付失败的数据。要利用该功能并防止丢失任何数据,您需要提供一个备份 Amazon S3 存储桶。

问:创建交付流后,可以更改其配置吗?
您可以随时更改已创建的交付流的配置。为此,您可以使用 Firehose 控制台UpdateDestination 操作。更新配置时,交付流仍保持 ACTIVE 状态,您可以继续向交付流发送数据。更新后的配置通常在数分钟内生效。

问:如何在 Amazon Kinesis Firehose 中准备和转换原始数据?

借助 Amazon Kinesis Firehose,您可以在将传输流中的传入原始数据加载到目标之前,使用 AWS Lambda 函数准备和转换这些原始数据。您可以在创建新的传输流或编辑现有传输流时配置一个 AWS Lambda 函数,用于数据转换。

问:如何将准备好并且已经转换的数据从 AWS Lambda 函数返回到 Amazon Kinesis 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 存储桶。您可以在创建或更新传输流时启用源记录备份。

问:如何添加数据到 Amazon Kinesis Firehose 交付流?

您可以通过 Amazon Kinesis Agent 或 Firehose 的 PutRecordPutRecordBatch 操作向 Amazon Kinesis Firehose 交付流添加数据。Kinesis Firehose 还集成了其他 AWS 数据源,例如,Kinesis Streams、AWS IoT、Amazon CloudWatch Logs 和 Amazon CloudWatch Events。

问:什么是 Amazon Kinesis Agent?

Amazon Kinesis Agent 是一款预构建的 Java 应用程序,可提供简单的方法来收集数据并将其发送到交付流。您可以在基于 Linux 的服务器环境(如 Web 服务器、日志服务器和数据库服务器)上安装此代理。代理监控特定文件并持续发送数据到交付流。有关更多信息,请参阅使用代理执行写入操作

问:Amazon Kinesis Agent 支持哪些平台?

目前,Amazon Kinesis Agent 支持 Amazon Linux 和 Red Hat Enterprise Linux。

问:在哪里能够获得 Amazon Kinesis Agent?

您可以使用下面的命令及链接下载和安装 Amazon Kinesis Agent:

在 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 Agent?

在服务器上安装 Amazon Kinesis Agent 后,您可以将其配置为监视磁盘上的特定文件,然后持续地将新数据发送到交付流。有关更多信息,请参阅使用代理执行写入操作

问:PutRecord PutRecordBatch 之间的区别为何?

PutRecord 操作允许 API 调用内的单个数据记录,而 PutRecordBatch 操作允许 API 调用内的多个数据记录。有关更多信息,请参阅 PutRecordPutRecordBatch

问:我可以使用什么编程语言或平台访问 Amazon Kinesis Firehose API?

Amazon Kinesis Firehose API 在 Amazon Web Services SDK 中可用。有关 Amazon Web Services SDK 的编程语言或平台的列表,请参阅用于 Amazon Web Services 的工具

问:如何从 Kinesis 流向 Firehose 交付流添加数据?

当通过 AWS 控制台或 Firehose API 创建或更新交付流时,您可以配置一个 Kinesis 流作为交付流的源。配置完毕后,Firehose 将自动从 Kinesis 流中读取数据,并将数据加载到指定目的地。

问:Kinesis Firehose 从 Kinesis 流中读取数据的频率如何?

Kinesis Firehose 每隔一秒就会在每个 Kinesis 分区中调用一次 Kinesis Streams GetRecords()。

问:将 Kinesis 流配置为交付流的源时,Kinesis Firehose 从哪里读取数据?

将 Kinesis 流配置为交付流的源时,Kinesis Firehose 将从 Kinesis 流的 LATEST 位置读取数据。有关 Kinesis 流位置的更多信息,请参阅“Kinesis Streams Service API 参考”中的 GetShardIterator

问:可以将 Kinesis 流配置为多个 Firehose 交付流的源吗?

可以。但请注意,来自 Kinesis Firehose 的 GerRecords() 调用是根据 Kinesis 分区的总节流限制计数的,因此您需要连同其它 Kinesis 应用程序一起来规划交付流,以防其受到限制。有关更多信息,请参阅 Kinesis Streams 开发人员指南中的 Kinesis Streams 限制

问:将 Kinesis 流配置为源后,我还能继续通过 Kinesis 代理或 Firehose 的 PutRecord 和 PutRecordBatch 操作将数据添加至交付流吗?

不可以。将 Kinesis 流配置为 Firehose 交付流的源后,Firehose 的 PutRecord 和 PutRecordBatch 操作将被禁用。您应通过 Kinesis Streams 的 PutRecord 和 PutRecords 操作添加数据至 Kinesis 流。

问:如何从 AWS IoT 添加数据到交付流?

您可以通过创建将事件发送至交付流的 AWS IoT 操作,来将数据添加到交付流。有关更多信息,请参阅 Kinesis Firehose 开发人员指南中的使用 AWS IoT 写入 Amazon Kinesis Firehose

问:如何从 CloudWatch Logs 添加数据到交付流?

您可以通过创建将事件发送至交付流的 CloudWatch Logs 订阅筛选条件,来将数据添加到 Firehose 交付流。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的使用 CloudWatch Logs 订阅筛选器

问:如何从 CloudWatch Events 添加数据到 Amazon Kinesis Firehose 交付流?

您可以通过创建将交付流作为目标的 CloudWatch Events 规则,从 CloudWatch Events 添加数据到 Firehose 交付流。有关更多信息,请参阅 Kinesis Firehose 开发人员指南中的使用 CloudWatch Events 写入 Amazon Kinesis Firehose

 

问:Amazon Kinesis Firehose 多久向 Amazon S3 存储桶交付一次数据?

向 Amazon S3 交付数据的频率取决于您为交付流配置的 S3 缓冲区大小和缓冲间隔值。Amazon Kinesis Firehose 会缓冲传入的数据,然后再将其交付到 Amazon S3。您可以配置 S3 缓冲区大小(1MB 到 128MB)或缓冲间隔值(60 到 900 秒),如果满足条件,则会触发向 Amazon S3 交付数据。请注意,有时数据交付至目标的时间会晚于数据写入交付流的时间,在这种情况下,Amazon Kinesis Firehose 会自动增加缓冲区大小以赶上进度,并确保将所有数据交付至目标。

问:Amazon Kinesis Firehose 多久向 Amazon Redshift 群集交付一次数据?

对于 Amazon Redshift 目标,Amazon Kinesis Firehose 先将数据交付到您的 Amazon S3 存储桶,然后发出 Redshift COPY 命令将数据从您的 S3 存储桶加载到您的 Redshift 群集。从 Amazon S3 到 Amazon Redshift 的数据 COPY 操作的频率取决于 Redshift 群集完成 COPY 命令需要多久。如果仍有需要复制的数据,Firehose 会在 Redshift 群集成功完成上一个 COPY 命令后立即发出新的 COPY 命令。

问:Amazon Kinesis Firehose 多久向 Amazon Elasticsearch 域交付一次数据?

向 Amazon Elasticsearch Service 交付数据的频率取决于您为交付流配置的 Elasticsearch 缓冲区大小和缓冲间隔值。Firehose 会缓冲传入的数据,然后再将其交付到 Amazon Elasticsearch Service。您可以配置 Elasticsearch 缓冲区大小(1MB 到 100MB)或缓冲间隔值(60 到 900 秒),如果满足条件,则会首先触发向 Amazon Elasticsearch Service 交付数据。请注意,有时数据交付至目标的时间会晚于数据写入交付流的时间,在这种情况下,Amazon Kinesis Firehose 会自动增加缓冲区大小以赶上进度,并确保将所有数据交付至目标。

问:数据在 Amazon S3 存储桶中是如何组织的?

在将对象放入 Amazon S3 之前,Amazon Kinesis Firehose 会为其添加一个 UTC 时间前缀,格式为 YYYY/MM/DD/HH。该前缀会转换成一个 Amazon S3 文件夹结构,其中,由正斜杠 (/) 分隔的每个标签都变成一个子文件夹。您可以通过以下方式修改该文件夹结构:使用正斜杠添加您自己的顶层文件夹(如 myApp/YYYY/MM/DD/HH),或在顶层文件夹名称 YYYY 前追加文本(如 myApp YYYY/MM/DD/HH)。要进行该操作,请在创建交付流时指定 S3 前缀。

问:Amazon Kinesis Firehose 交付的 Amazon S3 对象的命名模式是什么?

Amazon S3 对象名称采用以下模式:DeliveryStreamName-DeliveryStreamVersion-YYYY-MM-DD-HH-MM-SS-RandomString,其中,DeliveryStreamVersion 从 1 开始,并在交付流每次发生配置更改时增加 1。您可以使用 Firehose 控制台UpdateDestination 操作更改交付流配置(例如:S3 存储桶的名称、缓冲提示、压缩、加密等)。

问:Amazon S3 存储桶中的清单文件夹是什么?

对于 Amazon Redshift 目标,Amazon Kinesis Firehose 会生成清单文件,以便将 Amazon S3 对象成批加载到 Redshift 群集。清单文件夹用于存储 Firehose 生成的清单文件。

问:备份后的 Elasticsearch 文档在 Amazon S3 存储桶中的表示形式是什么?

如果使用“所有文档”模式,Amazon Kinesis Firehose 会基于交付流的缓冲配置合并多条传入记录,然后将其作为一个 S3 对象交付到 S3 存储桶。无论配置的是哪种备份模式,均可采用特定 JSON 格式将交付失败的文档交付到 S3 存储桶,这种格式会提供诸如错误代码和尝试交付时间之类的附加信息。有关更多信息,请参阅《Amazon Kinesis Firehose Developer Guide》中的 Amazon S3 Backup for the Amazon ES Destination

问:一个交付流可以向多个 Amazon S3 存储桶交付数据吗?

目前,一个交付流只能向一个 Amazon S3 存储桶交付数据。如果您需要将数据交付到多个 S3 存储桶,可通过创建多个交付流来实现。

问:一个交付流可以向多个 Amazon Redshift 群集或表交付数据吗?

目前,一个交付流只能向一个 Amazon Redshift 群集和一个表交付数据。如果您需要将数据交付到多个 Redshift 群集或表,可通过创建多个交付流来实现。

问:一个交付流可以向多个 Amazon Elasticsearch Service 域或索引交付数据吗?

目前,一个交付流只能向一个 Amazon Elasticsearch Service 域和一个索引交付数据。如果您需要将数据交付到多个 Amazon Elasticsearch Service 域或索引,可通过创建多个交付流来实现。

问:在向 Amazon Kinesis Firehose 交付流发送数据时,我为什么会受到限制?

默认情况下,每个交付流可消化多达 2000 笔事务/秒、5000 条记录/秒和 5MB/秒。您只需提交服务限值提升表即可方便地提高该限值。

问:为什么在 Amazon S3 存储桶、Amazon Redshift 表或 Amazon Elasticsearch Service 索引中会看到重复记录?

Amazon Kinesis Firehose 会使用至少一次语义来进行数据传输。在极少数情况下(例如尝试传输数据时请求超时),如果上一个请求最终已发出,Firehose 在尝试重新传输时可能会引入重复内容。 

问:如果向我的 Amazon S3 存储桶交付数据失败,会出现什么情况?

如果向 Amazon S3 存储桶交付数据失败,Amazon Kinesis Firehose 将每隔 5 秒重新尝试交付数据,最长持续时间为 24 小时。如果超过 24 小时最大保留期后该问题依然存在,那么它将放弃这些数据。

问:如果向我的 Amazon Redshift 集群交付数据失败,会出现什么情况?

如果向 Amazon Redshift 集群交付数据失败,Amazon Kinesis Firehose 将每隔 5 分钟重新尝试交付数据,最长持续时间为 60 分钟。60 分钟后,Amazon Kinesis Firehose 会跳过随时可供 COPY 的当前一批 S3 对象并移至下一批。有关跳过对象的信息以清单文件形式交付到您 S3 存储桶中的错误文件夹中,以便您手动重新交付。有关如何使用清单文件手动 COPY 数据的信息,请参阅使用清单指定数据文件

问:如果向我的 Amazon Elasticsearch 域交付数据失败,会出现什么情况?

对于 Amazon Elasticsearch Service 目标,您可在创建交付流时指定介于 0 到 7200 秒之间的重试持续时间。如果向 Amazon ES 域交付数据失败,Amazon Kinesis Firehose 将在指定的时间段内重新尝试交付数据。重试时限过后,Amazon Kinesis Firehose 会跳过当前一批数据并移至下一批。有关所跳过文档的详细信息会交付到 S3 存储桶内 elasticsearch_failed 文件夹中,以便您手动重新交付。

问:如果数据转换失败会怎样?

Firehose 尝试调用您的 Lambda 函数进行数据转换时,有可能出现两种类型的故障情景:

  • 第一种类型的故障为,由于网络连接超时和达到 Lambda 调用限制等原因导致函数调用失败。在这种故障情景下,Firehose 默认重试调用三次,然后会跳过该特定批次的记录。跳过的记录会被视为处理失败的记录。您可以使用 CreateDeliveryStream 和 UpdateDeliveryStream API 来配置调用重试次数,范围在 0 到 300 之间。对于此类故障,您也可以使用 Firehose 的错误日志记录功能将调用错误发送到 CloudWatch Logs。有关更多信息,请参阅使用 Amazon CloudWatch Logs 进行监控
  • 当从 Lambda 函数返回的记录转换结果为“ProcessingFailed”时,会出现第二种类型的故障。Firehose 会将这些记录视为处理失败的记录。对于此类故障,您可以使用 Lambda 的日志记录功能将调用错误日志发送到 CloudWatch Logs。有关更多信息,请参阅访问 AWS Lambda 的 Amazon CloudWatch Logs

对于以上两种类型的故障情景,处理失败的记录会传输到 S3 存储桶中的 processing_failed 文件夹中。

问:已交付 S3 对象的大小为什么会大于我在交付流配置中指定的缓冲区大小?

如果缓冲区大小条件先于缓冲间隔条件得到满足,则在大多数情况下,已交付 S3 对象的大小应等于指定的缓冲区大小。但是,如果数据交付至目标的时间晚于数据写入交付流的时间,Firehose 会动态增加缓冲区大小以赶上进度,并确保将所有数据交付至目标。在这种情况下,已交付 S3 对象的大小可能会大于指定的缓冲区大小。

问:Amazon S3 存储桶中的错误文件夹是什么?

该错误文件夹用于存储一些清单文件,后者包含无法加载到 Amazon Redshift 群集的 S3 对象的信息。您可以通过 Redshift COPY 命令手动重新加载这些对象。有关如何使用清单文件手动 COPY 数据的信息,请参阅使用清单指定数据文件

问:Amazon S3 存储桶中的 elasticsearch_failed 文件夹是什么?

elasticsearch_failed 文件夹用于存储无法加载到 Amazon Elasticsearch 域的文档。您可以为这些文档手动重新编制索引,以便重新交付。 

问:Amazon S3 存储桶中的 processing_failed 文件夹是什么?

processing_failed 文件夹用于存储 AWS Lambda 函数中转换失败的记录。您可以手动重新处理这些记录。

问:我如何监控 Amazon Kinesis Firehose 交付流的运行和性能?

Firehose 控制台显示关键的运行和性能指标,如传入的数据量、交付的数据量等。Amazon Kinesis Firehose 还与 Amazon CloudWatch 指标集成,以便您可为交付流收集、查看和分析指标。有关 Amazon Kinesis Firehose 指标的更多信息,请参阅《Amazon Kinesis Firehose Developer Guide》中的 Monitoring with Amazon CloudWatch Metrics

问:如何监控 Amazon Kinesis Firehose 传输流的数据转换失败和传输失败?

Amazon Kinesis Firehose 与 Amazon CloudWatch Logs 集成,因此您可以在数据转换失败或传输失败时查看特定的错误日志。创建交付流时,您可以启用错误日志记录。有关更多信息,请参阅《Amazon Kinesis Firehose Developer Guide》中的 Monitoring with Amazon CloudWatch Logs

问:我如何管理和控制对 Amazon Kinesis Firehose 交付流的访问权限?

Amazon Kinesis Firehose 与 AWS Identity and Access Management 集成,让您能够安全控制对 AWS 服务和用户资源的访问权限。例如,您可以创建仅允许特定用户或组向 Firehose 交付流添加数据的策略。有关流访问管理和控制的更多信息,请参阅控制 Amazon Kinesis Firehose 的访问权限

问:如何记录针对 Amazon Kinesis Firehose 分发流的 API 调用,以便用于安全分析和运行故障排除?

Amazon Kinesis Firehose 与 Amazon CloudTrail 服务集成,后者会记录您账户的 AWS API 调用并将日志文件发送给您。有关 API 调用日志的更多信息和支持的 Amazon Kinesis Firehose API 操作的列表,请参阅使用 Amazon CloudTrail 记录 Amazon Kinesis Firehose API 调用

问:Amazon Kinesis Firehose 是否可用于 AWS 免费套餐?

不是。Amazon Kinesis Firehose 当前不在 AWS 免费套餐中提供。AWS 免费套餐支持免费试用的一组 AWS 服务。有关更多信息,请参阅 AWS 免费套餐

问:Amazon Kinesis Firehose 如何收费?
Amazon Kinesis Firehose 使用简单的按需付费定价结构。这里不存在前期成本或最低费用,您仅需为使用的资源付费。Amazon Kinesis Firehose 定价基于 Firehose 消化的数据量 (GB),每条记录向上取整到最接近的 5KB。有关 Amazon Kinesis Firehose 成本的更多信息,请参阅 Amazon Kinesis Firehose 定价

问:使用 PutRecordBatch 操作向 Amazon Kinesis Firehose 发送数据时,如何计算向上取整 5KB?

向上取整 5KB 在记录级别而不是 API 操作级别计算。例如,如果您的 PutRecordBatch 调用包含两条 1KB 的记录,则将该调用的数据量计为 10KB。(每条记录 5KB)

问:Amazon Kinesis Firehose 的费用包含 Amazon S3、Amazon Redshift、Amazon Elasticsearch Service 和 AWS Lambda 的费用吗?

不包含。您需要单独支付使用 Amazon S3、Amazon Redshift、Amazon Elasticsearch Service 和 AWS Lambda 的费用 (包括存储费用和请求费用)。有关更多信息,请参阅 Amazon S3 定价Amazon Redshift 定价Amazon Elasticsearch Service 定价AWS Lambda 定价