AWS KinesisFirehoseとS3、Redshiftの連携方法




どうも高妻です。Twitterでプログラミングのことや暗号通貨のことをつぶやいているのでよかったらフォローしてください。  

Kinesis Firehoseとは

ストリーミングデータを AWS にロードする最も簡単な方法です。ストリーミングデータをキャプチャ、変換して、Amazon Kinesis AnalyticsAmazon S3Amazon Redshift、および Amazon Elasticsearch Service にロードできるので、現在お客様が使用している既存のビジネスインテリジェンスツールやダッシュボードで、ほぼリアルタイムに分析できるようになります。

スマホゲーム業界ではログの種類、ログの量が日々膨大に生成されるので、従来だとログを中継させるログサーバーを準備したり、ログサーバー自身のリソースの管理等をしなければいけませんでした。

Kinesis Firehoseを使えばwebサーバーから直接Firehoseにアップすればいいのでログサーバーの管理が必要なくなり、煩雑な転送処理もしなくて済みます。また、少しの設定でS3とRedshiftに自動でアップロードしてくれるので非常に便利なサービスです。

しかし、Firehoseは2017年6月6日時点ではまだ東京リージョンで使用できないのが残念なところです。なんと2017年8月25日から東京リージョンでもFirehoseが使えるようになりました。これでRedshiftも東京リージョンに作成して問題無くなりますね!

今回はFirehoseが東京リージョンで使用できる前だったのでS3とRedshiftのインスタンスをオレゴンに立てています。正確にはS3はどこのリージョンでもいいのですが、RedshiftはFirehoseと同じリージョンにないと連携ができないので注意してください。

権限設定

3つのサービスの連携では権限付与とセキュリティ設定が肝になります。

  • FirehoseがS3に書き込むための権限付与(ロール設定)
  • FirehoseがRedshiftにアクセスするための設定(Redshiftのセキュリティグループ)

 

FirehoseがS3に書き込むための権限

この権限はFirehoseのストリームを作成するときのロール設定で付与できます。ここでは初期設定でS3に書き込むための権限がついているのでポリシーは変更しなくて大丈夫です。

 

FirehoseがRedshiftにアクセスするための権限

セキュリティグループの設定でFirehoseからのアクセスを許可する必要があります。また、Firehoseをオレゴンに準備した場合、Redshiftも同じリージョンのオレゴンに立てないといけません。

設定はものすごく簡単でRedshiftのセキュリティグループ(初期設定はdeafult VPC)に下記IPとポートを登録してあげるだけです。タイプとプロトコルは自動で設定されます。下記IPはオレゴンにFirehoseを立てた場合なので別リージョンにFirehoseを立てた場合はここを参照してください。

IP: 52.89.255.224/27, Port: 5439(Redshiftのポート)

 

Redshiftへのデータロード

Firehoseへのデータ転送とS3へのロードは下記記事を参考にしてください。

Node.js AWS-SDKを使ったKinesis Firehoseへのデータアップロード

Redshiftへのデータロードを行うにはFirehose側でアクセスするDB名、ユーザー、コピーコマンドオプションを設定します。

 

まとめ

  • S3とRedshiftへのデータロードが簡単に設定できる。
  • Firehoseのロール設定とRedshiftのセキュリティグループ設定が肝。

少しの設定でサービスの連携が簡単に行えるのでぜひ試してみてください。

最後にFirehose関連の記事を下記にまとめました。是非読んでみて下さい。

おすすめ書籍

AWSをこれから使う初心者の方から現在使っている中級者の方までおすすめできる書籍です。内容はVPC、セキュリティグループ、IAMなどの基本的なことからWEBサービスを作るのに欠かせない、EC2、RDS、Route53などの扱い方が丁寧に説明されています。

中級者向けにはWEBサーバのオートスケール、Cloud Watchを使ったモニタリング方法、セキュリティ等について解説されています。手元において困ったときに読むのにちょうどいい一冊になると思います。

 

The following two tabs change content below.

高妻智一

2013年CyberAgent新卒入社 スマホゲームを作る子会社に所属し、サーバーサイドのエンジニアを担当。2年目の終わりから新規子会社の立ち上げに参加し、サーバーサイドのエンジニアリーダーとしてサービースのリリースから運用までを担当。 現在はTwitterなどSNSのテキスト解析を行うソーシャルメディア分析のサーバーサイドを開発中。言語はNode.js、Kotlinを使用。






よく読まれている関連記事はこちら



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です