背景
独自ドメインを取得してホームページを開設したかった。
レンタルサーバを利用しなくても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化したい。文書を書くのに途中で力尽きてしまって急に適当になってしまいがちなので、なんとか工夫したい...段々雑になってごめんなさい...