少し前から、個人プロプランでも利用出来るようになった「MEGA S4 オブジェクトストレージ」基本的な使い方としてはAWSのS3とほぼ同じであり、エグレス料金やストレージ料金が安いのが魅力的です。
今回はS4のバケットを独自ドメインに接続して独自ドメインでオブジェクトにアクセス出来るようにしたのでそのやり方を備忘録として書いていきます。
独自ドメインを接続する方法
現在、MEGA S4のバケットを独自ドメインに接続する方法としてCloudFlareを使用して行う方法が公開されています。
その中で公式で提示されている方法は以下の2つです。
・Cloudflare Workersを使用する方法
・ページルールを使用する方法 (※エンタープライズプラン必須)
ページルールを使用する方法ではS4のエンドポイントをCNAMEで指定して、ルールでオリジンアドレスやリライトルールを指定するだけなので楽なのですが、ルールでオリジンのホストを指定するにはエンタープライズプランへの加入が必要なので個人で使用出来るのはWorkersを使用して紐付けるしかありません。
今回は下記の公式のガイドに従い、Workersを使用して設定していきます。
https://help.mega.io/megas4/setup-guides/cloudflare-setup-guide-for-mega-s4
Wranglerを使用して設定・デプロイ
前提条件としてCloudFlareのアカウントを作成済み+今回使用するドメインを設定していること、ローカルにGit及びnode.jsがインストールされていることが必須です。今回はこちらのやり方は省略します。
公式ガイド翻訳しながら見てみるとWranglerのドキュメントページに記載されているプロジェクト作成手順を実施してから(npm create cloudflare@latest — my-first-worker等)後の手順を実施していくのかと思っていたのですがgithubからクローンして作るのでいらないらしいです。
(めちゃくちゃ躓いた)
というわけでまずはGithubからローカルにクローンする
git clone https://github.com/meganz/s4-cloudflare s4-cloudflare上記で指定したディレクトリにcdで移動して、npm installを実施
cd s4-cloudflare
npm installそうしたら、クローンしたディレクトリ内にある「wrangler.toml」を編集します。
name = "s4-worker"
type = "module"
# Set true to: enables use of *.workers.dev subdomain to deploy your Worker.
workers_dev = false
routes = [
{ pattern = "カスタムドメイン名", custom_domain = true }
]
compatibility_date = "2025-03-05"
main= "index.js"
[vars]
AWS_ACCESS_KEY_ID = "アクセスキーID"
AWS_SECRET_ACCESS_KEY = "シークレットアクセスキー"
AWS_DEFAULT_REGION = "ca-west-1"
AWS_S3_BUCKET = "バケット名"
#if you want to allow clients to list objects, otherwise false
ALLOW_LIST_BUCKET = "false"name = “s4-worker”:Workersのプロジェクト名を設定しています。変更したい場合は好きな名称に変更しましょう。
workers_dev = false:標準でアタッチされるworkers.devのサブドメインURLを有効にするかどうかの設定です。標準でfalseです。
{ pattern = “カスタムドメイン名”, custom_domain = true }:ここに設定したい独自ドメイン名を入力することで自動的に独自ドメインの設定をしてくれます。ただし、デプロイするCloudflareアカウントに対象のドメインが設定されていないと正常にセットアップされません。
AWS_ACCESS_KEY_ID = “アクセスキーID”:事前に設定したアクセスキーIDを入力します。
AWS_SECRET_ACCESS_KEY = “シークレットアクセスキー”:事前に設定したシークレットアクセスキーIDを入力します。
AWS_DEFAULT_REGION = “ca-west-1”:リージョンを指定します。現在リージョンはEUとカナダしか無く、地理的に近いと思われるカナダのバンクーバー(ca-west-1)を指定しています。
ALLOW_LIST_BUCKET = “false”:ルートドメインにアクセスした際にファイルリストをするか非表示にするかの設定です。基本的にfalseで表示しないようにするのが良いと思います。
wrangler.tomlの編集が完了したら下記コマンドでデプロイします。
npx wrangler deployこれにて設定は完了です。
設定したドメインでオブジェクトファイルにアクセス出来れば成功です。
(cdn.example.com/index.html など)
使ってみた所感
すごくいいなと思いはしましたが、独自ドメインでセットアップするのが少し面倒くさいなという感じ
R2やS3ほどの手軽さはないですね。
また、エンドポイントがEUとカナダしかないのでファイルの読み込み速度はかなり遅い…
一応静的なサイトも公開は出来るので個人の有料プランに入っていて、表示速度が気にならず従量課金に抵抗がある方にはおすすめかもしれません。
日本リージョンまたはアジアリージョンの開設をしてほしいですね…
それでは!
