Kinesis Firehose and AWS Redshift Data Streaming: Requirements and Solutions

The Data Streaming Process

Question

A company is planning on using Kinesis Firehose to stream data to an AWS Redshift cluster.

The cluster will be hosted in a VPC.

Which of the following is required to ensure the data can be sent over from Kinesis to AWS Redshift? Choose 2 answers from the options given below.

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

Answer - B and D.

The AWS Documentation mentions the following.

If your Amazon Redshift cluster is in a virtual private cloud (VPC), it must be publicly accessible with a public IP address.

Also, grant Kinesis Data Firehose access to your Amazon Redshift cluster by unblocking the Kinesis Data Firehose IP addresses.

Since this is clearly mentioned in the AWS Documentation, all other options are incorrect.

For more information on controlling access to firehose, please refer to the below URL.

https://docs.aws.amazon.com/firehose/latest/dev/controlling-access.html

To ensure that data can be streamed from Kinesis Firehose to AWS Redshift hosted in a VPC, we need to ensure the following:

  1. Ensure that the AWS Redshift cluster allows ingress traffic from Kinesis Firehose:

To do this, we need to configure the security group associated with the Redshift cluster to allow incoming traffic from the IP address range of the Kinesis Firehose delivery stream. We can do this by creating an inbound rule for the security group associated with the Redshift cluster that allows traffic on the port used by Redshift (default is 5439) from the Kinesis Firehose delivery stream IP range.

  1. Ensure that the Kinesis Firehose delivery stream can send data to the Redshift cluster:

To do this, we need to ensure that the Kinesis Firehose delivery stream is configured to deliver data to the Redshift cluster. We can do this by creating a new delivery stream and selecting Redshift as the destination. We then need to provide the necessary connection information, such as the endpoint URL, port, and credentials.

We do not need to ensure that the Redshift cluster is provided with a public IP since it is hosted within a VPC. However, we do need to ensure that the Redshift cluster is provided with a private IP address so that the Kinesis Firehose delivery stream can send data to it. Therefore, option C is correct. Option D is incorrect as we do not need to provide a public IP for the Redshift cluster.

Therefore, the correct answers are A and C.