AWS
S3に独自ドメインで静的ページを公開する

はじめに

AWSを使って、独自ドメインを使用し、S3などのサービスに適用させる方法を調べた。

Route53 を使用してドメインを取得管理する

すでに取得しているドメインを移管することもできるようだが、この記事では、Route53サービス内でドメインを購入し、管理する方法を説明する。

Route53でドメイン購入

まずは、Route53サービスにログインし、register domain に進む

どのドメインを買うかを決めるため、購入したいドメイン名を調べる画面に遷移する。購入したいドメイン名を入力し、ドロップダウンから買いたいドメインを指定する。

空きがある場合は、Available(利用可)と表示され、無い場合は Unavailable(利用不可)と表示される。AvailableのものをAdd to cart でカートに入れて次に進む

続いて個人情報を入力するページに移動するので、情報を入力していく。ここでは、Person(個人)での購入例を挙げる

確認用メールが来るので、正しい情報を入力する必要がある。

なお、個人でのドメイン取得の場合、WHO IS で個人情報が開示されないよう、最後にPrivacy Protection という項目がある。こちらをEnable(有効)にすることで、公開代行を行ってくれるので個人情報が出ないようにできる。

情報を入力して次の画面に進むと、規約の同意と本人確認のステータスが表示される。登録したメールアドレスに確認用メールが届くはずなので、メール内のリンクをクリックする。ページが表示され、本人確認が行わる。正常に終わると購入を行う事ができる。

購入後、Route53の管理画面にはドメイン名が表示されるが、ステータスが登録進行中になる。しばらく経ち、正常に登録されると、successful にかわり使用可能になる。

S3に独自ドメインを割り当てて静的webサイトを構築する

次に、S3サービスにバケットを作成し、静的サイトを作成する。まず、S3にアクセスし、バゲットを作成。この際、バケットの名前は表示したいドメイン名と合わせる。

とりあえず、独自ドメインの疎通までしたいので、作成したバケットにindex.htmlのみをアップする。中身は表示のテスト用なので何でも良い。

アップしたファイルは取りあえず公開ステータスに変えておく。

もし、以下のようなアクセス拒否が表示された場合は、アクセスコントロールリスト(ACL)を変更する。

おそらくACLの二つがTrueステータスになっているので、編集からこれらのステータスをチェックを外した状態(False)に変更する

これで公開にはできるが、リンクを踏んでも表示されないので、ウェブサイトホスティングをONにする。バケットのプロパティにStatic Website hostingがあるのでクリック

このバケットを使用してウェブサイトをホストする を選択し、インデックスドキュメントにindex.htmlを入力。(別にindex.htmlでなくても良いが)なお、元から薄い文字で表示されてるが、実際に入力しないと保存はできない。

ここまでできたら、最初にあげたindex.htmlを表示して、下部に表示されているリンクをクリック。アップしたindex.html の内容が表示されればOK

Route53でS3のバケットのエイリアスを登録する

購入したドメインをかぶせるために、Route53に戻る。

管理画面のDashboard > Hosted zones をクリックし、購入したドメインをクリック。すると、上に Create Record Set が表示されるのでクリック

入力fieldが表示されるので、必要項目を入力していく。

取得したドメイン名をそのまま使いたい場合は、Nameのfieldには何も入れない。サブドメインを使用したい場合は、入力を行うが、S3でサブドメインを使いたい場合は、バケットの名前をサブドメインを含めた名前にする必要がある。

Typeは、IPv6でも良いのかもしれないが、iPv4 addressのAタイプを指定した。

次にAliasの設定を行う。yes のラジオボタンをクリックすると、Alias target のfieldが出てくるので、クリックする。

fieldの下にS3 Website Endpoints と出て先ほど設定したS3のバケット名が出てくるので選択。バケット名と異なると出てこないので、出てこない場合はS3のバケット名とにらめっこ。問題なければ、createを押して作成。

無事に作成されたら http://ドメイン名 でアクセス。S3にアップロードした、index.htmlの内容が表示されるはず。

もしindex.htmlが表示されない場合は、Route53でS3のバゲット選択ができていればS3側のアクセスの問題を疑うとすんなり行くかもしれない。