スタッフダイアリー

Amazon S3を使って最速リダイレクト設定

システム課 黒田です。

当社で管理しているドメインは400ドメイン以上と多く、
20や30ドメインが同居しているサーバも少なくありません。

また、長年運用してきたサーバはOSの
リプレイスなどで移行する機会もよくあり、
移行の度にサーバの設定を移植・編集してDNSを
書き換えてデバッグする、という手順を行ってきました。

この移行作業が割りとリソース喰いなので、
以下の対象となるドメインは、サーバでのホスティングをやめ
Amazon S3の「静的ウェブサイトのホスティング機能」を用いて
リダイレクト又は静的ページの表示に絶賛変更しています。

・終了ページが表示されている
・既にサイト移行済で別サイトにリダイレクトされる
・白ページが表示される(→適宜リダイレクトに変更)
・LPページが表示されている

精査してみたところ、上記の対象となるドメインが
思いの外多く、如何に速くS3で設定するかを主眼に
リダイレクト設定方法を載せていきたいと思います。

■前提条件
 ネームサーバがAmazon Route 53

■用意するもの(すぐコピー出来るようにテキストにしておく)
 ・独自ドメイン
 ・リダイレクト先
 ・s3-website-ap-northeast-1.amazonaws.com
  ※S3 ウェブサイトエンドポイント(東京リージョン)

■サンプルテキスト
foo-bar.com
www.m-up.com
s3-website-ap-northeast-1.amazonaws.com

手順1.独自ドメイン名のS3バケットを作成する



※独自ドメインをコピペ
※その他設定はデフォルトでOK


手順2.ホスティングの設定をする
Amazon S3 > foo-bar.com > プロパティ


※リダイレクト先をコピペ


手順3.Route 53でAlias設定する


※対象ドメインのAレコードのAliasに
 「s3-website-ap-northeast-1.amazonaws.com」をコピペ


以上でリダイレクト設定完了です。

S3とRoute 53を別タブで開いておくと速いです。
テキストを用意しておけば、リダイレクト設定を
1分程度で完了することが出来ます。

もし東京リージョンでバケット名が被ってしまったら、
別のリージョンで独自ドメイン名のバケットを作成して
Route 53 のAlias指定を変更します。

米国東部(バージニア北部) リージョンに作成した場合
s3-website-us-east-1.amazonaws.com

参考
http://docs.aws.amazon.com/ja_jp/AmazonS3/latest/dev/WebsiteEndpoints.html


終了ページやLPページの場合は、手順2の設定を
「このバケットを使用してウェブサイトをホストする」
に変更して、インデックスドキュメント に終了ページ等の
htmlファイル名を入力、実際のhtmlは当該バケットにアップロードします。

Amazon S3 > foo-bar.com > プロパティ


アップロードしたhtmlファイル等にアクセス出来るよう
チェックボックスにチェックを入れ、「公開する」を選択
図ではindex.html以外にもcssやjsの入ったディレクトリも
まとめて対象にして公開設定にしています。



※手順3は同じ


余談ですが、リダイレクト先は下記のような設定も出来ます。

ターゲットバケットまたはドメイン
store.shopping.foo.com/foo-bar
プロトコル
https

リダイレクト先は下記になります。
https://store.shopping.foo.com/foo-bar/

余談2ですが、
「/ 」以外のアクセスが多く見込まれるならリダイレクトルールを使い
旧ホストのどのURLでアクセスが来ても、リダイレクト先ドメインのトップに飛ぶようにします。
Amazon S3 > foo-bar.com > プロパティ > リダイレクトルール


<RoutingRules>
<RoutingRule>
<Redirect>
<HostName>リダイレクト先ドメイン</HostName>
<ReplaceKeyWith></ReplaceKeyWith>
</Redirect>
</RoutingRule>
</RoutingRules>

便宜上、括弧を大文字にしてあるので使用の際は小文字にして下さい。

次回は、Let's Encryptの続編 か
New Relic APM あたりを書こうと思います。