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 つのバケットにはコンテンツが含まれます。リクエストをリダイレクトするよう他のバケットを設定します。

ステップ 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 です。

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

  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>

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

  4. ウェブサイトをホストするには、バケットにパブリック読み取り権限が必要です。世界中のすべてのユーザーに、このバケットへの読み取りアクセス権限が付与されます。これは意図的な設定です。パブリック読み取りアクセス権限を付与するには、次のバケットポリシーを example.com バケットにアタッチします。example.com を実際のバケットの名前に置き換えてください。バケットポリシーをアタッチする手順については、「S3 バケットポリシーを追加する方法」(Amazon Simple Storage Service コンソールユーザーガイド) を参照してください。

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

    これで、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. [Properties] を選択します。

  4. [Static website hosting] を選択します。

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

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

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

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

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

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

  2. [Properties] を選択します。

  3. [Static website hosting] を選択します。

  4. [Redirect requests] を選択します。[Target bucket or domain] ボックスに、「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 コンソールを開きます。

  2. ナビゲーションペインで [Hosted zones] を選択します。

    注記

    ドメインの登録時に、Amazon Route 53 によって同名のホストゾーンが自動的に作成されます。ホストゾーンには、ドメインのトラフィックを Route 53 によってどのようにルーティングするかの情報が含まれます。

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

  4. [Create Record Set] を選択します。

    注記

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

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

    名前

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

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

    タイプ

    [A – IPv4 address] を選択します。

    エイリアス

    [Yes] を選択します。

    エイリアス先

    Amazon S3 バケットを作成したリージョンの名前を入力します。『アマゾン ウェブ サービス全般のリファレンス』の「AWS のリージョンとエンドポイント」章の「Amazon Simple Storage Service ウェブサイトエンドポイント」一覧の「ウェブサイトエンドポイント」列の該当する値を使用します。

    注記

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

    ルーティングポリシー

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

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

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

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

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

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

注記

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

ステップ 4: テストする

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

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

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

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