🦜
fluentbitでS3にgzip圧縮したデータを送るときのハマりポイント
FluentbitでS3にgzip圧縮したデータ、ダウンロードすると壊れてる
compression gzipしたファイルを送っているのに、S3にアップロードされたファイルをブラウザでダウンロードしてくるとファインダーから開けなくてハマった
ダウンロードしたファイルをクリックして展開しようとすると、展開できませんと怒られる。
解決法:AWS CLIでダウンロードする
or 万一壊れても大丈夫であれば、.jsonファイルに編集してみてみる
環境
- OS:macOS Sequoia
- チップ:Apple M2 Pro
- Google Chrome バージョン:137.0.7151.104(Official Build) (arm64)
- VPN あり
設定
confファイルのOUTPUT設定はこんな感じでした。
[OUTPUT]
Name s3
Match kube.*
bucket xxxx
region ap-northeast-1
s3_key_format /%Y/%m/%d/%H/$TAG_$INDEX.gz
compression gzip
...
ちゃんと、compression gzipって書いてるのに・・・
原因
ブラウザがS3のファイルのメタデータContent-Encoding: gzip
を読み取り、
気を利かせてダウンロード時に
.gz
のファイル名のまま、中身だけ.json
形式に展開したのが原因っぽかった。
確認したこと
fluentbit の log 確認
logを確認すると、Pre-compressionはしてそうだったので、ブラウザが怪しいかも?と気づけた
[2025/06/16 xx:xx:xx] [ info] [output:s3:s3.0] Pre-compression upload_chunk_size= xxx, After compression, chunk is only xx bytes, the chunk was too small, using PutObject to upload
[2025/06/16 xx:xx:xx] [ info] [output:s3:s3.0] Successfully uploaded object /2025/06/16/xx/xxxx_9.gz
ターミナルでファイルを分析
fileコマンドでJSONデータになる。確かに中身はJSONデータだけど、gzファイルなので、
$ file containers_9.gz
containers_9.gz: JSON data
当然、gunzipコマンドでもformatがgzipじゃないと怒られた
$ gunzip containers_9.gz
gunzip: containers_9.gz: not in gzip format
CLIでファイルをダウンロードして比較
CLIでファイルをダウンロードする
aws s3 cp s3://xxxx/2025/06/16/xx/xxxx_9.gz .
ファインダーからダブルクリックで開けた
ここで、ブラウザが悪さしていると気づけた
Discussion
これはAWSのマネコンからダウンロードしようとしてダメだったということでしょうか?
はい、ご認識の通りです !
ChromeブラウザでAWSのマネコンを開いて、ダウンロードボタンからダウンロードしたファイルがファインダーで開けませんでした。