どうもこんにちは。

最近AWSについて勉強しているのですが、Kinesisには3つ(正確にはビデオ用のKinesis Video Streamsってのもあるみたいだけど)のサービスがあり、どう使い分ければいいのかよくわかりません。

  • Kinesis Data Streams
  • Kinesis Data Firehose
  • Kinesis Data Analytics

そこで、自分向けにまとめました。

Kinesis Data Streams

イメージ図

名前の通りストリーム。 リアルタイム処理が必要なデータをここに流して、任意のサービスと連携することでデータ処理が可能。

これ単体でなにかできるというよりは、SQSみたいに他のサービスで処理するためのサービス、みたいなイメージ。 (SQSはポーリングが必要だけど、こっちは後続のサービスにそのまま流す感じ)

Kinesis Data Firehose

主にStreamsから来たデータの変換を行って、S3とかHTTPリクエストとかにして配信するサービス。

配信の際はデータをまとめて配信します。

配信するための条件として「バッファサイズ」「バッファ間隔」というものがあり、どちらかの条件が満たされた場合に配信を行うという仕組みになっています。

設定可能な値範囲は以下のとおりです。

  • バッファサイズ: 最小: 1 MiB、最大: 128 MiB。推奨: 5 MiB。
  • バッファ間隔:最小: 60 秒、最大: 900 秒。推奨: 300 秒。

データの変換にLambdaを指定できますが、そこではまとまったデータではなく1つのデータが渡されます。

なので、一つのデータを変換したいだけなら単にStreams + Lambdaで構成するのが早いです。 (もっと言えばStreams通さなくていいこともあるけど、まぁケースバイケース)

Kinesis Data Analytics

リアルタイムに情報を分析して出力するサービスです。

内部的には「Apache Flink」を利用しています。

入力はS3やStreamsが主になっていて、出力もS3やStreamsに行うようになっています。

具体的なことは正直パッと見じゃわからんけど、この記事とか参考になるかも?

さいごに

Analyticsむずい