1. tuaaasa

    Posted

    tuaaasa
Changes in title
+AWS初心者がFirehoseを使ってみたので感想
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,85 @@
+[Fringe81アドベントカレンダー2019](https://qiita.com/advent-calendar/2019/fringe81
+)の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/
+より以下抜粋
+
+>ストリーミングデータをデータレイクやデータストア、分析ツールに確実にロードする最も簡単な方法です。
+> ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376573/eb17486a-d376-8f50-fe1f-573959b46646.png)
+
+今回私は`Redshift`にロードしました。
+
+# 嬉しいこと
+
+#### 完全マネージドサービスのおかげで、難しいことを考える必要がなかった
+データロードの重複防止とかエラー時のリトライとか、煩わしいことをFirehoseがやってくれる点非常に助かりますね。
+また、エラーログも残してくれるのもうれしいです。
+
+# つらいこと
+
+#### Redshiftへのパブリックアクセスを可能にしてあげなければいけない
+
+[Amazon Redshift クラスターへの VPC アクセス](https://docs.aws.amazon.com/ja_jp/firehose/latest/dev/controlling-access.html#using-iam-rs-vpc)
+
+これですね。
+
+#### 不正データが1件でも入ってくると直近の正常なデータも全て欠損してしまう
+
+FirehoseでRedshiftにロードする場合、
+
+1. 一旦S3にアップロード
+2. `manifest`という複数のデータを一つにまとめたデータの集合を作成
+3. `manifest`をCOPYコマンドでロード
+
+という形をとっています。
+これのおがげで不正データが含まれる`manifest`はエラー対象となりロードされないのですね。
+
+##### 対処法
+1回COPYコマンドあたり、1万件まではエラー処理させないオプションを追加することで正常なデータのみロードさせました。
+
+![スクリーンショット 2019-12-19 16.52.21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376573/15ce09fa-b3c0-329d-37b7-bd6ca67c9381.png)
+
+ただ、**1万1件目はエラーとなってしまう**のと、
+**不正データの内容がFirehoseでロギングできない**ことには注意が必要です。
+
+
+# おまけ
+#### CloudFormationで設定できない項目がある
+
+RedshiftにロードするためのS3アップロードとは別に、
+ストリームデータのバックアップができる。
+
+現在()この機能をCloudFormationでは設定できない模様。(以下2019年10月15日に返答されたサポートメールの内容)
+
+> <img width="815" alt="Screen Shot 2019-12-03 at 18.06.33.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/376573/0068b2b7-fdbb-0f1b-b96f-582de4ffa12e.png">
+
+
+# おわり
+実際に稼働していないので、実績ができたらまた報告しようかなと思います。
+ありがとうございました。
+
+
+
+# 参考
+[CloudWatch LogsのログをprivateなVPCにあるRedshiftに投入](https://qiita.com/akym03/items/abb8844aba492e2cbd3b)
+[AWS Kinesis Firehoseでログ欠損しないために](https://medium.com/finc-engineering/aws-kinesis-firehose%E3%81%A7%E3%83%AD%E3%82%B0%E6%AC%A0%E6%90%8D%E3%81%97%E3%81%AA%E3%81%84%E3%81%9F%E3%82%81%E3%81%AB-ab262c9ca9fc)
+