Open3

Kinesis Firehoseを用いてRedshiftへデータを転送する

i-hrmi-hrm

kinesis firehoseからredshiftへデータ投入までの処理の流れを確認する

kinesisはストリーム処理向けのメッセージングサービス
kinesisで必要な設定を行うことでリアルタイムにredshiftへデータを投入することが出来る

kinesis firehoseに必要な権限は

  • s3へのデータ書き込み権限
  • redshiftのsecurity groupへのアクセス権限
  • redshiftへのログインとデータロード権限

RedshiftへのデータロードにS3を使用する理由についてはFAQにも記載がある

Q: Amazon Redshift を送信先として選択する際に、Amazon S3 バケットを用意する必要があるのはなぜですか?
Amazon Redshift を送信先として選択した場合、Amazon Kinesis Data Firehose ではまず Amazon S3 バケットにデータが送信されます。その後 Redshift COPY コマンドが実行され、S3 バケットから Redshift クラスターにデータがロードされます。

https://aws.amazon.com/jp/kinesis/data-firehose/faqs/

どういったデータフローになるかというと

  1. kinesisに対してログを送信
  2. kinesisがデータを受け取り、s3にデータを転送
  3. 転送後にkinesisが COPY でredshiftへデータをロード

参考リンク

https://docs.aws.amazon.com/ja_jp/firehose/latest/dev/create-destination.html#create-destination-redshift
https://dev.classmethod.jp/articles/load-data-to-redshift-through-firehose/
https://www.slideshare.net/HajimeSano1/kinesisredshiftkclfirehose

i-hrmi-hrm

Kinesis FirehoseがRedshiftへどのようにデータロードしているか、挙動確認

Kinesis FirehoseからRedshiftへデータロードを設定した際に、ロードもとのデータが存在するS3にmanifestがKinesisによって自動で作成される
Kinesisはそのmanifestを参照し、その情報を元にKinesisはRedshiftに COPY を実行する

Q: Amazon S3 バケットのマニフェストフォルダとは何ですか?
送信先が Amazon Redshift の場合、Amazon S3 オブジェクトを Redshift クラスターにまとめてロードするために、Amazon Kinesis Data Firehose にマニフェストファイルが作成されます。マニフェストフォルダには、Firehose により生成されたマニフェストファイルが保存されます。

https://aws.amazon.com/jp/kinesis/data-firehose/faqs/