Amazon Kinesis Firehose gives you an easy and reliable way to load your streaming data into data lakes, data stores, and a host of other analytics tools. It is a fully-managed service that can be scaled automatically to match the load and throughput of your data, without requiring any additional administration.
RudderStack supports Amazon Kinesis Firehose as a destination where you can seamlessly send your event data.
Getting started
RudderStack supports sending event data to Kinesis Firehose via the following connection modes:
Connection Mode | Web | Mobile | Server |
---|---|---|---|
Device mode | - | - | - |
Cloud mode | Supported | Supported | Supported |
Once you have confirmed that the source platform supports sending events to Kinesis Firehose, follow these steps:
- From your RudderStack dashboard, add the source. Then, from the list of destinations, select Amazon Kinesis Firehose.
- Assign a name to your destination and click Continue.
Connection settings
To successfully set up Kinesis Firehose as a destination, you need to configure the following settings:
- AWS Region: Enter the AWS region in which you have created the Kinesis Firehose stream. This is a required field.
- Role-based Authentication: Enable this setting to use the RudderStack IAM role for authentication. For more information on creating an AWS IAM role for RudderStack, refer to this guide.
- IAM Role ARN: Enter the ARN of the IAM role.
- If Role-based Authentication is disabled, you need to enter the AWS Access Key ID and AWS Secret Access Key to authorize RudderStack in order to write to the configured stream.
- Mapping event to delivery streams: Use this setting to map the RudderStack Event Name to a Kinesis Firehose Delivery Stream.
Sending events to Kinesis Firehose
RudderStack supports sending the identify
, page
, and track
events to specific Kinesis Firehose streams by configuring them in the dashboard.
You can also send an event type
as page
, identify
, or track
. For the track
events, you can specify the event name based on the event name in the payload. For example:
- If the event name is
page
, RudderStack sends all the events with thetype
set topage
. - If event name is
Product Added
, RudderStack sends all the track events with theevent
asProduct Added
.
*
as the event name in the dashboard settings.Page
or page
before sending it to the Firehose stream.Policy permissions
To use the Firehose destination with RudderStack correctly, you must have a Firehose stream created in AWS. For more information on creating a Kinesis Firehose data delivery stream, refer to this AWS documentation.
You also need to create an IAM role and attach the policy containing the necessary permissions (PutRecord
) for RudderStack to write to the stream.
- To create an IAM role, follow the instructions on Creating an IAM role.
- For more information on creating an IAM policy, refer to this AWS documentation.
A sample permissions policy that allows a user to send event data into Kinesis Firehose is shown below:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecord" ], "Resource": [ "arn:aws:firehose:{region}:{account-id}:stream/{stream-name}" ] } ]}
FAQ
How does event mapping work with the delivery stream?
- If there is no delivery stream set for an event in the dashboard settings, RudderStack will not send the event to the Firehose stream.
- If an event is set with a delivery stream, RudderStack sends the payload to the configured delivery stream.
- If you have set the event
type
, Event Name, and*
for mapping purposes, RudderStack gives the topmost priority to the event name, followed bytype
, and then*
. For example, if the type of event istrack
and Event Name isProduct Added
, RudderStack does the mapping as shown:
Then all the events go to the stream mapped with Product Added
.
Contact us
For more information on the topics covered on this page, email us or start a conversation in our Slack community.