Amazon Simple Storage Service
開発者ガイド (API バージョン 2006-03-01)

例: 独自ドメインを使用して静的ウェブサイトをセットアップする

Amazon S3 で静的ウェブサイトをホスティングするとします。ドメインは登録済みであり (例: example.com)、http://www.example.comhttp://example.com へのリクエストに対しては Amazon S3 からコンテンツを配信するようにします。既に存在する静的ウェブサイトを Amazon S3 でホスティングすることにした場合も、ゼロから始める場合も、この例を使用して、ウェブサイトを Amazon S3 でホスティングする方法を学習してください。

開始する前に

この例で実行するステップでは、以下のサービスを使用します。

Amazon Route 53 – Route 53 では、ドメインを登録し、ドメインのインターネットトラフィックをルーティングする先を定義します。Route 53 エイリアスレコードを作成して、ドメイン (example.com) とサブドメイン (www.example.com) のトラフィックを HTML ファイルが含まれている Amazon S3 バケットにルーティングする方法について説明します。

Amazon S3 – Amazon S3 を使用して、バケットを作成したり、サンプルウェブサイトページをアップロードしたり、全員がコンテンツを表示できるようアクセス許可を設定したりします。また、ウェブサイトホスティング用にバケットを設定することもできます。

ステップ 1: ドメインを作成する

登録済みドメイン名 (example.com など) が無い場合は、Route 53 でドメイン名を登録します。詳細については、Amazon Route 53 開発者ガイドの「新しいドメインの登録」を参照してください。登録済みのドメイン名がある場合は、次の作業として、ウェブサイトホスティング用に Amazon S3 バケットを作成して設定し、ウェブサイトのコンテンツをアップロードします。

ステップ 2: バケットを作成および設定し、ウェブサイトのコンテンツをアップロードする

ルートドメイン (例: example.com) およびサブドメイン (例: www.example.com) の両方からのリクエストをサポートするために、2 つのバケットを作成します。1 つのバケットにはコンテンツが含まれます。リクエストをリダイレクトするよう他のバケットを設定します。

Step 2.1: 2 つの バケットを作成し、ウェブサイトのコンテンツをアップロードする

バケット名は、ホスティングするウェブサイトの名前と同じである必要があります。例えば、example.com というウェブサイトを Amazon S3 でホスティングするには、作成するバケットの名前は example.com となります。ウェブサイトを www.example.com の下でホスティングするには、バケットの名前を www.example.com とします。この例のウェブサイトは、example.comwww.example.com のどちらのリクエストもサポートします。

このステップでは、Amazon S3 コンソールに AWS アカウント認証情報でサインインして、次の 2 つのバケットを作成します。

  • example.com

  • www.example.com

注記

ドメインと同様、サブドメインには固有の S3 バケットが必要であり、バケットはサブドメインとまったく同じ名前を共有する必要があります。この例では、www.example.com サブドメインを作成しているため、www.example.com という名前の S3 バケットも必要です。

バケットを作成し、ホストするためのウェブサイトのコンテンツをアップロードするには

  1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. バケットを 2 つ作成し、ドメイン名およびサブドメインと同じ名前を付けます。たとえば、example.comwww.example.com です。

    詳細な手順については、Amazon Simple Storage Service コンソールユーザーガイド の「S3 バケットを作成する方法」を参照してください。

  3. ウェブサイトのデータを example.com バケットにアップロードします。

    ウェブサイトのコンテンツは、ルートドメインのバケット (example.com) からホスティングし、www.example.com に対するリクエストはルートドメインのバケットにリダイレクトします。コンテンツは、どちらのバケットにも保存できます。この例では、コンテンツを example.com バケットでホスティングします。コンテンツの種類は、テキストファイルや、家族の写真、ビデオなど、何でもかまいません。まだウェブサイトを作成したことがない場合は、この例のためにファイルを 1 つだけ用意してください。どのようなファイルでもアップロードできます。たとえば、次に示す HTML を使用してファイルを作成し、バケットにアップロードします。ウェブサイトのホームページのファイル名は、一般的には index.html ですが、任意の名前を付けることができます。後のステップで、このファイル名をウェブサイトのインデックスドキュメント名として指定します。

    <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>My Website Home Page</title> </head> <body> <h1>Welcome to my website</h1> <p>Now hosted on Amazon S3!</p> </body> </html>

    手順については、Amazon Simple Storage Service コンソールユーザーガイドの「オブジェクトを S3 バケットにアップロードする方法」を参照してください。

