背景
独自ドメインを取得してホームページを開設したかった。
レンタルサーバを利用しなくてもAWSのS3を利用して簡単にできるようだったので、試しにやってみる。
参考(AWSチュートリアル)
全体像
作業概要
だいたいの作業手順はこんな感じです。
- 独自ドメインの購入
- バケット作成
- Route53へバケットのエイリアスレコード追加
作業内容
独自ドメインの購入
AWSドキュメントに、より詳細な内容が書かれていますので参考に。AWSドキュメント
-
AWSコンソールにログイン後、
サービスからRoute53を選択する。 -
画面真ん中あたりのテキストボックス(Type a domain name)に取得したいドメイン名を入力し、Checkボタンをクリックする。(.com以外のドメインが欲しい場合は右隣のリストボックスから選択すること)

-
Add to cartをクリックし、欲しいドメインをカートに加える。
(画像はgetsampleapp.comをカートに加えた後のキャプチャです)
画面を下にスクロールしてcontinueボタンをクリックする。

-
購入します。
以下の作業を行うと、Complete Purchase -
真ん中あたりあるチェックボックス「I have read and agree...」 にチェックを入れる
作成が完了するとroute53のRegistered domainsに出現します。

バケットの作成
AWSサービスの中からS3を選択し、バケットを作成する。
ホスティングするウェブサイトと同じ名前のバケットを作成すること(AWSチュートリアル参考)。
バケットポリシーを設定する
画面下のポリシージェネレータを利用すると簡単にjsonを生成することができます。

こんな感じで良いかと思います(ARNは作成したS3バケットのARNを設定してください)

Generate Policyボタンをクリックし、画面に表示されたポリシーをコピペして貼り付けてください。
※バケットのパブリックアクセス設定内の新規のパブリックバケットポリシーをブロックする (推奨)にチェックが入っているとポリシーの保存ができないので要注意です(そりゃそうか...って感じですが)。

ウェブサイトのホストとして設定する
AWSチュートリアルを参考に、S3のバケットをウェブサイトのホストとして利用する設定をします。
ひとまず簡単なindex.htmlを作成してホスティングの設定をするのが良いかと思います。
S3エンドポイントへアクセスしてみる
設定がうまくいっていればエンドポイントへアクセスできるはずなのでお試ししてみてください。
AccessDenyエラーが出るときはバケットのアクセス権限周りの設定を再確認してみると良いかもしれません。
Route53へエイリアスレコードの追加
AWSチュートリアルのエイリアスレコードを追加するを参考に、エイリアスレコードを設定します。
Nameと同じ名前でないとAlias Targetとして表示されないので注意です。同じ名前のバケット名を作成したのはそのためか。と一人で納得しました。

作成後、http://xxxx.com(xxxxは購入したドメイン名)にアクセスすると、いい感じにアクセスできます。
詰まったところ
全体的にあまりつまるところはなかったけど、地味にちょこちょこ引っかかってしまいました...
バケットポリシーが保存できない
S3アクセス権限の「パブリックアクセス設定」 新規のパブリックバケットポリシーをブロックするにチェックが入ってた。チェックを外して保存できた
S3のエンドポイントにアクセスしてもコンテンツが表示されない
S3アクセス権限の「パブリックアクセス設定」 バケットにパブリックポリシーがある場合、パブリックアクセスとクロスアカウントアクセスをブロックする にチェックが入ってた。チェックを外してアクセスできた
エイリアスターゲットにS3のバケットが表示されない
バケット名のスペルが誤っていた。正しい名前(Route53レコード追加画面のNameと同じ名前)のバケット名を作成したらエイリアスターゲットとして選択することができた
今後の課題と感想
ACMとCloudFrontを利用してHTTPS化したい。文書を書くのに途中で力尽きてしまって急に適当になってしまいがちなので、なんとか工夫したい...段々雑になってごめんなさい...


