メニュー
Amazon Simple Storage Service
開発者ガイド (API Version 2006-03-01)

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

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

開始する前に

この例のステップでは、次のサービスを操作する方法について説明します。

選択したドメインレジストラ – example.com などの登録済みドメイン名がない場合は、選択したレジストラでドメイン名を作成する必要があります。一般的には、ドメインを登録するには毎年少額の手数料が必要です。ドメイン名を登録する手順については、レジストラのウェブサイトを参照してください。

Amazon S3 – Amazon S3 を使用して、バケットを作成したり、サンプルウェブサイトページをアップロードしたり、全員がコンテンツを表示できるようアクセス許可を設定したりします。また、ウェブサイトホスティング用にバケットを設定することもできます。この例では、http://www.example.comhttp://example.com のどちらに対してもリクエストできるようにするので、2 つのバケットを作成しますが、コンテンツをホスティングするのは一方のバケットのみです。他方の Amazon S3 バケットは、そのコンテンツをホスティングしているバケットにリクエストをリダイレクトするように設定します。

Amazon Route 53 – Amazon Route 53 を DNS プロバイダーとして設定します。ドメインのホストゾーンを Amazon Route 53 で作成し、適切な DNS レコードを設定します。既存の DNS プロバイダーから切り替える場合は、ドメインの DNS レコードがすべて転送されたことを確認する必要があります。

ドメイン、ドメインネームシステム (DNS)、CNAME レコード、および A レコードに関する基本的な知識を習得しておくことをお勧めします。これらの概念に関する詳しい説明はこのガイドでは取り上げません。ドメイン登録時に、ドメインレジストラから必要な基本的情報が提供されるのが一般的です。

この例では、Amazon Route 53 を使用します。ただし、ほとんどのレジストラを使用して、Amazon S3 バケットを指す CNAME レコードを定義できます。

注記

この例のすべてのステップで、example.com をドメイン名として使用します。このドメイン名を、実際に登録したドメイン名で置き換えてください。

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

登録済みドメインが既にある場合、このステップは省略できます。ウェブサイトをホスティングするのが初めての場合は、最初のステップはドメイン(例: example.com)を任意のレジストラに登録することです。

レジストラを選択したら、そのレジストラのウェブサイトに記載されている手順にしたがってドメイン名を登録します。ドメイン名の登録に使用できるレジストラウェブサイトのリストについては、ICANN.org ウェブサイトの「Information for Registrars and Registrants」を参照してください。

ドメイン名の登録が完了したら、次の作業は、Amazon S3 バケットを作成してウェブサイトホスティング用に設定することと、ウェブサイトのコンテンツをアップロードすることです。

ステップ 2: バケットを作成および設定し、データをアップロードする

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

