配置应用程序输出 - 适用于 SQL 应用程序的 Amazon Kinesis Data Analytics 开发人员指南
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

对于新项目,建议您使用新的适用于 Apache Flink Studio 的托管服务,而不是使用适用于 SQL 应用程序的 Kinesis Data Analytics。Managed Service for Apache Flink Studio 不仅操作简单,还具有高级分析功能,使您能够在几分钟内构建复杂的流处理应用程序。

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

配置应用程序输出

在您的应用程序代码中,将 SQL 语句的输出写入一个或多个应用程序内部流。您可以选择向应用程序添加输出配置。以将写入应用程序内流的所有内容保存到外部目标,例如 Amazon Kinesis 数据流、Firehose 传输流或函数。 Amazon Lambda

可以用来永久保存应用程序输出的外部目标的数量有限制。有关更多信息,请参阅Limits

注意

建议用一个外部目标来永久保存应用程序内部错误流数据,以方便调查错误。

在所有这些输出配置中,可以提供以下内容:

  • 应用程序内部流名称 - 要永久保存到外部目标的流。

    Kinesis Data Firehose 查找在输出配置中指定的应用程序内部流。(流名称区分大小写,并且必须完全匹配)。确保应用程序代码创建了这一应用程序内部流。

  • 外部目标-您可以将数据保存到 Kinesis 数据流、Firehose 传输流或 Lambda 函数中。您需要提供流或函数的 Amazon 资源名称 (ARN)。您还要提供 Kinesis data Analytics 代表您写入到流或函数时代入的 IAM 角色。您描述在写入到外部目标时 Kinesis Data Analytics 使用的记录格式(JSON、CSV)。

如果 Kinesis Data Analytics 无法写入到流或 Lambda 目标,该服务将继续无限期地进行尝试。这将产生反向压力,导致您的应用程序滞后。如果不能解决这一问题,您的应用程序最终将停止处理新数据。您可以监控 Kinesis Data Analytics 指标并设置故障警报。有关指标和警报的更多信息,请参阅使用亚马逊 CloudWatch指标创建亚马逊 CloudWatch警报

您可以使用 Amazon Web Services Management Console配置应用程序输出。控制台将调用 API 以保存配置。

使用创建输出 Amazon CLI

此部分介绍如何为 CreateApplicationAddApplicationOutput 操作创建请求正文的 Outputs 部分。

创建 Kinesis 流输出

以下 JSON 代码段显示用于创建 Amazon Kinesis data stream 目标的 CreateApplication 请求正文中的 Outputs 部分。

"Outputs": [ { "DestinationSchema": { "RecordFormatType": "string" }, "KinesisStreamsOutput": { "ResourceARN": "string", "RoleARN": "string" }, "Name": "string" } ]

创建 Firehose 传送流输出

以下 JSON 片段显示了CreateApplication请求正Outputs文中用于创建 Amazon Data Firehose 传输流目标的部分。

"Outputs": [ { "DestinationSchema": { "RecordFormatType": "string" }, "KinesisFirehoseOutput": { "ResourceARN": "string", "RoleARN": "string" }, "Name": "string" } ]

创建 Lambda 函数输出

以下 JSON 片段显示了CreateApplication请求正文中用于创建 Amazon Lambda 函数目标的Outputs部分。

"Outputs": [ { "DestinationSchema": { "RecordFormatType": "string" }, "LambdaOutput": { "ResourceARN": "string", "RoleARN": "string" }, "Name": "string" } ]