以前、「AWS EC2 + 網元でWordPressサイトを構築」をいう記事を書いたのですが、静的なファイル群であれば同じAWSのS3を使って公開出来る=ウェブサイトとしても活用できるので、その設定方法をメモしておきます。
目次
AWS S3とは
元々はクラウドのストレージサービス(ファイル置き場)なのですが、静的ファイル(htmlや画像など)であればレンタルサーバーのようにウェブサイトを公開することが可能です。
料金は従量課金ですが、PHPなどの動的なファイルやデータベースなどを使わなければそこらのレンタルサーバーより低価格でホームページを公開出来ます。
詳しくはこちらをご覧ください
月額10円~でレンタルサーバーをはじめる方法 | アマゾン ウェブ サービス(AWS)
S3バケットの作成
早速使える様にしてみます。
まずはManagement Console にログインし、S3をクリックし、S3の管理画面に入ります。
「Create Bucket」をクリックしてバケットを作ります。
ダイアログが表示されるので
Bucket Name: 静的ファイルを配信したいドメイン名(static.example.com)
Reasion: 日本なら Tokyo でOK
を入力し、ログを保存したい場合は「Set Up Logging >」いらない場合は「Create」をクリックします。
バケット名の主な注意点ですが、
- 一度作成したバケットは、バケット名を変更することができない。
- Amazon S3のCNAMEサポートを使って、独自ドメインを使用してS3でウェブサイトをホスティングする場合、バケット名をホスト名と一致させる必要がある。
(例えば、static.example.com というホスト名で運用したい場合、バケット名も static.example.com にする) - ルートドメイン(http://example.com)で運用したい場合、あらかじめDNSサーバーはRoute53を使う必要がある。
です。
他にもありますが、詳しい手順もあわせてこちらのブログをお読みください。
Amazon Web Services ブログ: 月額10円~ – Amazon S3でウェブサイトをホスティングする方法
作成したバケットを選択後「Properties」をクリックします。
右カラムの「Static Website Hosting」をクリックして項目を表示します。
Endpoint: に表示されているURLが作成したS3バケットのURLになります。
このURLのままでも使えますが、独自ドメインを割り当てることも可能です(後述)。
「Enable website hosting」をクリックし、index Document(末尾/でアクセスした場合に表示するファイル。入力必須)とError Document(404などで使うファイル)を設定します。
分かりやすいように、index.html と 404.html で良いでしょう。
次にバケットポリシーを追加します。
デフォルトではバケットにアップロードしたファイルは自分しか閲覧権限がありませんので、アップロードしたファイルが誰でも見られるようにする必要があります。
「Permissions」をクリックし「Add Bucket Policy」をクリックします。
「Bucket Policy Editor」ダイアログが出るので、次のコードを入力し「Save」します。
(その際、static.example.com の部分を自分のバケット名に書きかえること)。
{ "Version":"2008-10-17", "Statement":[{ "Sid":"PublicReadForGetBucketObjects", "Effect":"Allow", "Principal": { "AWS": "*" }, "Action":["s3:GetObject"], "Resource":["arn:aws:s3::: static.example.com/*" ] } ] }
ここまででバケットの作成は終わりです。
アクセスキーIDとセキュリティーキーの取得
次にアクセスキーとセキュリティーキーを取得します。
S3の管理画面からは右上のユーザー名のプルダウンから「Security Credentials(セキュリティ証明書)」をクリックします。
アクセス証明書の欄にアクセスキー IDとシークレットアクセスキーが表示されていると思います(無ければ作成)。この内容をコピーしておきます。
S3バケットにファイルを転送
とりあえず、先ほど作ったS3バケットの Endpoint のURLにアクセスしてみましょう。
まだ、何もファイルをアップロードしていないので、404 NotFond になります。
このままではちょっと格好が悪いので index.html と 404.html ぐらいは作って、アップロードしておきましょう。
S3対応のクライアントソフト(MacならTransmitなど、Windowsは自力で調べてください)で先ほど表示したアクセスキーIDとシークレットアクセスキーを入力接続します。
サーバーに接続できたら、作っておいたindex.htmlと404.htmlを転送します。
もう一度、Endpoint のURLにアクセスすれば秋ほどアップしたindex.htmlが表示されるはずです。
S3バケットに独自ドメインでアクセスする
DNSサーバーで static.example.com のCNAMEにS3のバケットを登録すれば独自ドメインでアクセする事も可能です。(以下、Route53の場合です)。
「Create Redord Set」をクリックしてレコードを追加します。
Name: S3のバケット名に割り当てたいドメイン名(=バケット名)(static.example.com)
Type: CNAME – Canonical name
Alias: No
TTL: 300(デフォルト)
Value: S3バケットのエンドポイント(static.example.com.s3-website-ap-northeast-1.amazonaws.com)
Routing Policy: Simple(デフォルト)
最後に「Save Record Set」をクリックして保存します。
※S3のバケットにルートドメイン(http://example.com)を割り当てる場合、あらかじめDNSサーバーはRoute53にしておく必要があります。
Amazon Web Services ブログ: 【AWS発表】Amazon S3にてルートドメインでWebサイトをホストできるようになりました!.
早ければ数分後には、独自ドメインでS3バケットの中身を表示できます。