さくらのクラウドのオブジェクトストレージでContent-Typeをs3fsで自動設定する方法

ストレージとデータ # s3fs # WEBアクセレーター

こんにちは、UOZUです!

以前、ウェブアクセラレータからオブジェクトストレージを利用する際に、オブジェクトストレージ上のContent-Typeが必要と紹介しました。

Content-Typeが適切に設定されていない場合、ブラウザやウェブアクセラレータ側でファイル種別を正しく扱えず、HTMLやCSS、JavaScriptなどが意図した形式で配信されない可能性があります。

本記事では、s3fs でお手軽にContent-Typeを指定する方法を紹介します。

※s3fsはさくらインターネットの公式サポート対象ツールではありません。利用する場合は、挙動を確認したうえで検証・運用することをおすすめします。

検証環境

以下の設定で検証環境を作成しました

・石狩第一サイトのオブジェクトストレージ「uozu」を作成
・オブジェクトストレージをs3fsで/mnt/sakuraにマウント
・オブジェクトストレージをオリジンとして、WEBアクセレーター「xxxxxx.user.webaccel.jp」を作成

s3fs のContent-Type自動設定機能

s3fs でContent-Type指定は非常にシンプルで、マウント先のオブジェクトストレージに、拡張子に合わせ、自動的にContent-Typeを設定してくれます。

.htmlで設置した際には自動的にtext/htmlとしてContent-Typeを設定してくれます。

この機能は s3fs のマニュアルにも書かれている機能で、特段の指定が無ければ、サーバー内の/etc/mime.typesを参照し、自動的にMIME typeからContent-Typeを登録してくれます。これは便利ですね。

ですので、当然拡張子が無いファイルを作成した際には、application/octet-stream がContent-Typeとして指定されることになります。

検証では、mv で拡張子を付けた場合も、変更後の拡張子に応じて Content-Typetext/plain として設定されることも確認できました。

さいごに

今回は、さくらのクラウドのオブジェクトストレージを s3fs でマウントし、ファイル作成時に Content-Type がどのように設定されるかを確認しました。

ウェブアクセラレータとオブジェクトストレージを組み合わせて静的サイトを配信する場合、Content-Type は重要な確認ポイントになります。s3fs は公式サポート対象のツールではありませんが、挙動を理解したうえで利用すれば、ファイル配置とContent-Type設定を手軽に行える便利な選択肢になりそうです。

最後までお読みいただき、ありがとうございます!

この記事を書いた人

UOZU

ネットアシスト運用チーム10年目の運用エンジニア

さくらのクラウド検定 ベーシック (第一回)

さくらのクラウド検定 アドバンスド (第一回)

AWS Certified Solutions Architect - Associate

AWS Certified AI Practitioner