1. Amazon Kinesisとは
リアルタイムで大量のストリームデータ(アプリケーションログ、IoTセンサー情報、クリックストリームなど)を収集・処理・分析できるAWSサービス群です。
【注意点】
S3バケットに保存されたデータを解析する場合は、Kinesisのストリーム処理は不要です。
保存済みデータの分析にはAthenaやGlueなどを使います。
2. Amazon Kinesis Data Streams
ストリームデータをリアルタイムで受信・処理できるマネージドサービスです。
データは重複なく、到着順序を保ったまま配信されます。
【注意点】
送信先としてS3はサポートしていません。
2.1. シャード(Shard)
2.1.1. 一般概念としてのシャード
- データベースやストリーム処理における「データを水平分割する単位」。
- MongoDBやApache Kafkaなどでも使われる汎用概念です。
2.1.2. AWSにおけるシャード(Kinesis Data Streams)
- ストリーム内の並列処理の最小単位。
- 1シャードあたり:
- 最大1MB/秒 または 1,000レコード/秒の取り込み能力。
- シャード数を増やすことでスループットをスケールアウトできます。
【注意点】
Amazon Kinesis Data Streams単体で写真や大容量バイナリデータを直接ストリーム処理する設計は一般的ではありません。
(メタデータなら可能ですが、本体データは通常S3等に保存します)
3. Amazon Kinesis Data Firehose
ストリームデータをリアルタイムまたはほぼリアルタイムで、以下の保存先に自動配信します。
- Amazon S3
- Amazon Redshift
- Amazon OpenSearch Service
- Splunk
- HTTPエンドポイント
【注意点】
Amazon Kinesis Data Firehoseは、Amazon DynamoDBに直接配信できません。
特徴まとめ
- Firehose単体ではシンプルな変換処理(形式変換、圧縮など)のみ対応。
- より複雑なデータ変換にはLambda関数を連携させる必要があります。
- 最近ではApache ParquetやApache ORCといった列指向フォーマットへの変換にも対応。
【注意点】
Firehoseは"完全リアルタイム"ではありません。数秒〜数分単位でバッファリングされてから配信されます。
【注意点】
S3イベント通知によって直接Firehoseを呼び出すことはできません。
4. Amazon Managed Service for Apache Flink
以前の名称:Amazon Kinesis Data Analytics
Apache Flinkベースのマネージドサービスで、リアルタイムストリーム処理・状態管理・イベント駆動型アプリケーション開発が可能です。
特徴まとめ
- SQLクエリやApache Flink APIによる高度なストリームデータ処理が可能。
- リアルタイム不正検知(fraud detection)、セッションウィンドウ管理、複雑イベント処理(CEP)などに最適。
【注意点】
Flinkを使えば不正検知や複雑な状態管理ロジックも実装可能です。
「不正分析ができない」というのは誤りです。
※Apache Flinkは、分散ストリーム処理プラットフォームのひとつのOSS。
5. 関連用語(参考)
5.1. RTSP(Real Time Streaming Protocol)
- 音声・映像などメディアストリーミングを制御するプロトコル。
- Kinesisが扱う"テキスト・イベントストリーム"とは用途が異なる。