Firehose でS3プリフィックスのカスタマイズが可能になりました

はじめに

AWSチームのすずきです。

Amazon Kinesis Data Firehose、出力先S3設定としてプリフィックスの柔軟なカスタマイズが可能になりました。

今回、Firehoseの出力先S3のプリフィックスとして、タイムスタンプ情報をApache Hiveフォーマットに設定し、 その動作を試す機会がありましたので、紹介させて頂きます。

Firehose設定

  • 新規Kinesis Data Firehoseのストリームを作成、「Step 3: Choose destination」 でS3プリフィックスを設定しました。

  • 以下の設定を反映しました。

Prefix

myPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/

Error prefix

myErrorPrefix/year=!{timestamp:yyyy}/month=!{timestamp:MM}/day=!{timestamp:dd}/hour=!{timestamp:HH}/!{firehose:error-output-type}
  • プリフィックスのカスタマイズを実施する場合、同時にエラープリフィックスの設定も必要です。

短縮表記

  • year=/month=/month=をシングルクォートで囲った記述も可能です。

Prefix

myPrefix/!{timestamp:'year='yyyy'/month='MM'/day='dd'/hour='HH}/

Error prefix

myErrorPrefix/!{timestamp:'year='yyyy'/month='MM'/day='dd'/hour='HH}/!{firehose:error-output-type}

参考

Amazon S3 オブジェクトのカスタムプレフィックス

S3確認

  • Kinesis Data Firehose より出力されたS3オブジェクトを確認しました。

  • S3のキー、Apache Hiveフォーマット (/year=2019/month=02/day=14/hour=07/)が含まれる事を確認できました。

まとめ

従来のFirehose、S3に出力されるキーに日時は含まれていましたが「/yyyy/mm/dd」で固定されていた為、 Amazon Athena のパーティションとして利用する為には、Lambdaや、CLIなどを利用してApache Hiveフォーマットへの変更処理が必要でした。

ELBとCloudFrontのアクセスログをサーバレスに集約させてみた

Amazon Athena Webアクセスログ、CloudFrontのログ、CloudTrailのログのパーティション設定を自動化する

今回のアップデートにより、Firehoseのみで、ログファイルの日時をApache Hiveフォーマット、 Amazon Athena のパーティションとして利用できる状態で、S3上へ集約する事が可能になりました。

Amazon Athena を利用してS3上の特定期間のログ解析を行う場合、パーティションの活用が効果的です。 今回のアップデートをぜひお試し下さい。

Amazon Athenaのパーティションを理解する #reinvent