わずか7+1ステップでできる、WEBサイトのS3移行

消費増税で否応なく財政が逼迫する今日このごろ、

さあ今こそ、レンタルサーバーに置いたサイトをS3移行して、経費増大を取り返そうではありませんか!

参考:Amazon S3による静的Webサイトホスティング

1. コンテンツの用意

WEBサイトのHTMLや画像を用意します。

なお、S3は 静的な ファイルホスティングサービスなので、 WordpressなどのPHPで動的に生成するタイプのサイトはS3には置けません。

もちろん、静的な部分(画像など)だけS3に置いて、 動的な部分は社内サーバーやEC2に設置するという選択肢もあります。

2. アカウント作成

公式サイトトップから。

f:id:doloopwhile:20140407020723p:plain

なお、登録にはクレジットカードと、電話番号(認証のため)が求められます。

3. バケット作成

ともあれ、(コンソール)https://console.aws.amazon.com/console/homeを開きましょう。 色々なサービスがありますね。

まずS3を開きます。

"Create Bucket" からBucketを作成します。 "Bucket" は、フォルダーかHDDドライブのようなもので、 すべてのObject(ファイル)はBucketに所属します。

f:id:doloopwhile:20140407020816p:plain

BucketのName = WEBサイトのホスト名にします。 RegionはTokyoにします。もちろん、海外向けのサイトなら海外のRegionを選びます。

f:id:doloopwhile:20140407020853p:plain

バケットを作った後、"Properties"を開き、"Static Website Hosting"から"Enable website hosting" を選択して、 バケットをWebサイトとして使えるようにします。

4. ユーザー作成

AWSコンソールから手動でアップロードもできます。しかし、s3cmd を使うと格段に楽になります。

それにはまず、ツール用のユーザーを作ります。

AWSコンソールからIAMを開き、 "Create New Users" から適当なユーザーを作ります。

f:id:doloopwhile:20140407020918p:plain

アクセスキーとシークレットキーが表示されます。シークレットキーはここでしか確認できないので、注意してください。 (もしシークレットキーを忘れたら、"User Actions" の "Manage Access Key" から新しいアクセスキーを作りなおします。)

f:id:doloopwhile:20140407021027p:plain

できたばかりのユーザーは何の権限も持っていないので何もできません。 "User Policies" - "Attach Policies" から権限を追加します。 とりあえず "Amazon S3 Full Access" を選びます。

5. s3cmdインストール&同期

s3cmdはPC内のフォルダーとS3のBucketを同期させるツールです。

私が使っているLinux Mintなら、apt-get install s3cmd で入りました。

PythonさえあればWindowsでもMacでもインストールできるようなので、がんばってください。

手順としては、

  1. http://www.python.org/getit/ からWindowsPythonを入手
  2. インストール
  3. https://github.com/s3tools/s3cmd から s3cmdを入手
  4. 任意のフォルダに展開
  5. コマンドラインから python setup.py を実行
  6. s3cmd --configure を実行 (アクセスキー・シークレットキー入力)
  7. 生成されたファイルの中身を修正
  8. s3cmd を実行

なんでもIT屋の宿命: 続・Cloudnお試ししてます・Windows Python編

あとはコマンド一発で同期が完了します。

s3cmd sync -P -r -F 【フォルダー】 s3://【バケット名】

6. サイトの表示確認

さあ、 http://【WEBサイトのホスト名】.s3-website-ap-northeast-1.amazonaws.com/ を開きましょう(東京リージョンの場合)

404になる場合、単にindex.htmlが無いか、BucketのPropertiesで"Static Website Hosting"が設定されていないのかもしれません。

7. DNS登録

このままだとホスト名が不格好なので、DNSサーバーのCNAMEで、 本来のホスト名を【WEBサイトのホスト名】.s3-website-ap-northeast-1.amazonaws.comに転送する設定を追加します。

8. 1ヶ月後の請求書を見る

AWS万歳!