LoginSignup
0
0

More than 5 years have passed since last update.

AWS S3を使ってホームページを公開する

Last updated at Posted at 2019-03-30

背景

独自ドメインを取得してホームページを開設したかった。
レンタルサーバを利用しなくてもAWSのS3を利用して簡単にできるようだったので、試しにやってみる。
参考(AWSチュートリアル)

全体像

Untitled Diagram.jpg

作業概要

だいたいの作業手順はこんな感じです。

  1. 独自ドメインの購入
  2. バケット作成
  3. Route53へバケットのエイリアスレコード追加

作業内容

独自ドメインの購入

AWSドキュメントに、より詳細な内容が書かれていますので参考に。AWSドキュメント

  • AWSコンソールにログイン後、サービスからRoute53を選択する。
  • 画面真ん中あたりのテキストボックス(Type a domain name)に取得したいドメイン名を入力し、Checkボタンをクリックする。(.com以外のドメインが欲しい場合は右隣のリストボックスから選択すること)
    image.png

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

  • ドメインの詳細情報を入力します。
    image.png

  • 購入します。
    以下の作業を行うと、Complete Purchase

    • 真ん中あたりあるチェックボックス「I have read and agree...」 にチェックを入れる
    • 登録したメールアドレスにAWSから確認用メールが届くので、メール内のリンクにアクセスする。 image.png

作成が完了するとroute53のRegistered domainsに出現します。
image.png

バケットの作成

AWSサービスの中からS3を選択し、バケットを作成する。
ホスティングするウェブサイトと同じ名前のバケットを作成すること(AWSチュートリアル参考)。

バケットポリシーを設定する

画面下のポリシージェネレータを利用すると簡単にjsonを生成することができます。
image.png
こんな感じで良いかと思います(ARNは作成したS3バケットのARNを設定してください)
image.png
Generate Policyボタンをクリックし、画面に表示されたポリシーをコピペして貼り付けてください。
※バケットのパブリックアクセス設定内の新規のパブリックバケットポリシーをブロックする (推奨)にチェックが入っているとポリシーの保存ができないので要注意です(そりゃそうか...って感じですが)。
image.png

ウェブサイトのホストとして設定する

AWSチュートリアルを参考に、S3のバケットをウェブサイトのホストとして利用する設定をします。

ひとまず簡単なindex.htmlを作成してホスティングの設定をするのが良いかと思います。

S3エンドポイントへアクセスしてみる

設定がうまくいっていればエンドポイントへアクセスできるはずなのでお試ししてみてください。
AccessDenyエラーが出るときはバケットのアクセス権限周りの設定を再確認してみると良いかもしれません。

Route53へエイリアスレコードの追加

AWSチュートリアルのエイリアスレコードを追加するを参考に、エイリアスレコードを設定します。
Nameと同じ名前でないとAlias Targetとして表示されないので注意です。同じ名前のバケット名を作成したのはそのためか。と一人で納得しました。
image.png

作成後、http://xxxx.com(xxxxは購入したドメイン名)にアクセスすると、いい感じにアクセスできます。

詰まったところ

全体的にあまりつまるところはなかったけど、地味にちょこちょこ引っかかってしまいました...

バケットポリシーが保存できない

S3アクセス権限の「パブリックアクセス設定」 新規のパブリックバケットポリシーをブロックするにチェックが入ってた。チェックを外して保存できた

S3のエンドポイントにアクセスしてもコンテンツが表示されない

S3アクセス権限の「パブリックアクセス設定」 バケットにパブリックポリシーがある場合、パブリックアクセスとクロスアカウントアクセスをブロックする にチェックが入ってた。チェックを外してアクセスできた

エイリアスターゲットにS3のバケットが表示されない

バケット名のスペルが誤っていた。正しい名前(Route53レコード追加画面のNameと同じ名前)のバケット名を作成したらエイリアスターゲットとして選択することができた

今後の課題と感想

ACMとCloudFrontを利用してHTTPS化したい。文書を書くのに途中で力尽きてしまって急に適当になってしまいがちなので、なんとか工夫したい...段々雑になってごめんなさい...

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0