Amazon Data FirehoseからS3にgz形式でオブジェクトを保存したい
概要
EC2 -> CloudWatch Logs -> Data Firehose -> S3
この構成を組んだ時にデータ圧縮についていろいろ混乱したからメモしておく。
サービスつないだときの設定ってわかりにくいよなぁ。
今回の構成
EC2 -> CloudWatch Logs -> Data Firehose -> S3
やりたかったこと
- EC2のCloudWatch AgentはCloudWatch Logsにログデータを送信する
- CloudWatch Logsはログデータを受け取る
- CloudWatch Logsはログデータを自動的にGZIPで圧縮する
- CloudWatch Logsは圧縮データをData Firehoseに送信する
- Data Firehoseは圧縮データを受け取る
- Data Firehoseは受け取った圧縮データの拡張子に".gz"をつける
- Data Firehoseは".gz"拡張子をつけた圧縮データをS3に送信する
Data Firehose設定内容
-
「Amazon CloudWatch Logsからソースレコードを解凍する」という設定を「オフ」
⇒CloudWatch Logsから受け取った圧縮済ログデータをFirehoseは解凍しない -
「データレコードの圧縮」という設定を「有効ではありません」
⇒Firehoseは圧縮済ログデータをS3へ送信時に再圧縮しない -
「ファイル拡張子フォーマット」という設定を「.gz」
⇒Firehoseは圧縮済ログデータのファイル名に".gz"拡張子をつけて、S3に送信する