[アップデート] AWS CDK で Amazon Data Firehose の S3 出力時のタイムゾーン設定が可能になりました
こんにちは、製造ビジネステクノロジー部の若槻です。
AWS CDK の最新のリリース v2.205.0 で、Amazon Data Firehose の S3 出力時のタイムゾーン設定が可能になりました。
kinesisfirehose: support custom time zone settings for S3 destination (#34738) (2bbe762), closes #34737
Amazon Data Firehose では既存では S3 出力時の !{timestamp:yyyy/MM/dd/HH}/
のようなタイムスタンプベースのプレフィクスのタイムゾーンは UTC 固定でしたが、昨年のアップデートにより、任意のタイムゾーンを指定できるようになりました。
そして今回 AWS CDK の L2 Construct でも Firehose の S3 出力時のタイムゾーン設定に対応しました。
試してみた
CDK パッケージのアップデート
AWS CDK モジュールを v2.205.0 以上にアップデートします。
npm i aws-cdk-lib@latest aws-cdk@latest
CDK コード
AWS CDK で、Firehose の S3 出力時のタイムゾーン設定を行うコードは以下のようになります。S3Bucket
コンストラクトクラスで timeZone
プロパティが利用可能になっているので、任意のタイムゾーンを指定できます。このタイムゾーン設定はデータ及びエラー出力の両方に適用されます。
import * as cdk from "aws-cdk-lib";
import * as s3 from "aws-cdk-lib/aws-s3";
import * as kinesisfirehose from "aws-cdk-lib/aws-kinesisfirehose";
import { Construct } from "constructs";
export class MainStack extends cdk.Stack {
constructor(scope: Construct, id: string) {
super(scope, id);
/**
* S3 バケットの作成
*/
const bucket = new s3.Bucket(this, "Bucket");
/**
* Kinesis Firehose の S3 バケット出力の設定
*/
const s3Destination = new kinesisfirehose.S3Bucket(bucket, {
dataOutputPrefix: "!{timestamp:yyyy/MM/dd/HH}/",
errorOutputPrefix:
"!{firehose:error-output-type}/!{timestamp:yyyy/MM/dd/HH}/",
timeZone: cdk.TimeZone.ASIA_TOKYO, // 任意のタイムゾーンを指定
bufferingInterval: cdk.Duration.minutes(0), // デバッグ用に0分に設定
});
/**
* Kinesis Firehose のデリバリーストリームの作成
*/
new kinesisfirehose.DeliveryStream(this, "DeliveryStream", {
destination: s3Destination,
});
}
}
ちなみに AWS CDK で「Amazon Data Firehose」を実装する場合は、以前の名前空間である「Kinesis Firehose」の名称のモジュールを引き続き使用する必要がある点にご注意ください。
上記を CDK デプロイします。作成された配信ストリームの送信先設定確認すると、タイムゾーン設定が S3 バケット出力に適用されていますね。
動作確認
テスト用に、AWS CLI から Firehose のデリバリーストリームにデータを送信してみます。
aws firehose put-record \
--delivery-stream-name ${DELIVERY_NAME} \
--record '{"Data": "{\"key1\":\"value1\", \"key2\":\"value2\"}"}'
S3 バケットにデータが出力されていることを確認します。現在の JST タイムゾーンの時刻のプレフィクスでデータが出力されていることが確認できました。
aws s3 ls s3://${S3_BUCKET_NAME} --recursive
2025-07-15 23:51:50 231 2025/07/15/23/Main-DeliveryStream58CF96DB-u6w3CfCVOWmL-2-2025-07-15-23-46-53-557b6f0b-96e1-4df4-848d-2687a0305a17
おわりに
AWS CDK で Amazon Data Firehose の S3 出力時のタイムゾーン設定が可能になったので確認してみました。
開発者や運用者がローカルタイムゾーンで出力プレフィクスを確認したいという要望は今までも多く、その場合は下記のような動的パーティショニングを実装する必要がありました。
しかし、それも昨年のタイムゾーンのサポートで改善され、また今回の AWS CDK での実装が可能になったことで、より簡単にローカルタイムゾーンでの出力プレフィクスの設定が行えるようになりました。便利になりましたね。使いこなしていきましょう。
以上