AWS S3 に静的サイトをホスティングさせて Route53 で独自ドメイン(スタードメイン)を割り当てた話
ちょっとしたサイトこそわざわざレンタルサーバーなんて借りずに S3 を使ったほうが格安で、なおかつコマンドライン操作でファイルの同期が取れるので、どんどん使いましょう。
S3
バケット名=ドメイン名にしてバケット作成
ドメイン名にしないと、後の Route53 でエンドポイントとして出てきてくれません。ハマりどころでしかないです。
ファイルをupする
まあこれはブラウザからUPするんでも良いので今回の話とは直接関係ないのですが、今回 AWS CLI を使って、手元のファイル (今回は public/
というディレクトリ) をアップロードしました。同期が取りたいので aws s3 sync
コマンドを使います。
aws コマンドは brew install awscli
などで事前にインストールし、 aws configure
で初期設定してある前提です。
#!/bin/sh BUCKET="example-piyopiyo.net" PUBLIC_DIR="public" aws s3 sync ${PUBLIC_DIR} s3://${BUCKET}
ちなみにこれを実行すると、 public/
の中身がバケットのルートにばらまかれます。 public/
ディレクトリ自体がアップロードされるわけではない模様。
静的ウェブサイトホスティングを有効にする
ちょっとしたサイトなので、 404 でも index.html
を出すようにしておきました。
アクセス許可 - バケットポリシーの編集
JSON をコピペします。
一箇所、自分のドメイン名に変えるのを忘れないようにして下さい。
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadForGetBucketObjects", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::example-piyopiyo.net/*" } ] }
以上で S3 の設定は完了です。
Route 53
Hosted zones に今回のドメインを追加
Create Record Set で ドメインを s3 エンドポイントに割り当てる
ちょっとこのスクショだと出てないんですが、 S3 のエンドポイントが選択できるようになっているはずです。
以上で Route53 の設定は完了です。
必要なら www.example-piyopiyo.net
も同様にエイリアスしておくと良いかもしれません。
スタードメイン
ドメイン管理画面の ネームサーバー に、Route53 でメモったネームサーバー4つを設定します
しばらくすると反映されると思います。おしまい。
お名前さんなど、他のドメイン屋さんでも似たような手順で反映可能だと思います。
ちなみに
独自ドメインでメールを送受信したいとなったら、 AWS SES とか別途メールサーバーを立てる必要があるのでお気をつけくださいまし。
以上。お粗末さまでした。