ドメイン間でリダイレクトをする必要があり,nginx で頑張るのもなぁ…と思って,もっとお手軽で運用も楽そうな方法を探していたら,以下の記事を発見して,S3 の機能で実現できそうだったので試してみた.記事では別のドメインにリダイレクトをする方法として紹介されているけど,別のサブドメインにリダイレクトをする方法としても使えた.
構成図
ザッと以下のようになる.
リダイレクト前のドメイン名と S3 バケット名を一致させる
適当に S3 バケットを作ってしまうとダメで,リダイレクト前のドメイン名と S3 バケット名を一致させる必要がある.例として aaa.example.com
から zzz.example.com
にリダイレクトさせる場合は,S3 バケット名は aaa.example.com
になる.S3 バケット名はユニークである必要があるため,既に取得されていたら無理だという点には注意する必要がある.記事にも注釈が入っていた.
Note: S3 bucket names must be globally unique. If the bucket name you need is already in use, this solution cannot be used.
なお,この制約は公式ドキュメントにも記載されていた.
リソースレコードセット名は、Amazon S3 バケット名と一致する必要があります。たとえば、Amazon S3 バケット名が [acme.example.com] である場合、このリソースレコードセット名も [acme.example.com] である必要があります。
リダイレクト設定をする
管理コンソール上の Static website hosting で「リクエストをリダイレクトする」にチェックを入れて,ドメインとプロトコルを設定すると,すぐにエンドポイントからリダイレクトが可能になる.静的ファイルをホスティングするのは今までも使ったことがあったけど,リダイレクトをできることは知らなくて,勉強になった.また「ログ記録」も設定しておくと,アクセス数を把握できるため,基本的には設定しておくべきだと思う.
Route 53 で S3 にドメインを設定する
記事に書いてある通り,以下のポイントに注意して設定をする.
- A レコードを選択する
- Alias は Yes にする
- ターゲットに表示される S3 website endpoints から作成済の S3 バケットを選択する
- ちなみに S3 バケットを作ってから,10分間ほど待たないとターゲットに表示されなかったので,時間差があるかも…?
- Routing Policy は Simple にする
まとめ
- Route 53 + S3 を使ってドメイン間のリダイレクトを実現できた
- ドメイン名と S3 バケット名を一致させるところは注意する