PMする上で必要になってきたのでおさらい
Amazon Kinesis Data Firehoseとは?
リアルタイムでデータを収集し、他のAWSサービスやデータストアに転送するための完全マネージドサービス。
大量のデータをリアルタイムに取り込み、最小限の設定で簡単に保存・分析環境へとデータを送信できる。
Firehoseの主な特徴
-
リアルタイムデータ転送
- データをリアルタイムでストリーミングし、最短で数秒以内に転送。
- 例: ログデータ、IoTデータ、クリックストリーム。
-
シンプルな設定
- データの取り込み、バッファリング、転送が簡単に設定可能。
- コードを書く必要がほとんどない。
-
柔軟な転送先
- Amazon S3: データを長期保存。
- Amazon Redshift: データウェアハウスでの分析。
- Amazon OpenSearch Service(旧 Elasticsearch Service): データの検索・可視化。
- CloudWatch Logs: ログデータのモニタリング。
- サードパーティツール: 独自のエンドポイントに転送。
-
データ変換と処理
- AWS Lambdaを統合して、転送前にデータを加工やフィルタリング。
-
スケーラビリティ
- 自動的にスケールして、数MBから数GBのデータを処理可能。
-
課金体系
- 使用したデータ量に基づく従量課金制。
Firehoseの主な用途
1. ログデータの収集と保存
- シナリオ: Webサーバーやアプリケーションからのログを収集し、Amazon S3に保存。
-
特徴:
- 簡単にスケーラブルなログ収集パイプラインを構築可能。
- 保存したデータはAthenaやRedshiftで分析。
2. IoTデータの処理
- シナリオ: センサーやIoTデバイスからのデータをリアルタイムで収集。
-
特徴:
- データをAmazon OpenSearch Serviceに転送して可視化。
- Lambdaでデータ加工も可能。
3. アプリケーションのクリックストリーム解析
- シナリオ: ユーザーのWebサイトやアプリでの操作をリアルタイムに収集。
-
特徴:
- Redshiftにデータを送信し、BIツールで分析。
4. 不正アクセスやトラフィックの監視
- シナリオ: ネットワークトラフィックやセキュリティログを分析。
-
特徴:
- データをCloudWatch LogsやOpenSearch Serviceに送信。
Firehoseのデータ転送先と特徴
転送先 | 主な用途 |
---|---|
Amazon S3 | 長期データ保存、バックアップ。AthenaやEMRでの分析に利用。 |
Amazon Redshift | データウェアハウスとして大量データの分析。BIツールと連携。 |
Amazon OpenSearch | データの検索やリアルタイムの可視化(例: Kibanaダッシュボード)。 |
CloudWatch Logs | ログデータのモニタリングと分析。 |
サードパーティサービス | 独自のエンドポイントや外部システムへのデータ転送。 |
Firehoseの導入手順
1. Firehoseデリバリーストリームの作成
- AWSコンソールで「Amazon Kinesis Data Firehose」を開く。
- 「デリバリーストリームを作成」をクリック。
- データ転送先を選択(例: S3、Redshift、CloudWatch Logs)。
2. 転送先の設定
- Amazon S3: 保存先バケットを指定。
- Amazon Redshift: テーブルスキーマとクラスターを設定。
- Amazon OpenSearch Service: ドメインを指定。
3. データ変換(オプション)
- AWS Lambda関数を設定し、転送前にデータを加工。
- 例: JSONデータをCSV形式に変換。
4. バッファ設定
- 転送前にデータを一時的にバッファリング。
- 時間間隔(例: 60秒ごと)またはデータサイズ(例: 5MBごと)で設定可能。
5. データ送信
- アプリケーションやサービスからデータをFirehoseに送信。
- AWS SDKやKinesis Agentを利用。
6. モニタリングと調整
- CloudWatchメトリクスを使って、Firehoseの状態を監視。
- 必要に応じて設定を調整。
Firehoseの料金体系
-
データ処理
-
$0.035/GB
(データの取り込み量に応じた課金)。
-
-
データ変換
- Lambda関数を使用した場合、別途Lambdaの実行料金が発生。
-
転送コスト
- 転送先(例: S3、Redshift)で発生するストレージやクエリ料金。
Firehoseのメリットとデメリット
メリット
-
シンプルで使いやすい
- コード不要で簡単にデータストリーミングを設定可能。
-
リアルタイム処理
- 数秒以内にデータを転送。
-
スケーラブル
- データ量が増加しても自動的にスケール。
-
柔軟なデータ変換
- Lambdaを使ったカスタム変換が可能。
デメリット
-
コスト増加
- データ量が多い場合、処理コストが高くなる。
-
転送先に依存
- データの保存や分析は転送先のサービス(例: S3、Redshift)に依存。
-
制約がある変換
- 複雑なデータ変換には追加のLambda処理が必要。
Firehoseのベストプラクティス
-
データのバッファリング設定
- 転送頻度を調整して、コストを最適化。
-
Lambdaでの事前データ処理
- 必要なデータのみを転送することで効率化。
-
転送先の統合
- 転送先に応じたデータ形式で保存(例: Redshiftなら列指向)。
-
モニタリングの徹底
- CloudWatchでエラーやスループットを監視し、早期に問題を特定。
感想
発注する時にこの辺りの話が出て「?」となったけれど、なんとなくイメージはついた。