Kinesis Firehoseを用いてRedshiftへデータを転送する
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 クラスターにデータがロードされます。
どういったデータフローになるかというと
- kinesisに対してログを送信
- kinesisがデータを受け取り、s3にデータを転送
- 転送後にkinesisが
COPY
でredshiftへデータをロード
参考リンク
比較ブログ
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 により生成されたマニフェストファイルが保存されます。