バケットのアクセス許可の設定

ウェブサイトをホストするには、バケットにパブリック読み取り権限が必要です。世界中のすべてのユーザーに、このバケットへの読み取りアクセス権限が付与されます。これは意図的な設定です。デフォルトでは、Amazon S3 はアカウントとバケットへのパブリックアクセスをブロックします。パブリックの読み取りアクセスを許可するには、バケットのパブリックアクセスブロックを無効にし、バケットポリシーを作成する必要があります。

  1. バケットのパブリックアクセスブロックを無効にするには、次のステップを実行します。

    1. バケットを選択し、[Edit public access settings (パブリックアクセス設定の編集)] を選択します。

    2. [Block all public access (すべてのパブリックアクセスをブロックする)] をクリアし、[保存] を選択します。

    3. 変更を保存します。

  2. パブリック読み取りアクセス権限を付与するには、次のバケットポリシーをバケットにアタッチします。example.com を実際のバケットの名前に置き換えてください。

    バケットポリシーをアタッチする手順については、Amazon Simple Storage Service コンソールユーザーガイドの「S3 バケットポリシーを追加する方法」を参照してください。

    { "Version":"2012-10-17", "Statement":[ { "Sid":"PublicReadGetObject", "Effect":"Allow", "Principal":"*", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::example.com/*" ] } ] }

    重要

    上記のポリシーは単なる例であり、バケットのコンテンツへのフルアクセスを許可します。セキュリティのベストプラクティスの詳細については、「Amazon S3 バケット内のファイルを保護するにはどうすればよいですか?」を参照してください。

    これで、2 つのバケット example.comwww.example.com が作成され、ウェブサイトのコンテンツが example.com バケットにアップロードされました。次のステップでは、リクエストを example.com バケットにリダイレクトするように www.example.com を設定します。リクエストをリダイレクトすることで、ウェブサイトのコンテンツの 1 つのコピーのみを維持できます。ブラウザに www と入力する訪問者も、ルートドメインだけを指定する訪問者も、example.com バケットの同じウェブサイトコンテンツにルーティングされます。 

ステップ 2.2: バケットをウェブホスティング用に設定する

バケットをウェブサイトホスティング用に設定すると、そのウェブサイトには、Amazon S3 によって割り当てられたバケットウェブサイトエンドポイントを使用してアクセスできるようになります。

このステップでは、両方のバケットをウェブサイトホスティング用に設定します。最初に、example.com をウェブサイトとして設定してから、すべてのリクエストを www.example.com バケットにリダイレクトするように example.com を設定します。

バケットをウェブサイトホスティング用に設定するには

  1. AWS マネジメントコンソール にサインインし、Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. [Bucket name (バケット名)] リストで、静的ウェブサイトホスティングを有効にするバケットの名前を選択します。

  3. [プロパティ] を選択します。

  4. [静的ウェブサイトホスティング] を選択します。

  5. example.com バケットをウェブサイトホスティング用に設定します。[インデックスドキュメント] ボックスに、インデックスページの名前を入力します。

  6. [Save] を選択します。

ステップ 2.3: ウェブサイトのリダイレクトを設定する

ウェブサイトホスティング用にバケットを設定したので、www.example.com バケットが www.example.com へのすべてのリクエストを example.com にリダイレクトするように設定します。

リクエストを www.example.com から example.com にリダイレクトするには

  1. Amazon S3 コンソールの [バケット] リストで、バケットを選択します (この例では www.example.com)。

  2. [プロパティ] を選択します。

  3. [静的ウェブサイトホスティング] を選択します。

  4. [リクエストをリダイレクトする] を選択します。[ターゲットバケットまたはドメイン] ボックスに、example.com と入力します。

  5. [Save] を選択します。

ステップ 2.4: ウェブサイトトラフィックのログ記録を設定する

オプションで、ウェブサイトにアクセスする訪問者数を追跡するログ記録を設定できます。そのためには、ルートドメインバケットのログ記録を有効にします。詳細については、「(オプション) ウェブトラフィックのログ記録の設定」を参照してください。

ステップ 2.5: エンドポイントとリダイレクトをテストする

このウェブサイトをテストするには、ブラウザにエンドポイントの URL を入力します。リクエストがリダイレクトされて、ブラウザには example.com のインデックスドキュメントが表示されます。

次のステップでは、カスタマーがすべての URL を使用してサイトにアクセスできるように、Amazon Route 53 を使用します。

ステップ 3: example.com と www.example.com のエイリアスレコードを追加する

このステップでは、エイリアスレコードを作成してドメインのホストゾーンに追加し、example.comwww.example.com を対応する S3 バケットにマッピングします。エイリアスレコードでは、IP アドレスを使用する代わりに、Amazon S3 ウェブサイトエンドポイントを使用します。Amazon Route 53 によって、エイリアスレコードと、Amazon S3 バケットが存在する IP アドレスとのマッピングが維持されます。

トラフィックをウェブサイトにルーティングするには

  1. https://console.aws.amazon.com/route53/ にある Route 53 コンソールを開きます。

    注記

    まだ Route 53 を使用していない場合は、Amazon Route 53 開発者ガイド の「ステップ1: ドメインを登録する」を参照してください。セットアップが完了したら、指示を再開できます。

  2. ホストゾーンリストから、ドメインの名前を選択します。

  3. [Create Record Set (レコードセットの作成)] を選択します。

    注記

    各レコードには、1 つのドメイン (example.com) やサブドメイン (www.example.com) のトラフィックをルーティングする方法に関する情報が含まれます。レコードは、ドメインのホストゾーンに保存されます。

  4. 次の値を指定します。

    名前

    作成する最初のレコードでは、デフォルト値 (ホストゾーン名とドメイン名) をそのまま使用します。これで、ドメインと同じ名前を持つバケットにインターネットトラフィックがルーティングされます。

    このステップを繰り返して、サブドメインの 2 つ目のレコードを作成します。2 つ目のレコードでは、[www] と入力します。これで、インターネットトラフィックは www.example.com バケットにルーティングされます。

    [A – IPv4 アドレス] を選択します。

    エイリアス

    [Yes] を選択します。

    エイリアス先

    Amazon S3 バケットのエンドポイントの名前を入力します。(例: example.com (s3-website-us-west-2))

    注記

    両方のレコードの [Alias Target (エイリアス先)] に同じ値を指定します。Route 53 は、レコードの名前に基づいて、トラフィックをルーティングするバケットを決定します。

    ルーティングポリシー

    デフォルト値の [Simple] をそのまま使用します。

    ターゲットの正常性の評価

    デフォルト値の [No] をそのまま使用します。

  5. [Create] を選択します。

  6. www.example.com に対してステップ 3 – 5 を繰り返し、レコードを作成します。

次のスクリーンショットは、example.com のエイリアスレコードを図で示しています。www.example.com のエイリアスレコードも作成する必要があります。

注記

リソースレコードセットの作成、変更、および削除が Route 53 DNS サーバーに反映されるには時間がかかります。通常、変更は 2~3 分以内にすべての Route 53 ネームサーバーに伝達されます。まれに、プロパゲートするのに最大で 30 分ほどかかることがあります。

ステップ 4: テストする

ウェブサイトが正しく動作することを確認するために、ブラウザで次の URL を入力します。

  • http://example.comexample.com バケット内のインデックスドキュメントが表示されます。

  • http://www.example.com – リクエストが http://example.com にリダイレクトされます。

状況によっては、期待される動作を実現するために、ウェブブラウザのキャッシュの消去が必要になる場合があります。