
Amplitude Data's Kinesis Data Stream integration streams your Amplitude event data straight to a Kinesis Data Stream.

## Considerations

- Amplitude sends the `user_id`, `event_name`, and `created_at` along with all user, group, and event properties to Kinesis streams.
- Kinesis Data Stream is a near real-time streaming destination, so it counts toward your Event Streaming Usage. Batch export destinations in the same **Warehouse Destination** section, such as Amazon S3, don't count toward Event Streaming Usage.
- The data Amplitude posts in Kinesis is the same JSON as documented in the [Amplitude Export API](/docs/apis/analytics/export#response).
- This destination supports Identify Forwarding. Anytime you make an Identify call to Amplitude, Amplitude forwards that user information. Refer to the [Identify documentation](/docs/apis/analytics/identify) for more information.
- The Role Name must have this format: `arn:aws:iam::{your aws account id}:role/{role name}`.

## Set up the integration

### Kinesis setup

#### 1. Create a Kinesis stream

Create a [Kinesis stream](https://docs.aws.amazon.com/streams/latest/dev/introduction.html "https://docs.aws.amazon.com/streams/latest/dev/introduction.html") in the AWS console.

#### 2. Create an IAM role

Create an [IAM role](http://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_create_for-user.html#roles-creatingrole-user-console) that gives Amplitude permission to **write** directly to your AWS Kinesis Stream.

- For Account ID, specify: 358203115967. This is Amplitude's AWS account used to export events.
- Finalize the role without assigning any policies.
- The Trust Relationships for the new role should look like this:

    ```json title="Trust Relationships"
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::358203115967:root"
          },
          "Action": "sts:AssumeRole"
        }
      ]
    }
    ```

#### 3. Create an IAM policy

1. Create an [IAM Policy](http://docs.aws.amazon.com/IAM/latest/UserGuide/access_policies_create.html) to give Amplitude permission to write to your Kinesis Stream.
2. Select the **Create Policy from JSON** option and use the following template policy in the Policy Document field. Change `{account-id}` to your account ID, and replace `{region}` and `{stream-name}` with the applicable values. Also replace `{role-name}` with the role you just created.

    ```json
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "kinesis:PutRecord",
                    "kinesis:PutRecords",
                    "iam:SimulatePrincipalPolicy"
                ],
                "Resource": [
                    "arn:aws:kinesis:{region}:{account-id}:stream/{stream-name}",
                    "arn:aws:iam::{account-id}:role/{role-name}"
                ]
            }
        ]
    }
    ```

3. Assign the new policy to the role.
      1. Open the role.
      2. Select the **Attach Policies** option, and select the new policy.

Make note of the role ARN, stream region, and stream name. You need these to set up the destination in Amplitude.

### Amplitude setup

Create a Kinesis destination in Amplitude.

1. In Amplitude Data, click **Catalog** and select the **Destinations** tab.
2. In the Warehouse Destination section, click **Kinesis Data Stream**.
3. Enter a sync name, then click **Create Sync**.
4. Click **Edit**, then enter your AWS region, stream name, and role name (ARN) you created during Kinesis setup.
5. Use the *Send events* filter to select the events you want to send. You can send all events, but Amplitude recommends choosing the most important ones.
6. When finished, enable the destination and save.
