

This is the new *CloudFormation Template Reference Guide*. Please update your bookmarks and links. For help getting started with CloudFormation, see the [AWS CloudFormation User Guide](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html).

# AWS::KinesisAnalytics::Application
<a name="aws-resource-kinesisanalytics-application"></a>

The `AWS::KinesisAnalytics::Application` resource creates an Amazon Kinesis Data Analytics application. For more information, see the [Amazon Kinesis Data Analytics Developer Guide](/kinesisanalytics/latest/dev/what-is.html). 

## Syntax
<a name="aws-resource-kinesisanalytics-application-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-resource-kinesisanalytics-application-syntax.json"></a>

```
{
  "Type" : "AWS::KinesisAnalytics::Application",
  "Properties" : {
      "[ApplicationCode](#cfn-kinesisanalytics-application-applicationcode)" : String,
      "[ApplicationDescription](#cfn-kinesisanalytics-application-applicationdescription)" : String,
      "[ApplicationName](#cfn-kinesisanalytics-application-applicationname)" : String,
      "[Inputs](#cfn-kinesisanalytics-application-inputs)" : [ Input, ... ]
    }
}
```

### YAML
<a name="aws-resource-kinesisanalytics-application-syntax.yaml"></a>

```
Type: AWS::KinesisAnalytics::Application
Properties:
  [ApplicationCode](#cfn-kinesisanalytics-application-applicationcode): String
  [ApplicationDescription](#cfn-kinesisanalytics-application-applicationdescription): String
  [ApplicationName](#cfn-kinesisanalytics-application-applicationname): String
  [Inputs](#cfn-kinesisanalytics-application-inputs): 
    - Input
```

## Properties
<a name="aws-resource-kinesisanalytics-application-properties"></a>

