s3cmdとRoute53で静的サイトをデプロイする手順メモ

クレカの類が復活したので、ドメイン買い直してAWSが使えるようにした。 そんでJSで作った類のアプリを静的サイトとしてホスティングしたいなーと思い、s3でサブドメインホスティングできるまでの作業メモを残す。

ググッて出る情報が色々古くて苦労した。

アカウント登録

クラウドコンピューティング なら アマゾン ウェブ サービス | 仮想サーバー、ストレージ、データベースのための Amazon のクラウドプラットフォーム(AWS 日本語) から登録。

クレカ認証と電話番号での自動入力の確認の2段階がある。

次に、クライアントから扱えるように https://console.aws.amazon.com/iam/ でアクセスキーを生成。メニューから AccessKeys -> Create Access Keys を選択。rootkey.csvをダウンロードさせられる。ダウンロードした rootkey.csv にアクセスキーとシークレットアクセスキーが入ってる。

s3cmdをインストールする

brew install python3
easy_install-3.3 pip3
pip3 install awscli
brew install s3cmd

まあpythonの部分はなんでもよいからとにかくawscli入れれば良い。 自分はhomebrewをHOMEにいれてるんだけど(~/homebrew) , s3cmdした後、なぜか/usr/local/Celler/s3cmd/~ にパスが通っていたので、$HOME/homebrew/Cellar/s3cmd/1.0.1/libexec にパスを追加しなおした。

さっきもらったrootkey.csvを参照しつつ s3cmdを設定する

$ s3cmd --configure

なんか色々聞かれるけど、~/.s3cfg が生成されるのであとでそれをいじってもよい。

バケットを作成する

s3cmd mb s3://test-app.mizchi.net

サブドメインで公開する場合、このバケット名はドメインと一致する必要がある。

s3cmd lsで現在のバケット一覧を見られる

~/s/awstest $ s3cmd ls
2014-03-08 18:30  s3://test-app.mizchi.net

ファイルを追加する

$ echo "<h1>test</h1>" > index.html
$ s3cmd put index.html  s3://test-app.mizchi.net/index.html

公開権限を設定する

s3cmd setacl s3://test-app.mizchi.net --acl-public --recursive

test-app.mizchi.net を開いた時にindex.htmlを開くようにするためには、AWSコンソールのs3の画面から Properties > Enable Website Hosting を開いて、index.htmlを入力する必要があった。これはs3cmdではやれないっぽい。誰か方法を知ってたら教えて下さい。

Route53

Route53はAWS上のDNSサーバー。以下、GUIばかりなんで本当に雑なメモを残す。ぐぐれ。

AWSコンソールからRoute53を開く。Create Hosted Zone で 登録したいドメインを入れる。今回は mizchi.net を指定した。ここらへん記憶あやふやなんだけど、ファースト、セカンダリ等のDNSサーバーのURLが生成される。

mizchi.netはお名前.comで買ったので、設定画面からDNSをRoute53へ向ける。さっきのDNSサーバーのURLを入力。

HostedZoneからRecordSetの数字を選択して、RecordSetを開く(わかりにくかった) Create Record Set でtest-app.mizchi.netを作る。Alias -> Yes, Alias Name で s3 のバケットからオートコンプリートされるので、選択。

これで test-app.mizchi.net が開ける。長かった。失敗した場合はDNSの浸透(2014年になってもこの言葉を使う必要があるか) を待つ。

ここ ← まあ、なんも書いてないのでそのうち消すと思う。