【AWS入門】Amazon Kinesis Firehoseでデータ変換を簡単に

はじめに

前回は『Amazon Athena編~QuickSightからの接続を試してみる~』と題して、Amazon AthenaにQuickSightからの接続を試してみました。

今回は『【AWS入門】Amazon Kinesis Firehoseでデータ変換を簡単に』と題して、Amazon Kinesis Firehoseにデータ変換を試してみたいと思います。

本記事の概要

  • Amazon Kinesis Firehoseのユースケースをご紹介いたします
  • Amazon Kinesis Firehoseを使用し、Apache logをCSVにするBlueprintを試してみます
  • 結論、CSVに変換されました!

ユースケース

機械学習、分析、その他のアプリケーションに用いる動画、音声、アプリケーションログ、ウェブサイトのクリックストリーム、IoT テレメトリーデータをリアルタイムで取り込めます。

動画分析で、Amazon Kinesis を使うと、家庭、オフィス、工場、公共施設で、カメラを装備したデバイスからの動画を AWS に安全にストリーミングできます。これらのビデオストリームは動画再生、セキュリティモニタリング、顔検出、機械学習、その他の分析に使用できます。

Amazon Kinesis Firehose Data Transformation

Amazon Kinesis Firehose ではData TransformationとしてLambdaとの連携によるデータ変換機能を利用することが出来るようになりました。

こちらを利用する事でApache logをCSV形式やJSON形式に変換するなどが簡単に出来るようになります。

Blueprintとして以下が既に用意されております。

今回はApache logをCSVにするBlueprintを試してみたいと思います。

・General Firehose Processing — 必要な処理が記述してあるサンプル

・Apache Log to JSON — Apache log を JSON 形式に変換

・Apache Log to CSV — Apache log を CSV 形式に変換

・Syslog to JSON — Syslog を JSON 形式に変換

・Syslog to CSV — Syslog を CSV 形式に変換

1.Kinesis Firehose の準備

最初にKinesis Firehose を設定していきます。

東京にはまだ来てないのでVirginiaで進めていきます。

image.png

2.Data transformation の設定

次の設定画面でData transformationの設定を進めていきます。

「Enable」を選択して「Create a new Lambda function」をクリックします。

image.png

表示されたBlueprintからApache Log to CSVを選択します。

image.png

コードが登録された状態でLambda作成画面に進みます。

image.png

LambdaにKinesis Firehoseへの必要権限を付与して作成します。

image.png

Kinesis Firehoseの設定画面で先程作成したLambdaを選択します。

image.png

また、Kiensis Firehose側でもLambdaを呼ぶなどの必要権限を付与して作成します。

image.png

3.確認してみる

それでは実際に確認してみます。

次のコマンドでKinesis FirehoseにApache Logをテスト送信します。

1$ aws firehose put-record --delivery-stream-name kctest --record Data=file://test.log2$ cat test.log3{45"Data": "127.0.0.1 - - [10/Feb/2017:17:13:20 +0900] \"GET / HTTP/1.1\" 200 11764 \"-\" \"curl/7.35.0\""6}

しばらく待つと処理された結果がS3に溜まります。

image.png
中身はCSVに変換されてますね!

中身はCSVに変換されてますね!

image.png

終わりに

今回はAmazon Kinesis Firehoseを使用し、Apache logをCSVにするBlueprintを試してみました。

現在は、東京リージョンでも使えるようになっておりますので、ぜひ試してみてください。

個人的には、Kinesis Streamsとは違い、EC2からポーリングしたりLambdaのコードを書く必要がないのがうれしいポイントです。

では、また!

この記事を書いた人

aws-recipe-user