`ApplicationCode`  <a name="cfn-kinesisanalytics-application-applicationcode"></a>
One or more SQL statements that read input data, transform it, and generate output. For example, you can write a SQL statement that reads data from one in-application stream, generates a running average of the number of advertisement clicks by vendor, and insert resulting rows in another in-application stream using pumps. For more information about the typical pattern, see [Application Code](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-app-code.html).   
You can provide such series of SQL statements, where output of one statement can be used as the input for the next statement. You store intermediate results by creating in-application streams and pumps.  
Note that the application code must create the streams with names specified in the `Outputs`. For example, if your `Outputs` defines output streams named `ExampleOutputStream1` and `ExampleOutputStream2`, then your application code must create these streams.   
*Required*: No  
*Type*: String  
*Minimum*: `0`  
*Maximum*: `102400`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ApplicationDescription`  <a name="cfn-kinesisanalytics-application-applicationdescription"></a>
Summary description of the application.  
*Required*: No  
*Type*: String  
*Minimum*: `0`  
*Maximum*: `1024`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`ApplicationName`  <a name="cfn-kinesisanalytics-application-applicationname"></a>
Name of your Amazon Kinesis Analytics application (for example, `sample-app`).  
*Required*: No  
*Type*: String  
*Pattern*: `[a-zA-Z0-9_.-]+`  
*Minimum*: `1`  
*Maximum*: `128`  
*Update requires*: [Replacement](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-replacement)

`Inputs`  <a name="cfn-kinesisanalytics-application-inputs"></a>
Use this parameter to configure the application input.  
You can configure your application to receive input from a single streaming source. In this configuration, you map this streaming source to an in-application stream that is created. Your application code can then query the in-application stream like a table (you can think of it as a constantly updating table).  
For the streaming source, you provide its Amazon Resource Name (ARN) and format of data on the stream (for example, JSON, CSV, etc.). You also must provide an IAM role that Amazon Kinesis Analytics can assume to read this stream on your behalf.  
To create the in-application stream, you need to specify a schema to transform your data into a schematized version used in SQL. In the schema, you provide the necessary mapping of the data elements in the streaming source to record columns in the in-app stream.  
*Required*: Yes  
*Type*: Array of [Input](aws-properties-kinesisanalytics-application-input.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

## Return values
<a name="aws-resource-kinesisanalytics-application-return-values"></a>

### Fn::GetAtt
<a name="aws-resource-kinesisanalytics-application-return-values-fn--getatt"></a>

## Examples
<a name="aws-resource-kinesisanalytics-application--examples"></a>



### Creating an Amazon Kinesis Data Analytics Application
<a name="aws-resource-kinesisanalytics-application--examples--Creating_an_Amazon_Kinesis_Data_Analytics_Application"></a>

The following example demonstrates how to create and configure a Kinesis Data Analytics application.

#### YAML
<a name="aws-resource-kinesisanalytics-application--examples--Creating_an_Amazon_Kinesis_Data_Analytics_Application--yaml"></a>

```
---
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
```

# AWS::KinesisAnalytics::Application CSVMappingParameters
<a name="aws-properties-kinesisanalytics-application-csvmappingparameters"></a>

Provides additional mapping information when the record format uses delimiters, such as CSV. For example, the following sample records use CSV format, where the records use the *'\$1n'* as the row delimiter and a comma (",") as the column delimiter: 

 `"name1", "address1"` 

 `"name2", "address2"` 

## Syntax
<a name="aws-properties-kinesisanalytics-application-csvmappingparameters-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-csvmappingparameters-syntax.json"></a>

```
{
  "[RecordColumnDelimiter](#cfn-kinesisanalytics-application-csvmappingparameters-recordcolumndelimiter)" : String,
  "[RecordRowDelimiter](#cfn-kinesisanalytics-application-csvmappingparameters-recordrowdelimiter)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-csvmappingparameters-syntax.yaml"></a>

```
  [RecordColumnDelimiter](#cfn-kinesisanalytics-application-csvmappingparameters-recordcolumndelimiter): String
  [RecordRowDelimiter](#cfn-kinesisanalytics-application-csvmappingparameters-recordrowdelimiter): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-csvmappingparameters-properties"></a>

`RecordColumnDelimiter`  <a name="cfn-kinesisanalytics-application-csvmappingparameters-recordcolumndelimiter"></a>
Column delimiter. For example, in a CSV format, a comma (",") is the typical column delimiter.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RecordRowDelimiter`  <a name="cfn-kinesisanalytics-application-csvmappingparameters-recordrowdelimiter"></a>
Row delimiter. For example, in a CSV format, *'\$1n'* is the typical row delimiter.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application Input
<a name="aws-properties-kinesisanalytics-application-input"></a>

When you configure the application input, you specify the streaming source, the in-application stream name that is created, and the mapping between the two. For more information, see [Configuring Application Input](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html). 

## Syntax
<a name="aws-properties-kinesisanalytics-application-input-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-input-syntax.json"></a>

```
{
  "[InputParallelism](#cfn-kinesisanalytics-application-input-inputparallelism)" : InputParallelism,
  "[InputProcessingConfiguration](#cfn-kinesisanalytics-application-input-inputprocessingconfiguration)" : InputProcessingConfiguration,
  "[InputSchema](#cfn-kinesisanalytics-application-input-inputschema)" : InputSchema,
  "[KinesisFirehoseInput](#cfn-kinesisanalytics-application-input-kinesisfirehoseinput)" : KinesisFirehoseInput,
  "[KinesisStreamsInput](#cfn-kinesisanalytics-application-input-kinesisstreamsinput)" : KinesisStreamsInput,
  "[NamePrefix](#cfn-kinesisanalytics-application-input-nameprefix)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-input-syntax.yaml"></a>

```
  [InputParallelism](#cfn-kinesisanalytics-application-input-inputparallelism): 
    InputParallelism
  [InputProcessingConfiguration](#cfn-kinesisanalytics-application-input-inputprocessingconfiguration): 
    InputProcessingConfiguration
  [InputSchema](#cfn-kinesisanalytics-application-input-inputschema): 
    InputSchema
  [KinesisFirehoseInput](#cfn-kinesisanalytics-application-input-kinesisfirehoseinput): 
    KinesisFirehoseInput
  [KinesisStreamsInput](#cfn-kinesisanalytics-application-input-kinesisstreamsinput): 
    KinesisStreamsInput
  [NamePrefix](#cfn-kinesisanalytics-application-input-nameprefix): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-input-properties"></a>

`InputParallelism`  <a name="cfn-kinesisanalytics-application-input-inputparallelism"></a>
Describes the number of in-application streams to create.  
Data from your source is routed to these in-application input streams.  
 See [Configuring Application Input](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html).  
*Required*: No  
*Type*: [InputParallelism](aws-properties-kinesisanalytics-application-inputparallelism.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`InputProcessingConfiguration`  <a name="cfn-kinesisanalytics-application-input-inputprocessingconfiguration"></a>
The [InputProcessingConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputprocessingconfiguration.html) for the input. An input processor transforms records as they are received from the stream, before the application's SQL code executes. Currently, the only input processing configuration available is [InputLambdaProcessor](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputlambdaprocessor.html).  
*Required*: No  
*Type*: [InputProcessingConfiguration](aws-properties-kinesisanalytics-application-inputprocessingconfiguration.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`InputSchema`  <a name="cfn-kinesisanalytics-application-input-inputschema"></a>
Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created.  
Also used to describe the format of the reference data source.  
*Required*: Yes  
*Type*: [InputSchema](aws-properties-kinesisanalytics-application-inputschema.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`KinesisFirehoseInput`  <a name="cfn-kinesisanalytics-application-input-kinesisfirehoseinput"></a>
If the streaming source is an Amazon Kinesis Firehose delivery stream, identifies the delivery stream's ARN and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf.  
Note: Either `KinesisStreamsInput` or `KinesisFirehoseInput` is required.  
*Required*: Conditional  
*Type*: [KinesisFirehoseInput](aws-properties-kinesisanalytics-application-kinesisfirehoseinput.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`KinesisStreamsInput`  <a name="cfn-kinesisanalytics-application-input-kinesisstreamsinput"></a>
If the streaming source is an Amazon Kinesis stream, identifies the stream's Amazon Resource Name (ARN) and an IAM role that enables Amazon Kinesis Analytics to access the stream on your behalf.  
Note: Either `KinesisStreamsInput` or `KinesisFirehoseInput` is required.  
*Required*: Conditional  
*Type*: [KinesisStreamsInput](aws-properties-kinesisanalytics-application-kinesisstreamsinput.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`NamePrefix`  <a name="cfn-kinesisanalytics-application-input-nameprefix"></a>
Name prefix to use when creating an in-application stream. Suppose that you specify a prefix "MyInApplicationStream." Amazon Kinesis Analytics then creates one or more (as per the `InputParallelism` count you specified) in-application streams with names "MyInApplicationStream\$1001," "MyInApplicationStream\$1002," and so on.   
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Maximum*: `32`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application InputLambdaProcessor
<a name="aws-properties-kinesisanalytics-application-inputlambdaprocessor"></a>

An object that contains the Amazon Resource Name (ARN) of the [AWS Lambda](https://docs.aws.amazon.com/lambda/) function that is used to preprocess records in the stream, and the ARN of the IAM role that is used to access the AWS Lambda function. 

## Syntax
<a name="aws-properties-kinesisanalytics-application-inputlambdaprocessor-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-inputlambdaprocessor-syntax.json"></a>

```
{
  "[ResourceARN](#cfn-kinesisanalytics-application-inputlambdaprocessor-resourcearn)" : String,
  "[RoleARN](#cfn-kinesisanalytics-application-inputlambdaprocessor-rolearn)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-inputlambdaprocessor-syntax.yaml"></a>

```
  [ResourceARN](#cfn-kinesisanalytics-application-inputlambdaprocessor-resourcearn): String
  [RoleARN](#cfn-kinesisanalytics-application-inputlambdaprocessor-rolearn): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-inputlambdaprocessor-properties"></a>

`ResourceARN`  <a name="cfn-kinesisanalytics-application-inputlambdaprocessor-resourcearn"></a>
The ARN of the [AWS Lambda](https://docs.aws.amazon.com/lambda/) function that operates on records in the stream.  
To specify an earlier version of the Lambda function than the latest, include the Lambda function version in the Lambda function ARN. For more information about Lambda ARNs, see [Example ARNs: AWS Lambda](/general/latest/gr/aws-arns-and-namespaces.html#arn-syntax-lambda)
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:.*`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleARN`  <a name="cfn-kinesisanalytics-application-inputlambdaprocessor-rolearn"></a>
The ARN of the IAM role that is used to access the AWS Lambda function.  
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:.*`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application InputParallelism
<a name="aws-properties-kinesisanalytics-application-inputparallelism"></a>

Describes the number of in-application streams to create for a given streaming source. For information about parallelism, see [Configuring Application Input](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/how-it-works-input.html). 

## Syntax
<a name="aws-properties-kinesisanalytics-application-inputparallelism-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-inputparallelism-syntax.json"></a>

```
{
  "[Count](#cfn-kinesisanalytics-application-inputparallelism-count)" : Integer
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-inputparallelism-syntax.yaml"></a>

```
  [Count](#cfn-kinesisanalytics-application-inputparallelism-count): Integer
```

## Properties
<a name="aws-properties-kinesisanalytics-application-inputparallelism-properties"></a>

`Count`  <a name="cfn-kinesisanalytics-application-inputparallelism-count"></a>
Number of in-application streams to create. For more information, see [Limits](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/limits.html).   
*Required*: No  
*Type*: Integer  
*Minimum*: `1`  
*Maximum*: `64`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application InputProcessingConfiguration
<a name="aws-properties-kinesisanalytics-application-inputprocessingconfiguration"></a>

Provides a description of a processor that is used to preprocess the records in the stream before being processed by your application code. Currently, the only input processor available is [AWS Lambda](https://docs.aws.amazon.com/lambda/).

## Syntax
<a name="aws-properties-kinesisanalytics-application-inputprocessingconfiguration-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-inputprocessingconfiguration-syntax.json"></a>

```
{
  "[InputLambdaProcessor](#cfn-kinesisanalytics-application-inputprocessingconfiguration-inputlambdaprocessor)" : InputLambdaProcessor
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-inputprocessingconfiguration-syntax.yaml"></a>

```
  [InputLambdaProcessor](#cfn-kinesisanalytics-application-inputprocessingconfiguration-inputlambdaprocessor): 
    InputLambdaProcessor
```

## Properties
<a name="aws-properties-kinesisanalytics-application-inputprocessingconfiguration-properties"></a>

`InputLambdaProcessor`  <a name="cfn-kinesisanalytics-application-inputprocessingconfiguration-inputlambdaprocessor"></a>
The [InputLambdaProcessor](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisanalytics-application-inputlambdaprocessor.html) that is used to preprocess the records in the stream before being processed by your application code.  
*Required*: No  
*Type*: [InputLambdaProcessor](aws-properties-kinesisanalytics-application-inputlambdaprocessor.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application InputSchema
<a name="aws-properties-kinesisanalytics-application-inputschema"></a>

Describes the format of the data in the streaming source, and how each data element maps to corresponding columns in the in-application stream that is being created.

Also used to describe the format of the reference data source.

## Syntax
<a name="aws-properties-kinesisanalytics-application-inputschema-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-inputschema-syntax.json"></a>

```
{
  "[RecordColumns](#cfn-kinesisanalytics-application-inputschema-recordcolumns)" : [ RecordColumn, ... ],
  "[RecordEncoding](#cfn-kinesisanalytics-application-inputschema-recordencoding)" : String,
  "[RecordFormat](#cfn-kinesisanalytics-application-inputschema-recordformat)" : RecordFormat
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-inputschema-syntax.yaml"></a>

```
  [RecordColumns](#cfn-kinesisanalytics-application-inputschema-recordcolumns): 
    - RecordColumn
  [RecordEncoding](#cfn-kinesisanalytics-application-inputschema-recordencoding): String
  [RecordFormat](#cfn-kinesisanalytics-application-inputschema-recordformat): 
    RecordFormat
```

## Properties
<a name="aws-properties-kinesisanalytics-application-inputschema-properties"></a>

`RecordColumns`  <a name="cfn-kinesisanalytics-application-inputschema-recordcolumns"></a>
A list of `RecordColumn` objects.  
*Required*: Yes  
*Type*: Array of [RecordColumn](aws-properties-kinesisanalytics-application-recordcolumn.md)  
*Minimum*: `1`  
*Maximum*: `1000`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RecordEncoding`  <a name="cfn-kinesisanalytics-application-inputschema-recordencoding"></a>
Specifies the encoding of the records in the streaming source. For example, UTF-8.  
*Required*: No  
*Type*: String  
*Pattern*: `UTF-8`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RecordFormat`  <a name="cfn-kinesisanalytics-application-inputschema-recordformat"></a>
Specifies the format of the records on the streaming source.  
*Required*: Yes  
*Type*: [RecordFormat](aws-properties-kinesisanalytics-application-recordformat.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application JSONMappingParameters
<a name="aws-properties-kinesisanalytics-application-jsonmappingparameters"></a>

Provides additional mapping information when JSON is the record format on the streaming source.

## Syntax
<a name="aws-properties-kinesisanalytics-application-jsonmappingparameters-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-jsonmappingparameters-syntax.json"></a>

```
{
  "[RecordRowPath](#cfn-kinesisanalytics-application-jsonmappingparameters-recordrowpath)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-jsonmappingparameters-syntax.yaml"></a>

```
  [RecordRowPath](#cfn-kinesisanalytics-application-jsonmappingparameters-recordrowpath): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-jsonmappingparameters-properties"></a>

`RecordRowPath`  <a name="cfn-kinesisanalytics-application-jsonmappingparameters-recordrowpath"></a>
Path to the top-level parent that contains the records.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application KinesisFirehoseInput
<a name="aws-properties-kinesisanalytics-application-kinesisfirehoseinput"></a>

 Identifies an Amazon Kinesis Firehose delivery stream as the streaming source. You provide the delivery stream's Amazon Resource Name (ARN) and an IAM role ARN that enables Amazon Kinesis Analytics to access the stream on your behalf.

## Syntax
<a name="aws-properties-kinesisanalytics-application-kinesisfirehoseinput-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-kinesisfirehoseinput-syntax.json"></a>

```
{
  "[ResourceARN](#cfn-kinesisanalytics-application-kinesisfirehoseinput-resourcearn)" : String,
  "[RoleARN](#cfn-kinesisanalytics-application-kinesisfirehoseinput-rolearn)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-kinesisfirehoseinput-syntax.yaml"></a>

```
  [ResourceARN](#cfn-kinesisanalytics-application-kinesisfirehoseinput-resourcearn): String
  [RoleARN](#cfn-kinesisanalytics-application-kinesisfirehoseinput-rolearn): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-kinesisfirehoseinput-properties"></a>

`ResourceARN`  <a name="cfn-kinesisanalytics-application-kinesisfirehoseinput-resourcearn"></a>
ARN of the input delivery stream.  
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:.*`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleARN`  <a name="cfn-kinesisanalytics-application-kinesisfirehoseinput-rolearn"></a>
ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to make sure that the role has the necessary permissions to access the stream.  
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:.*`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application KinesisStreamsInput
<a name="aws-properties-kinesisanalytics-application-kinesisstreamsinput"></a>

 Identifies an Amazon Kinesis stream as the streaming source. You provide the stream's Amazon Resource Name (ARN) and an IAM role ARN that enables Amazon Kinesis Analytics to access the stream on your behalf.

## Syntax
<a name="aws-properties-kinesisanalytics-application-kinesisstreamsinput-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-kinesisstreamsinput-syntax.json"></a>

```
{
  "[ResourceARN](#cfn-kinesisanalytics-application-kinesisstreamsinput-resourcearn)" : String,
  "[RoleARN](#cfn-kinesisanalytics-application-kinesisstreamsinput-rolearn)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-kinesisstreamsinput-syntax.yaml"></a>

```
  [ResourceARN](#cfn-kinesisanalytics-application-kinesisstreamsinput-resourcearn): String
  [RoleARN](#cfn-kinesisanalytics-application-kinesisstreamsinput-rolearn): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-kinesisstreamsinput-properties"></a>

`ResourceARN`  <a name="cfn-kinesisanalytics-application-kinesisstreamsinput-resourcearn"></a>
ARN of the input Amazon Kinesis stream to read.  
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:.*`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RoleARN`  <a name="cfn-kinesisanalytics-application-kinesisstreamsinput-rolearn"></a>
ARN of the IAM role that Amazon Kinesis Analytics can assume to access the stream on your behalf. You need to grant the necessary permissions to this role.  
*Required*: Yes  
*Type*: String  
*Pattern*: `arn:.*`  
*Minimum*: `1`  
*Maximum*: `2048`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application MappingParameters
<a name="aws-properties-kinesisanalytics-application-mappingparameters"></a>

When configuring application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.

## Syntax
<a name="aws-properties-kinesisanalytics-application-mappingparameters-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-mappingparameters-syntax.json"></a>

```
{
  "[CSVMappingParameters](#cfn-kinesisanalytics-application-mappingparameters-csvmappingparameters)" : CSVMappingParameters,
  "[JSONMappingParameters](#cfn-kinesisanalytics-application-mappingparameters-jsonmappingparameters)" : JSONMappingParameters
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-mappingparameters-syntax.yaml"></a>

```
  [CSVMappingParameters](#cfn-kinesisanalytics-application-mappingparameters-csvmappingparameters): 
    CSVMappingParameters
  [JSONMappingParameters](#cfn-kinesisanalytics-application-mappingparameters-jsonmappingparameters): 
    JSONMappingParameters
```

## Properties
<a name="aws-properties-kinesisanalytics-application-mappingparameters-properties"></a>

`CSVMappingParameters`  <a name="cfn-kinesisanalytics-application-mappingparameters-csvmappingparameters"></a>
Provides additional mapping information when the record format uses delimiters (for example, CSV).  
*Required*: No  
*Type*: [CSVMappingParameters](aws-properties-kinesisanalytics-application-csvmappingparameters.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`JSONMappingParameters`  <a name="cfn-kinesisanalytics-application-mappingparameters-jsonmappingparameters"></a>
Provides additional mapping information when JSON is the record format on the streaming source.  
*Required*: No  
*Type*: [JSONMappingParameters](aws-properties-kinesisanalytics-application-jsonmappingparameters.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application RecordColumn
<a name="aws-properties-kinesisanalytics-application-recordcolumn"></a>

Describes the mapping of each data element in the streaming source to the corresponding column in the in-application stream.

Also used to describe the format of the reference data source.

## Syntax
<a name="aws-properties-kinesisanalytics-application-recordcolumn-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-recordcolumn-syntax.json"></a>

```
{
  "[Mapping](#cfn-kinesisanalytics-application-recordcolumn-mapping)" : String,
  "[Name](#cfn-kinesisanalytics-application-recordcolumn-name)" : String,
  "[SqlType](#cfn-kinesisanalytics-application-recordcolumn-sqltype)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-recordcolumn-syntax.yaml"></a>

```
  [Mapping](#cfn-kinesisanalytics-application-recordcolumn-mapping): String
  [Name](#cfn-kinesisanalytics-application-recordcolumn-name): String
  [SqlType](#cfn-kinesisanalytics-application-recordcolumn-sqltype): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-recordcolumn-properties"></a>

`Mapping`  <a name="cfn-kinesisanalytics-application-recordcolumn-mapping"></a>
Reference to the data element in the streaming input or the reference data source. This element is required if the [RecordFormatType](https://docs.aws.amazon.com/kinesisanalytics/latest/dev/API_RecordFormat.html#analytics-Type-RecordFormat-RecordFormatTypel) is `JSON`.  
*Required*: No  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`Name`  <a name="cfn-kinesisanalytics-application-recordcolumn-name"></a>
Name of the column created in the in-application input stream or reference table.  
*Required*: Yes  
*Type*: String  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`SqlType`  <a name="cfn-kinesisanalytics-application-recordcolumn-sqltype"></a>
Type of column created in the in-application input stream or reference table.  
*Required*: Yes  
*Type*: String  
*Minimum*: `1`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

# AWS::KinesisAnalytics::Application RecordFormat
<a name="aws-properties-kinesisanalytics-application-recordformat"></a>

 Describes the record format and relevant mapping information that should be applied to schematize the records on the stream. 

## Syntax
<a name="aws-properties-kinesisanalytics-application-recordformat-syntax"></a>

To declare this entity in your CloudFormation template, use the following syntax:

### JSON
<a name="aws-properties-kinesisanalytics-application-recordformat-syntax.json"></a>

```
{
  "[MappingParameters](#cfn-kinesisanalytics-application-recordformat-mappingparameters)" : MappingParameters,
  "[RecordFormatType](#cfn-kinesisanalytics-application-recordformat-recordformattype)" : String
}
```

### YAML
<a name="aws-properties-kinesisanalytics-application-recordformat-syntax.yaml"></a>

```
  [MappingParameters](#cfn-kinesisanalytics-application-recordformat-mappingparameters): 
    MappingParameters
  [RecordFormatType](#cfn-kinesisanalytics-application-recordformat-recordformattype): String
```

## Properties
<a name="aws-properties-kinesisanalytics-application-recordformat-properties"></a>

`MappingParameters`  <a name="cfn-kinesisanalytics-application-recordformat-mappingparameters"></a>
When configuring application input at the time of creating or updating an application, provides additional mapping information specific to the record format (such as JSON, CSV, or record fields delimited by some delimiter) on the streaming source.  
*Required*: No  
*Type*: [MappingParameters](aws-properties-kinesisanalytics-application-mappingparameters.md)  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)

`RecordFormatType`  <a name="cfn-kinesisanalytics-application-recordformat-recordformattype"></a>
The type of record format.  
*Required*: Yes  
*Type*: String  
*Allowed values*: `JSON | CSV`  
*Update requires*: [No interruption](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt)