好きなドメイン名でS3のオブジェクトにアクセスさせる

S3で静的なWebホストが出来ることは周知の事実ですが、そのURLが
xxxxxx.s3-website-ap-northeast-1.amazonaws.com
といった形で、S3にホストしていることがユーザーさんにもわかってしまっていました。

S3を使っているのがわからないようにしたい!という場合には、WebサーバーのbackendでS3からファイルを適宜ダウンロード・アップロードするなどの対応が必要でした。

そこで、2012年12月に発表されたS3ルートドメイン機能を使えば、S3にホストしていることがわからないようにすることができます!

早速試してみました。

今回はxxxxx.infoサイトをS3ルートドメインとして使用します。

まずは、S3で二つのバケットを作ります。

  • xxxxx.info
  • www.xxxxx.info

作成後、これらの二つのバケットのアクセスを全員アクセス許可に設定します。
f:id:kenjifunasaki:20130213134245p:plain

xxxxx.infoのバケット側の設定で、www.xxxxx.infoにリダイレクトする設定を入れます。
f:id:kenjifunasaki:20130213134301p:plain

www.xxxxx.infoのバケット側でStatic Web Hostingの設定で、Indexドキュメントを指定します。
f:id:kenjifunasaki:20130213141320p:plain

次にRoute 53で以下のようにxxxxx.infoとwww.xxxxx.infoの二つのレコードを作成します。

そして、www.xxxxx.info側はCNAMEでxxxxx.infoを指定、
xxxxx.info側はAレコードのエイリアスでS3のxxxxx.infoのバケット(=Static Web Host)を指定します。

これで準備完了です。
http://www.xxxxx.infoへアクセスすると、www.xxxxx.infoバケットにあるindex.htmlが表示されます。
f:id:kenjifunasaki:20130213140627p:plain

設定イメージとしては以下のような感じですかね。
f:id:kenjifunasaki:20130213142140p:plain
ご参考
http://docs.aws.amazon.com/AmazonS3/latest/dev/website-hosting-custom-domain-walkthrough.html