
【VPC外リージョンサービス】
Kinesis Data Firehose は、ストリームデータの取り込みから変換、配信までをフルマネージドで実行するサービスです。
データは Delivery Stream(デリバリーストリーム) を通じて流れ、Source(ソース) から受け取ったデータを、設定に基づいてDestination(デスティネーション) に配信します。
主なデスティネーションには、S3、OpenSearch、Redshift、Splunk(スプランク) などがあり、これらにほぼリアルタイムでデータを届けることができます。Buffering(バッファリング) の条件(サイズや時間)を柔軟に設定でき、転送前には Compression(圧縮) や暗号化、さらに Lambda を利用した Transformation(変換) によって、ETL処理を簡素化できます。
スケーリングは自動で行われるため、運用負荷は最小限に抑えられます。また、Kinesis Data Streams や Kinesis Data Analytics と連携することで、データ収集からリアルタイム分析までをシームレスに統合できます。
Kinesis Data Firehoseは、ログデータ、メトリクス、IoTデータ などを効率的に収集・変換・保存する基盤として、多くのシステムで定番のサービスとなっています。
重要用語
関連サービス
Kinesis Data Analytics
ユースケース
| S3へのログ・イベントデータ自動蓄積 | アプリケーションやKinesis Data StreamsからのデータをほぼリアルタイムでS3に自動配信し、データレイクの入口として利用する。 |
| OpenSearchへのログ転送 | アプリケーションログやアクセスログをFirehose経由でOpenSearchドメインに送り、全文検索や可視化に活用する。 |
| データ形式変換と圧縮の自動化 | 取り込んだJSONログをParquet形式に変換したり圧縮したうえでS3に保存し、後続のAthenaやEMRから効率よく分析できるようにする。 |
ベストプラクティス
| バッファサイズと間隔の調整 | スループットとレイテンシに応じてバッファ設定を最適化する。 |
| 失敗レコードのバックアップ | 配信に失敗したレコードをS3に保存し、後から再処理できるようにする。 |
| 変換機能の活用 | Lambda変換でフォーマット変換やマスキングを行い、後続処理を簡略化する。 |
高可用性・バックアップ・リトライ
| 高可用性・バックアップ・リトライ設計のポイント |
|---|
| 【デフォルト】AWS内部で冗長化 ・配信メカニズム ・データ受信エンドポイント ・データバッファリング層 ・データ変換処理(Lambda統合時) ・S3バックアップ(オプション) |
| 【自動リトライ】デフォルト データ配信失敗時、最大24時間、5秒ごとに自動リトライを実行 |
セキュリティ
| 関連サービス | 設定内容 |
|---|---|
| CloudTrail(操作履歴の記録・監査・追跡) | 【自動記録】 作成・更新・削除・設定変更は自動記録される。(コントロールプレーンAPI) データ操作は追跡できない(データプレーンAPI) |
| Config(リソースの構成状態・設定変更を記録) | 【Configが有効な場合】 配信ストリーム設定変更履歴・暗号化/送信先設定の準拠評価 |
| GuardDuty(脅威を自動検出) | 【GuardDutyが有効な場合】 配信ストリーム設定変更などのAPI異常検知 |
Kinesis Data Firehose が実行ロールを引き受ける典型的な連携パターン
| 実行ロールを介して連携するサービス | 実行ロールにアタッチするポリシー |
|---|---|
| CloudWatch Logs | logs:CreateLogGroup logs:CreateLogStream logs:PutLogEvents |
| S3 | s3:ListBucket s3:GetObject s3:PutObject s3:GetBucketLocation s3:AbortMultipartUpload s3:GetObjectVersion s3:ListBucketMultipartUploads |
| Lambda | lambda:InvokeFunction lambda:GetFunctionConfiguration |
| Glue | glue:GetTable glue:GetTableVersion glue:GetTableVersions glue:GetDatabase glue:GetDatabases |
| Redshift | redshift:DescribeClusters |
| OpenSearch | es:DescribeElasticsearchDomain es:DescribeElasticsearchDomains es:DescribeElasticsearchDomainConfig es:ESHttpPost es:ESHttpPut ec2:DescribeVpcs ec2:DescribeSubnets ec2:DescribeSecurityGroups ec2:CreateNetworkInterface ec2:CreateNetworkInterfacePermission ec2:DescribeNetworkInterfaces ec2:DeleteNetworkInterface |
| Secrets Manager | secretsmanager:GetSecretValue |
| KMS | kms:Decrypt kms:GenerateDataKey |
信頼ポリシー:Kinesis Firehose
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "firehose.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
ログ・監視
標準メトリクス
| メトリクス名 | 説明 |
|---|---|
| BackupToS3.Records | S3バックアップレコード数 |
| DeliveryToHTTP.Records | HTTP配送レコード数 |
| DeliveryToS3.Bytes | S3配送バイト数 |
| DeliveryToS3.Records | S3配送レコード数 |
| DeliveryToHTTP.Failures | HTTP配送失敗数 |
| DeliveryToHTTP.Success | HTTP配送成功数 |
| DeliveryToS3.Failures | S3配送失敗数 |
| DeliveryToS3.Success | S3配送成功数 |
| ThrottledGetRecords | スロットル発生回数 |
制限値(固定値/ハードリミット/ソフトリミット)
| 固定値 | 制限値 |
|---|---|
| バッファサイズ | 1-128 MiB |
| バッファ間隔 | 60-900秒 |
| ハードリミット | 制限値 |
|---|---|
| レコードサイズ | 最大1 MiB |
| ソフトリミット | 制限値 |
|---|---|
| 配信ストリーム数/リージョン | 50 |
| データレート | 5,000レコード/秒 |
AWS CLIのサンプルコード
CloudFormationのサンプルコード
Terraformのサンプルコード
料金計算
| 課金項目 | 説明 |
|---|---|
| データ取り込み | 取り込まれたデータ量(GB単位) |
| S3パーティショニング使用時 | データ量(GB単位) |
| VPC配信 | VPCエンドポイント経由の配信時間 |
| データ変換 | Lambda変換の実行料金 |
| フォーマット変換 | ParquetやORCへの変換(GB単位) |