🦜

fluentbitでS3にgzip圧縮したデータを送るときのハマりポイント

に公開2

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

yuki-machidayuki-machida

compression gzipしたファイルを送っているのに、S3にアップロードされたファイルをブラウザでダウンロードしてくるとファインダーから開けなくてハマった

これはAWSのマネコンからダウンロードしようとしてダメだったということでしょうか?

MINMIN

はい、ご認識の通りです !
ChromeブラウザでAWSのマネコンを開いて、ダウンロードボタンからダウンロードしたファイルがファインダーで開けませんでした。