どらねこへいとくるー

we're doraneko hate crew

AWS S3 に静的サイトをホスティングさせて Route53 で独自ドメイン(スタードメイン)を割り当てた話

ちょっとしたサイトこそわざわざレンタルサーバーなんて借りずに S3 を使ったほうが格安で、なおかつコマンドライン操作でファイルの同期が取れるので、どんどん使いましょう。

S3

バケット名=ドメイン名にしてバケット作成

ドメイン名にしないと、後の Route53 でエンドポイントとして出てきてくれません。ハマりどころでしかないです。

f:id:doranekohc:20170224233755p:plain

ファイルを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 を出すようにしておきました。

f:id:doranekohc:20170224234024p:plain

アクセス許可 - バケットポリシーの編集

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 に今回のドメインを追加

今回はスタードメインで取得したドメインです。

f:id:doranekohc:20170224234157p:plain

Create Record Set で ドメインを s3 エンドポイントに割り当てる

ちょっとこのスクショだと出てないんですが、 S3 のエンドポイントが選択できるようになっているはずです。

f:id:doranekohc:20170224234244p:plain

以上で Route53 の設定は完了です。 必要なら www.example-piyopiyo.net も同様にエイリアスしておくと良いかもしれません。

スタードメイン

ドメイン管理画面の ネームサーバー に、Route53 でメモったネームサーバー4つを設定します

しばらくすると反映されると思います。おしまい。

お名前さんなど、他のドメイン屋さんでも似たような手順で反映可能だと思います。

ちなみに

独自ドメインでメールを送受信したいとなったら、 AWS SES とか別途メールサーバーを立てる必要があるのでお気をつけくださいまし。

以上。お粗末さまでした。