Fringe81アドベントカレンダー2019の20日目です。
tuaaasa a.k.a ちゃりがお送りします。
始めに述べておきますが、私は半年ほど前からAWSを使い始めた初心者です。
そんな私が先日業務内で、
AWS Kinesis
の機能の一つであるKinesis Data Firehose
に触れました。
今回はその感想をまとめます。
CloudFormationを用いてデプロイしたので、合わせてそちらも話します。
Kiensis
https://aws.amazon.com/jp/kinesis/
より以下抜粋
ストリーミングデータをリアルタイムで収集、処理、分析することが簡単になる
また、完全マネージドサービスなので、ストリームデータをKinesisに任せちゃえばいい感じにやってくれます。
本題のFirehose
https://aws.amazon.com/jp/kinesis/data-firehose/
より以下抜粋
今回私はRedshift
にロードしました。
嬉しいこと
完全マネージドサービスのおかげで、難しいことを考える必要がなかった
データロードの重複防止とかエラー時のリトライとか、煩わしいことをFirehoseがやってくれる点非常に助かりますね。
また、エラーログも残してくれるのもうれしいです。
つらいこと
Redshiftへのパブリックアクセスを可能にしてあげなければいけない
Amazon Redshift クラスターへの VPC アクセス
これですね。
不正データが1件でも入ってくると直近の正常なデータも全て欠損してしまう
FirehoseでRedshiftにロードする場合、
- 一旦S3にアップロード
-
manifest
という複数のデータを一つにまとめたデータの集合を作成 -
manifest
をCOPYコマンドでロード
という形をとっています。
これのおがげで不正データが含まれるmanifest
はエラー対象となりロードされないのですね。
対処法
1回COPYコマンドあたり、1万件まではエラー処理させないオプションを追加することで正常なデータのみロードさせました。
ただ、1万1件目はエラーとなってしまうのと、
不正データの内容がFirehoseでロギングできないことには注意が必要です。
おまけ
CloudFormationで設定できない項目がある
RedshiftにロードするためのS3アップロードとは別に、
ストリームデータのバックアップができる。
現在()この機能をCloudFormationでは設定できない模様。(以下2019年10月15日に返答されたサポートメールの内容)
おわり
実際に稼働していないので、実績ができたらまた報告しようかなと思います。
ありがとうございました。
参考
CloudWatch LogsのログをprivateなVPCにあるRedshiftに投入
AWS Kinesis Firehoseでログ欠損しないために