AWS::KinesisAnalytics::Application - AWS CloudFormation
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

AWS::KinesisAnalytics::Application

AWS::KinesisAnalytics::Application 资源创建 Amazon Kinesis Data Analytics 应用程序。有关更多信息,请参阅 Amazon Kinesis Data Analytics 开发人员指南

语法

要在 AWS CloudFormation 模板中声明此实体,请使用以下语法:

JSON

{ "Type" : "AWS::KinesisAnalytics::Application", "Properties" : { "ApplicationCode" : String, "ApplicationDescription" : String, "ApplicationName" : String, "Inputs" : [ Input, ... ] } }

YAML

Type: AWS::KinesisAnalytics::Application Properties: ApplicationCode: String ApplicationDescription: String ApplicationName: String Inputs: - Input

属性

ApplicationCode

一个或多个读取输入数据、转换数据并生成输出的 SQL 语句。例如,您可以编写一条 SQL 语句,该语句从一个应用程序内部流中读取数据,生成供应商广告点击次数的运行平均值,并使用泵将结果行插入另一个应用程序内部流中。有关典型模式的更多信息,请参阅应用程序代码

您可以提供这样的一系列 SQL 语句,其中一条语句的输出可以用作下一条语句的输入。您可以通过创建应用程序内部流和泵来存储中间结果。

请注意,应用程序代码必须使用在 Outputs 中指定的名称创建流。例如,如果您的 Outputs 定义了名为 ExampleOutputStream1ExampleOutputStream2 的输出流,则您的应用程序代码必须创建这两个流。

必需:否

类型:字符串

最低0

最高102400

Update requires: No interruption

ApplicationDescription

应用程序的摘要描述。

必需:否

类型:字符串

最低0

最高1024

Update requires: No interruption

ApplicationName

Amazon Kinesis Analytics 应用程序的名称(例如,sample-app)。

必需:否

类型:字符串

最低1

最高128

模式[a-zA-Z0-9_.-]+

Update requires: Replacement

Inputs

使用该参数可配置应用程序输入。

您可以将您的应用程序配置为接收来自单个流式传输源的输入。在此配置中,您会将此流式传输源映射到已创建的应用程序内部流。然后,您的应用程序代码可以像对表一样查询应用程序内部流(您可以将其视为连续更新的表)。

对于流式传输源,您可以在该流上提供其 Amazon 资源名称 (ARN) 和数据格式(例如,JSON、CSV 等)。您还必须提供可由 Amazon Kinesis Analytics 代入以代表您读取此流的 IAM 角色。

要创建应用程序内部流,您需要指定一个架构来将您的数据转换成 SQL 中使用的架构化版本。在架构中,您需要提供流式传输源中数据元素的必要映射,以记录应用程序内部流中的列。

必需:是

类型输入的列表

Update requires: No interruption

示例

创建 Amazon Kinesis Data Analytics 应用程序

以下示例说明如何创建和配置 Kinesis Data Analytics 应用程序。

YAML

--- Description: "Sample KinesisAnalytics via CloudFormation" Resources: BasicApplication: Type: AWS::KinesisAnalytics::Application Properties: ApplicationName: "sampleApplication" ApplicationDescription: "SampleApp" ApplicationCode: "Example Application Code" Inputs: - NamePrefix: "exampleNamePrefix" InputSchema: RecordColumns: - Name: "example" SqlType: "VARCHAR(16)" Mapping: "$.example" RecordFormat: RecordFormatType: "JSON" MappingParameters: JSONMappingParameters: RecordRowPath: "$" KinesisStreamsInput: ResourceARN: !GetAtt InputKinesisStream.Arn RoleARN: !GetAtt KinesisAnalyticsRole.Arn InputKinesisStream: Type: AWS::Kinesis::Stream Properties: ShardCount: 1 KinesisAnalyticsRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Principal: Service: kinesisanalytics.amazonaws.com Action: "sts:AssumeRole" Path: "/" Policies: - PolicyName: Open PolicyDocument: Version: "2012-10-17" Statement: - Effect: Allow Action: "*" Resource: "*" BasicApplicationOutputs: Type: AWS::KinesisAnalytics::ApplicationOutput DependsOn: BasicApplication Properties: ApplicationName: !Ref BasicApplication Output: Name: "exampleOutput" DestinationSchema: RecordFormatType: "CSV" KinesisStreamsOutput: ResourceARN: !GetAtt OutputKinesisStream.Arn RoleARN: !GetAtt KinesisAnalyticsRole.Arn OutputKinesisStream: Type: AWS::Kinesis::Stream Properties: ShardCount: 1 ApplicationReferenceDataSource: Type: AWS::KinesisAnalytics::ApplicationReferenceDataSource DependsOn: BasicApplicationOutputs Properties: ApplicationName: !Ref BasicApplication ReferenceDataSource: TableName: "exampleTable" ReferenceSchema: RecordColumns: - Name: "example" SqlType: "VARCHAR(16)" Mapping: "$.example" RecordFormat: RecordFormatType: "JSON" MappingParameters: JSONMappingParameters: RecordRowPath: "$" S3ReferenceDataSource: BucketARN: !GetAtt S3Bucket.Arn FileKey: 'fakeKey' ReferenceRoleARN: !GetAtt KinesisAnalyticsRole.Arn S3Bucket: Type: AWS::S3::Bucket Outputs: ApplicationPhysicalResourceId: Value: !Ref BasicApplication