AWS認定資格 WEB問題集&徹底解説
クラウドプラクティショナー
AWSサービスの一つであるAmazon Kinesisはどんな内容なのでしょうか?また、AWS認定資格のクラウドプラクティショナー(CLF)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います
1. サービス概要
Amazon Kinesis は、リアルタイムストリーミングデータを収集・処理・分析するためのマネージドサービス群です。 IoTデバイス・アプリログ・クリックストリーム・動画など大量データをミリ秒〜秒単位で処理できます。
Kinesisファミリーは主に以下の4サービスで構成されます。
- Kinesis Data Streams (KDS): 低レイテンシのリアルタイムストリーミングパイプライン。
- Amazon Data Firehose(旧 Kinesis Data Firehose): ストリームデータをS3・Redshift・OpenSearch等に自動配信。2024年に名称変更。
- Kinesis Data Analytics for Apache Flink: Flink/SQLでストリームデータをリアルタイム分析。
- Kinesis Video Streams: 動画データのキャプチャ・処理・保存。
2. 主な特徴と機能
2.1 Kinesis Data Streams(KDS)
- シャード: ストリームの基本単位。1シャード = 書込み 1MB/秒 または 1,000 レコード/秒、読出し 2MB/秒。
- 容量モード:
- プロビジョンドモード: シャード数を手動管理。大量・予測可能なデータ向け。
- オンデマンドモード: AWS が自動スケール。容量計画不要。
- 保持期間: デフォルト 24時間、最大 365日まで延長可能。保持期間内はデータを再読み込み(リプレイ)可能。
- コンシューマー:
- 通常読出し: 1シャードあたり 2MB/秒を複数コンシューマーで共有。
- Enhanced Fan-Out (EFO): コンシューマーごとに専用スループット 2MB/秒。並列読出しに最適。
- Kinesis Client Library (KCL): シャードのバランシング・チェックポイント管理を自動化するクライアントライブラリ。
- Lambda トリガー: KDS をイベントソースとして Lambda を起動(ポーリングモデル)。
2.2 Amazon Data Firehose(旧 Kinesis Data Firehose)
- ストリームデータを完全マネージドでバッファリングして宛先に配信。シャード管理不要。
- 配信先: S3、Amazon Redshift、Amazon OpenSearch Service、Splunk、Datadog、HTTP エンドポイント、MSK(2024年追加)。
- バッファリング: サイズ(1〜128MB)または時間(60〜900秒)でバッファ後に配信。リアルタイムではなく準リアルタイム(Near Real-Time)。
- データ変換: Lambda 関数でレコードを変換してから配信可能(JSON→Parquet 等)。
- KDS のようなコンシューマー開発が不要。ただしデータのリプレイは不可。
2.3 Kinesis Data Analytics for Apache Flink
- KDS または MSK からのストリームデータを Apache Flink アプリで処理・分析。
- Java/Python/Scala で Flink アプリを記述してデプロイ。Flink SQL も利用可能。
- ウィンドウ集計・結合・異常検出などのリアルタイム分析に使用。
- 旧 Kinesis Data Analytics SQL API(2023年末廃止予定)の後継。
2.4 Kinesis Video Streams
- カメラやメディアデバイスから動画をキャプチャし、安全に保存・再生・分析。
- Amazon Rekognition Video や SageMaker と統合してリアルタイム動画分析が可能。
3. アーキテクチャおよび技術要素
典型パターン 1: KDS → Lambda → DynamoDB(リアルタイム処理)
- プロデューサー(IoTデバイス・アプリ・EC2)が PutRecord/PutRecords で KDS に送信。
- Lambda がシャードをポーリングしてレコードを処理。
- 処理結果を DynamoDB・S3・SNS などに書き込む。
典型パターン 2: KDS → Firehose → S3 → Athena(ログ分析基盤)
- ログが KDS に流れ込む。
- Firehose がバッファリングして S3 に Parquet 変換後に保存。
- Athena または Glue + Redshift Spectrum でクエリ分析。
パーティションキーを使いシャードにルーティング。同一キーのレコードは同一シャードに収まり順序保証される。
4. セキュリティと認証・認可
- IAM ポリシー: kinesis:PutRecord / GetRecords / DescribeStream など操作単位で制御。
- 保存時暗号化 (SSE): KMS マスターキーでシャードデータを暗号化。
- 転送時暗号化: TLS/HTTPS。
- VPC エンドポイント(PrivateLink): インターネット経由せず VPC 内から KDS・Firehose に接続。
- CloudTrail 統合: API 操作の監査ログを自動記録。
5. 料金形態
- Kinesis Data Streams(プロビジョンド): シャード時間 + PUT ペイロードユニット(25KB 単位)。
- Kinesis Data Streams(オンデマンド): 取り込み GB + 取り出し GB 単位課金。プロビジョンドより割高だが管理不要。
- Amazon Data Firehose: 取り込みデータ GB 単位。データ変換(Lambda 呼出し)は別途 Lambda 料金。
- Kinesis Data Analytics: KPU(Kinesis Processing Unit)時間。1 KPU = 4vCPU + 50GB メモリ。
- 保持期間延長(KDS): 7日超の延長は追加料金(シャード時間単位)。
6. よくあるアーキテクチャ・設計パターン
- リアルタイムログ分析: アプリ → KDS → Lambda(処理)→ OpenSearch / DynamoDB。ダッシュボードでリアルタイム可視化。
- ストリーミング ETL: KDS → Firehose(Parquet変換)→ S3 → Glue Catalog → Athena / Redshift。
- クリックストリーム分析: Web/App → Firehose → S3 → Athena。サーバーレスで完結。
- IoT データ収集: IoT Core → KDS → Lambda → DynamoDB / InfluxDB。
- リアルタイム集計(Flink): KDS → Kinesis Data Analytics(ウィンドウ集計)→ S3 / DynamoDB。
- 動画分析: カメラ → Kinesis Video Streams → Rekognition Video → SNS アラート。
7. 設定・デプロイ手順(ハンズオン例)
- KDS ストリームを作成(プロビジョンドモード・シャード数 2、または オンデマンド)。
- プロデューサーから AWS SDK / CLI で PutRecord を送信し動作確認。
- Lambda 関数を KDS のイベントソースとして設定(バッチサイズ・開始位置を指定)。
- Firehose 配信ストリームを作成し、ソースを KDS、宛先を S3 に設定。Lambda 変換を有効化。
- CloudWatch Metrics で IncomingRecords / GetRecords.IteratorAgeMilliseconds を監視。
- Enhanced Fan-Out コンシューマーを登録し、専用スループット 2MB/秒 を確認。
8. 試験で問われやすいポイント
8.1 KDS vs Firehose の使い分け(最頻出)
Q: リアルタイム処理(Lambda / KCL でカスタム処理)が必要な場合は?
A: Kinesis Data Streams。コンシューマーを自前で実装し、低レイテンシ処理が可能。データのリプレイもできる。
Q: ストリームデータを S3 や Redshift に「ほぼリアルタイム(Near Real-Time)」で配信したいだけの場合は?
A: Amazon Data Firehose。コンシューマー開発不要。バッファリングがあるため純粋なリアルタイムではない。
8.2 KDS vs SQS の使い分け
Q: 同一データを複数のコンシューマーが並行して読む(Fan-out)必要がある場合は?
A: Kinesis Data Streams。SQS はメッセージを消費すると削除されるため、複数コンシューマーでの再読み込みには不向き。
Q: パーティションキー内での順序保証が必要な場合は?
A: KDS(同一パーティションキーは同一シャードに格納)。SQS FIFO キューはキュー単位の順序だが 1シャード相当。
8.3 シャード計算
Q: 1秒あたり 5MB のデータ書込みが必要な場合、最低何シャード必要か?
A: 5シャード(1シャード = 1MB/秒 書込み)。読出しは 1シャード = 2MB/秒。
8.4 IteratorAge と遅延の対処
Q: GetRecords.IteratorAgeMilliseconds が増加している場合の原因と対処は?
A: コンシューマーの処理が追いついていない(シャード不足または Lambda の並列度不足)。シャード追加またはEnhanced Fan-Outを検討。
8.5 Amazon Data Firehose の名称変更(2024年)
Q: 「Kinesis Data Firehose」と「Amazon Data Firehose」は同じサービスか?
A: 同じ。2024年に名称が Amazon Data Firehose に変更された。機能に変更はない。試験問題では旧名称で出ることもある。