week-based-year(YYYY)をカスタムプリフィックスにしたFirehoseの動作を確かめてみた
AWSチームのすずきです。
Amazon Kinesis Data Firehose のカスタムプリフィックス、日付のフォーマットは Java DateTimeFormatter に準拠した指定で利用できます。
今回、「timestamp:YYYY」 week-based-yearに該当する日付フォーマット指定した場合の挙動を確認する機会がありましたので、 紹介させていただきます。
Firehose設定
カスタムプリフィックスの日付フォーマット2種類のFirehoseを用意しました。
- year=!{timestamp:YYYY}/week=!{timestamp:w}/
- year=!{timestamp:yyyy}/month=!{timestamp:MM}/date=!{timestamp:dd}
CloudFormationテンプレート
「year=!{timestamp:YYYY}」
WeekBased: Type: AWS::KinesisFirehose::DeliveryStream Properties: DeliveryStreamType: DirectPut ExtendedS3DestinationConfiguration: RoleARN: !GetAtt 'DeliveryRole.Arn' BucketARN: !Sub 'arn:aws:s3:::${S3bucketFirehose}' Prefix: !Sub '${AWS::StackName}/week_based_year/year=!{timestamp:YYYY}/week=!{timestamp:w}/' ErrorOutputPrefix: !Sub '${AWS::StackName}/error/!{firehose:error-output-type}/week_based_year/year=!{timestamp:YYYY}/week=!{timestamp:w}/'
「year=!{timestamp:yyyy}」
YearMonthDate: Type: AWS::KinesisFirehose::DeliveryStream Properties: DeliveryStreamType: DirectPut ExtendedS3DestinationConfiguration: RoleARN: !GetAtt 'DeliveryRole.Arn' BucketARN: !Sub 'arn:aws:s3:::${S3bucketFirehose}' Prefix: !Sub '${AWS::StackName}/year_month_date/year=!{timestamp:yyyy}/month=!{timestamp:MM}/date=!{timestamp:dd}/' ErrorOutputPrefix: !Sub '${AWS::StackName}/error/!{firehose:error-output-type}/year_month_date/year=!{timestamp:yyyy}/month=!{timestamp:MM}/date=!{timestamp:dd}/'
S3確認
2020年12月31日にFirehose経由でS3に出力されたファイルのキーを確認しました。
「year=!{timestamp:YYYY}」
「YYYY」、week-based-year の日付フォーマット指定では2021年となりました。
2020年12月31日は 2021年の一週目として扱われました。
- S3 URI
s3://firehose-test-ap-northeast-1-000000000000/firehose-test/week_based_year/year=2021/week=1/firehose-test-WeekBased-0X6xUe6PgIMm-1-2020-12-31-05-46-20-7d2e8b7f-b291-4b1e-a653-a3cc47ac9f49
「year=!{timestamp:yyyy}」
「yyyy」の日付フォーマット指定では、2020年として扱われます。
- S3 URI
s3://firehose-test-ap-northeast-1-000000000000/firehose-test/year_month_date/year=2020/month=12/date=31/firehose-test-YearMonthDate-4whshMRx3ILr-1-2020-12-31-05-46-45-8e86b21c-61d5-4347-80cc-a5f6175826aa
まとめ
Firehose のカスタムプリフィックスとして年月日を反映させる場合、日付フォーマットの年指定は小文字の「yyyy」でご利用ください。