ステップ 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 ですが、任意の名前を付けることができます。後のステップで、このファイル名をウェブサイトのインデックスドキュメント名として指定します。

    Copy
    <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 コンソールユーザーガイド) を参照してください。

    Copy
    { "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 コンソールのバケットリストで、バケットを選択します (この例では www.example.com)。

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

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

  4. [Redirect requests] を選択します。[Target bucket or domain] ボックスに、「example.com」と入力します。

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

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

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

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

リクエストを別のバケットに正常にリダイレクトしました。すべてのインターネットユーザーが以下の Amazon S3 バケットウェブサイトエンドポイントにアクセスできるようになります。

  • example.com.s3-website-us-east-1.amazonaws.com

  • http://www.example.com.s3-website-us-east-1.amazonaws.com

前述のステップで登録したドメインからのリクエストを提供するように、追加の設定タスクを実行します。例えば、ドメイン example.com を登録した場合は、次の URL からリクエストを提供します。

  • http://example.com

  • http://www.example.com

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

ステップ 3: Amazon Route 53 ホストゾーンを作成、設定する

Amazon Route 53 をドメインネームシステム (DNS) プロバイダーとして設定します。コンテンツをルートドメイン (例: example.com) から配信できるようにしたい場合、Amazon Route 53 を使用する必要があります。ホストゾーンを作成し、ここで、ドメインに関連付けた DNS レコードを保持します。

  • example.com ドメインを example.com バケットにマッピングするエイリアスレコード。これは、ステップ 2.2 でウェブサイトエンドポイントとして設定したバケットです。

  • www.example.com サブドメインを www.example.com バケットにマッピングする別のエイリアスレコード。ステップ 2.2 で、example.com バケットにリクエストをリダイレクトするようにこのバケットを構成しました。

ステップ 3.1: ドメインのホストゾーンを作成する

Amazon Route 53 コンソール(https://console.aws.amazon.com/route53)に移動して、自分のドメインのホストゾーンを作成します。手順については、『http://docs.aws.amazon.com/Route53/latest/DeveloperGuide/』の「ホストゾーンの作成」を参照してください。

次の例は、example.com ドメイン用に作成されたホストゾーンを示しています。このドメインの Amazon Route 53 ネームサーバー(NS)を書き留めます。これは、後で必要になります。

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

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

詳細な手順については、『Amazon Route 53 開発者ガイド』の「Creating Resource Record Sets by Using the Amazon Route 53 Console」を参照してください。

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

このホストゾーンを有効にするには、Amazon Route 53 をドメイン example.com の DNS サーバーとして使用する必要があります。既存のウェブサイトを Amazon S3 に移行する予定の場合は、最初にドメイン example.com に関連付けられている DNS レコードを、このドメイン用に Amazon Route 53 で作成したホストゾーンに転送する必要があります。新しいウェブサイトを作成する場合は、ステップ 4 に直接進むことができます。

注記

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

ステップ 3.3: 他の DNS レコードを現在の DNS プロバイダから Amazon Route 53 に転送する

DNS プロバイダーを Amazon Route 53 に切り替える前に、MX レコード、CNAME レコード、A レコードなど、残りの DNS レコードを DNS プロバイダーから Amazon Route 53 に転送する必要があります。次に示すレコードは、転送する必要はありません。

  • NS レコード – 転送するのではなく、このレコードの値を Amazon Route 53 で用意されたネームサーバーの値で置き換えます。

  • SOA レコード – Amazon Route 53 によってこのレコードがホストゾーン内に作成され、デフォルト値が設定されます。

必須の DNS レコードを移行するステップは、既存のすべてのサービスが引き続きこのドメイン名で利用できるようにするために重要です。

ステップ 4: DNS プロバイダを Amazon Route 53 に切り替える

DNS プロバイダーを Amazon Route 53 に切り替えるには、DNS プロバイダーに問い合わせて、ネームサーバー (NS) レコードを、Amazon Route 53 で設定した委任のネームサーバーを使用するように更新する必要があります。

DNS プロバイダーのサイトで、次の Amazon Route 53 コンソールのスクリーンショットに示すホストゾーンの委任セット値を反映するように NS レコードを更新します。詳細については、Amazon Route 53 開発者ガイドの「Updating Your DNS Service's Name Server Records」を参照してください。

Amazon Route 53 への転送が完了したら、ドメインのネームサーバーが確かに変更されたことを確認します。Linux コンピュータでは、dig という DNS ルックアップユーティリティを使用します。たとえば、次の dig コマンドを使用します。

Copy
dig +recurse +trace www.example.com any

このコマンドは次の出力を返します (ここでは、一部のみを示します)。この出力に表示されているネームサーバーは、example.com ドメインのために Amazon Route 53 ホストゾーンで作成したネームサーバーと同じものです。

Copy
... example.com. 172800 IN NS ns-9999.awsdns-99.com. example.com. 172800 IN NS ns-9999.awsdns-99.org. example.com. 172800 IN NS ns-9999.awsdns-99.co.uk. example.com. 172800 IN NS ns-9999.awsdns-99.net. www.example.com. 300 IN CNAME www.example.com.s3-website-us-east-1.amazonaws.com. ...

ステップ 5: テストする

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

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

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

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