AWSマネジメントコンソールからS3にアクセスしてgzipをダウンロードすると中途半端に解凍されてウザい

AWSマネジメントコンソール(https://aws.amazon.com/jp/console/)はブラウザからGUIAWSの各種機能にアクセスできるCLIを触りたくない人々の頼もしい味方である。

これでS3にアクセスしてファイルをダウンロードするという行為はAWSをインフラに採用しているチームに所属していたら非エンジニアでもやる可能性があるくらい手軽で簡単な行為だ。

実質BOXに置いてある契約書類の雛形ファイルをダウンロードしにいくのと何もユーザー体験は変わらない。

しかしまあまあウザめのハマりポイントになりそうな事象があった。

何気なくS3に置いてあるgzip形式のファイルをダウンロードすると、

f:id:New_File_20:20220104220300p:plain
S3に置いてあるgzip形式のファイルをダウンロード

何の問題もなく拡張子が.gzgzip形式のファイルがダウンロードできる。

f:id:New_File_20:20220104220455p:plain
gzipをダウンロードしたので当然.gzがダウンロードされている

MacであればgzipはFinderでダブルクリックすればそのまま解凍できる。

しかしなぜか解凍できない。

それならしゃーないなということでターミナルでgzipコマンドを使っての解凍を試みる。

gzip -d ~/Downloads/********************.gz
gzip: /Users/**********/Downloads/********************.gz: not in gzip format

not in gzip format ??????????????????????????????????????????????????????????????????????

もしやと思ってファイル名を直接変更して強制的に拡張子を変更。

f:id:New_File_20:20220104221043p:plain
圧縮前はJSONなので.jsonに強制変更

すると、さも当然のように開ける。

え・・・キミは・・・最初から圧縮・・・なんてされてなかったのね。

---END---

いやなんで勝手に解凍してるんだ?

ダウンロード時に解凍してくれるのは便利といえば便利である。

しかし、拡張子がそのままだと解凍されているかわからない。

修復にはリネームして正しい拡張子を付け直す必要があるが、これがなにかわからなかったら更に面倒なことになる。

自分はたまたま異変に気が付けたが、よりリテラシーが低めの人だったらここでハマる。

ただS3からファイルをダウンロードしたいだけなのに。

クラメソの記事でも紹介されていた。

dev.classmethod.jp

AWS CLIからならそのままgzipでダウンロードできるらしい。

でもなんでこんなクソ仕様なんだ?という疑問は尽きない。

AWS側がやるとは思えないので ブラウザ側で勝手に開く設定になっている とかいろいろ可能性を考えたが以下の記事が正解っぽい。

ebc-2in2crc.hatenablog.jp

S3 に保存してるサーバーのログを AWS コンソールでいろいろ見たりググったりしたら、どうも原因は Firehose がデータを S3 に保存するときに Content-Encoding: gzip メタデータをサーバーのログに付与してからっぽい。

確かに自分のやつもFirehoseからS3に突っ込んでいる。

Content-Encoding: gzipの付与をしているFirehoseとそれを見て解凍しちゃうブラウザ(Chrome)、2人の愛の結晶だったらしい。

わざわざAWSマネジメントコンソールからのダウンロードのためだけにContent-Encoding: gzipを取り除く必要なんてない。

2人には一生愛を育んでもらおう。

俺たちはAWS CLIからダウンロードするからよ。