AWS認定資格 WEB問題集&徹底解説

機械学習エンジニア–アソシエイト

Amazon Kinesis の概要と試験出題ポイントは?

AWSサービスの一つであるAmazon Kinesisはどんな内容なのでしょうか?また、AWS認定資格の機械学習エンジニア-アソシエイト(MLA)に合格するためには、サービスのどんなポイントを押さえておけばよいのでしょうか?
ここでは、そんなあなたの疑問に回答していきたいと思います

Amazon Kinesis 徹底解説 | AWS認定試験の頻出ポイントまとめ

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(リアルタイム処理)

  1. プロデューサー(IoTデバイス・アプリ・EC2)が PutRecord/PutRecords で KDS に送信。
  2. Lambda がシャードをポーリングしてレコードを処理。
  3. 処理結果を DynamoDB・S3・SNS などに書き込む。

典型パターン 2: KDS → Firehose → S3 → Athena(ログ分析基盤)

  1. ログが KDS に流れ込む。
  2. Firehose がバッファリングして S3 に Parquet 変換後に保存。
  3. 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. 設定・デプロイ手順(ハンズオン例)

  1. KDS ストリームを作成(プロビジョンドモード・シャード数 2、または オンデマンド)。
  2. プロデューサーから AWS SDK / CLI で PutRecord を送信し動作確認。
  3. Lambda 関数を KDS のイベントソースとして設定(バッチサイズ・開始位置を指定)。
  4. Firehose 配信ストリームを作成し、ソースを KDS、宛先を S3 に設定。Lambda 変換を有効化。
  5. CloudWatch Metrics で IncomingRecords / GetRecords.IteratorAgeMilliseconds を監視。
  6. 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 に変更された。機能に変更はない。試験問題では旧名称で出ることもある。