耐久性99.99999999999%を誇るオンラインストレージサービス Amazon Simple Storage Service (S3)をスタティックなWebサイトのホスティングにご利用いただけることをご存知でしょうか? S3を使えば、非常に耐久性が高く、大量のアクセスにも耐えられるスタティックなWebサイトを安価な従量料金で、今日からすぐにでもスタートすることが可能です。
もっと皆さんにこのことを知っていただくために、月額10円~でレンタルサーバーをはじめる方法というサイトを用意いたしました。S3を使ってWebサイトをホスティングするメリットやその特徴をわかりやすく紹介しておりますので、是非一度ご覧ください!
S3によるWebサイトのホスティングは今すぐにはじめることができます。行う作業は以下の2つです。
- コンテンツを保存するS3バケットを作成する。
- 作成したS3バケットをWebサイト用に設定する。
後は作成したバケットにコンテンツをアップロードするだけです。
それでは具体的な手順を見ていきましょう。
STEP1: バケットを作成する
-
AWS Management ConsoleにログインしAmazon S3 タブを開きます。 https://console.aws.amazon.com/s3
-
Create Bucketボタンをクリックします。
Create a Bucketダイアログボックスが表示されます。
-
Bucket Nameフィールドにバケット名を入力します。
バケット名はAmazon S3内に存在する全てのバケット名に対してユニークでなければなりません。バケット名が他と被らないようにするために、例えば会社名をバケット名の頭につけるという方法もあります。
またバケット名はアップロードしたオブジェクト(ファイル)のURLの一部に使われますので、バケット内のオブジェクトを示唆するような名前をつけるのがオススメです。
バケット名には次のような制約があります。
- アルファベットの小文字、数字、ピリオド (.)、アンダースコア (_)、ハイフン (-)を使用可能です。
- 数字か文字ではじまらなければいけません。
- 3から255文字でなければなりません。
- IPアドレスのようなフォーマットはいけません。(例、192.168.5.4)
S3でウェブサイトを運用する場合、バケット名がホスト名の一部として使用されますので、ドメイン名のルールに従うように、以下のガイドラインに沿って、バケット名をつけることを推奨します。
- アンダースコア (_) を含まないようにする。
- 3から63文字にする。
- 終わりをハイフン(-)にしない。
- ピリオドを2つ続けて使用しない。
- ピリオドとハイフンをつなげない。 (だめな例
my-.bucket.com
やmy.-bucket
)
また、Amazon S3のCNAMEサポートを使って、独自ドメインを使用してS3でウェブサイトをホスティングする場合、バケット名をホスト名と一致させる必要があります(例えば、
mysite.horiuchi.asia
というホスト名で運用したい場合、バケット名をmysite.horiuchi.asia
とする必要があります。)のでご注意ください。また、一度作成したバケットは、バケット名を変更することができませんのでこちらも注意してください。 -
Regionのドロップダウンリストから、リージョンを選択します。
デフォルトではAmazon S3はUS-Standardリージョンにバケットを作成します。レイテンシーの最適化、コストの最小化、または法的な要求事項に対処するためにも一番近いリージョン(Tokyo リージョン)を選択することをおすすめします。リージョンに保存されたオブジェクトは明示的に他のリージョンに移動させない限り、選択したリージョンの外に出ることはありません。
次のステップとして、アクセスログのセットアップをすることもできます。サーバーへのアクセスログはバケット内に作成されます。アクセスログには、リクエストタイプ、アクセスされたパス、アクセス日時などが含まれます。デフォルトではアクセスログは収集されないようになっています。
-
アクセスログを設定の可否によりどちらかにお進みください。
アクセスログの設定の可否 次のステップ ログの設定をしない場合 Createをクリックしてください。 ログの設定を行う場合 Set Up Logging>をクリックしてください。 アクセスログを有効にすることに関しては料金は発生しません。ただし、アクセスログが作成され、バケットに保存されるとその容量に関しては料金が発生いたします。(いらなくなったログファイルはいつでも削除することができます。)また、ログファイルをバケットに書き込む際の転送量はかかりませんが、ログファイルのダウンロードには料金がかかります。料金に関するさらに詳しい情報についてはAmazon S3 料金表をご覧ください。
-
Set Up Loggingをクリックすると、Create a Bucket - Set Up Loggingダイアログボックスが表示されます。
-
ログを有効にするには、Enabledチェックボックスをチェックします。
-
Target Bucketでは、ログを保存するバケットを選択します。
-
Target Prefixでは、ログファイルのプレフィックスをつけることができます。
Amazon S3は保存されるログファイルのファイル名の先頭にここで入力した文字列を付与します。 例えば、"logs/"というプレフィックスをつけると、ログファイルは
logs
というフォルダに保存されるようになります。
-
-
Createをクリックします。
バケットが正常に作成されると、コンソールに空のバケットが表示されます。
STEP2: 作成したバケットをWebサイト用に設定する。
-
Webサイト機能を有効にする。
-
作成したバケットのPropertiesを開き、Websiteタブをクリックします。
-
Enabledチェックボックスをチェックします。
-
Index Documentには、インデックスファイル(TOPページ)のファイル名を入力します。
-
設定を有効にするためにSaveボタンをクリックし設定を保存します。
-
-
次にバケットポリシーを追加します。デフォルトではバケットにアップロードしたファイルは自分しか閲覧権限がありませんので、アップロードしたファイルが誰でも見られるようにする必要があります。
アップロードしたファイルに対してひとつひとつ、誰でも閲覧可能なようにパーミッションを設定することもできますが、大量のコンテンツがある場合時間がかかりますし、コンテンツを上書きする場合にも毎回設定を行う必要がでてきます。その点バケットポリシーを使えば、バケット内の全てのオブジェクトに対して、誰もが閲覧可能となるようなバケットポリシーを一度追加するだけで、それ以降そのバケットにアップロードされたオブジェクトは誰もが閲覧可能になりますので、バケットポリシーを追加することをおすすめします。バケットポリシーの追加方法は次のとおりです。
-
バケットのPropertiesを開き、Permissionsタブをクリックします。
-
Add Bucket Policyをクリックします。
-
以下のバケットポリシーをコピーし、Bucket Policy Editor内に張りつけます。(example-bucketの部分を自分のバケット名に書きかえてください。)
{ "Version":"2008-10-17", "Statement":[{ "Sid":"
PublicReadForGetBucketObjects
", "Effect":"Allow", "Principal": { "AWS": "*" }, "Action":["s3:GetObject"], "Resource":["arn:aws:s3:::example-bucket
/*" ] } ] } -
Saveボタンをクリックし設定を保存します。
-
-
インデックスドキュメントをアップロードします。
Amazon S3はウェブサイトのルートまたはサブフォルダに対するアクセスがリクエストされた際、インデックスドキュメントを返します。例えば、
http://example-bucket.s3-website-us-east-1.amazonaws.com/
にリクエストがあると、http://example-bucket.s3-website-us-east-1.amazonaws.com/index.html
を返します。-
ドキュメントを作成します。
ファイル名 (index.html)は先の手順で設定したIndex Documentで指定したものと同じである必要があります。
-
コンソールを使って、インデックスドキュメントをバケットにアップロードします。
-
-
ウェブサイトの動作確認を行います。
-
以下のURLをブラウザに入力します。(example-bucketの部分を自分のバケット名に変更してください。また東京リージョン以外のリージョンを選択した場合は、Website EndpointsでURLを確認ください。)
ブラウザ上にアップロードしたページが表示されたら成功です。
http://example-bucket.s3-website-ap-northeast-1.amazonaws.com (東京リージョンの場合)
-
設定は以上です。これだけでAmzon S3上でウェブサイトのホスティングを開始することができます。
独自ドメインで運用を行いたい場合には、次のようにCNAMEレコードでエイリアスを作成することで対応することができます。
ネクストステップ: 独自ドメインでアクセスできるよう設定する。
必要であれば、上記でセットアップしたAmzon S3上のウェブサイトを独自ドメインを使用して運用することもできます。
-
利用したいホスト名を決定します。今回は
mysite.horiuchi.asia
とします。 -
ホスト名と同名のバケットを作成します。
今回の例では、バケット名は
mysite.horiuchi.asia
になります。 -
S3バケット用のエイリアスとしてホスト名を定義するためにCNAMEレコードを作成します。今回の例では以下のようなレコードを作成します。
mysite.horiuchi.asia CNAME mysite.horiuchi.asia.s3-website-ap-northeast-1.amazonaws.com
CNAMEレコードの作成方法については、お使いのDNSサーバーもしくはDNSサービスの設定方法をご確認ください。DNSの設定は、Amazon Route53で行うこともできます。
いかがでしたでしょうか? このようにAmazon S3を使えば、簡単な手順で今すぐにウェブサイトのホスティングを開始することができます。是非お試しください!