リダイレクトしたい
AWSのRoute53にルートドメインとサブドメインを登録している際に、ルートドメインにアクセスされたらサブドメインにリダイレクトさせたい、と言う要望はたまにあります。
もちろん、Proxyサーバー等があればそちらで対応することは可能ですが、EC2サーバーを立てずにAWSサービスを組み合わせて使うことでも実現が可能になりますので、やり方をご紹介します。
手順
前提
Route53にルートドメインとサブドメインを登録しているとします。

サブドメイン用準備
CloudFrontとS3の準備および設定
まずはリダイレクト先のサブドメイン用の各種サービスを準備しましょう。
今回はCloudFront+S3でページを表示させます。
こちらの作業については以前紹介をしているので以下を参考に進めてみてください。
関連記事
【StaticPressS3】WordpressのブログやサイトをAWSのS3に転送して公開してみよう!【静的サイト】
関連記事
【Wordpress】AWSのS3とCloudFrontとRoute53を連携して独自ドメインで公開する方法【お名前.com】
確認
では、サブドメインにアクセスをしてCloudFront経由でS3バケットに適当に配置したHTMLが表示されるか確認してみましょう。

正しく設定が行われています。
ルートドメイン用準備
では、ここからがルートドメインからサブドメインへのリダイレクトの設定になります。
S3の準備
まずはS3バケットを作成してください。
こちらはCloudFrontは不要です。
この際にバケット名とドメイン名は一致させる必要があります。

S3バケットの設定を変更
S3バケットのStatic website hostingを有効化する際に、サブドメインの場合はこのバケットを使用してウェブサイトをホストするにチェックを入れていましたが、今回はリダイレクトを行いたいのでリクエストをリダイレクトするにチェックを入れます。
ターゲットバケットまたはドメインにはリダイレクト先のドメイン、プロトコルにはhttpかhttpsを入れ保存ボタンをクリックします。

Route53でAliasの設定
Route53に戻り、対象のルートドメインのAlias Targetのプルダウンを見ると作成したS3バケットが出てくると思うのでそちらを選択してSave Record Setボタンをクリックします。

プルダウンにAlias Targetが出ない場合
プルダウンに何も表示されない場合はバケット名がルートドメインと違う名前で作ってしまっている可能性がありますので、今一度確認してみてください。

確認
では、実際にブラウザでルートドメインにアクセスしてみましょう。


正常にリダイレクトされましたね。
試しにcurlでも確認しましたがこちらも正常に301でサブドメインにリダイレクトがかかっていそうです。
* Rebuilt URL to: http://XXXXX.jp/
* Trying xx.xxx.xx.xx...
* Connected to XXXXX.jp (xx.xxx.xx.xx) port 80 (#0)
> GET / HTTP/1.1
> Host: XXXXX.jp
> User-Agent: curl/7.43.0
> Accept: */*
>
< HTTP/1.1 301 Moved Permanently
< Date: Wed, 17 Oct 2018 05:49:17 GMT
< Location: http://www.XXXXX.jp/
< Content-Length: 0
< Server: AmazonS3
<
* Connection #0 to host XXXXX.jp left intact
終わりに
以上のように、サーバーレスでリダイレクトの設定を行うことが出来ました。
サブドメイン側にAWS Certificate Managerで取得した無料SSL署名書を設定すれば、Https通信も可能になります。
その辺の手順も過去にご紹介していますので興味のある方は試してみてください。
関連記事
【無料SSL証明書】AWSでHTTPS通信を取得してCloudFrontに設定してみよう!【Wordpress】
