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

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

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(Domain Name System)、CNAME レコード、および A レコードについて基本的な知識があるとよいでしょう。これらの概念に関する詳しい説明はこのガイドでは取り上げませんが、ドメイン登録時に、ドメインレジストラから必要な基本的情報が提供されるのが一般的です。

注記

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

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

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

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

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

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

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

  1. バケットを 2 つ作成します。

  2. これらのバケットをウェブサイトホスティング用に設定します。

  3. 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

注記

この例のためのバケットを作成するには、次の手順を実行します。この例のとおりに実行するときに、example.com の代わりに実際に登録したドメイン名を使用してください。

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

  2. バケットを 2 つ作成し、ドメイン名と同じ名前を付けます。バケット名の 1 つにはサブドメイン www が含まれます。例えば、example.comwww.example.com です。

    詳細な手順については、「Amazon Simple Storage Service コンソールユーザーガイド」の「Creating a Bucket」を参照してください。

  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>

    詳細な手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「Uploading Objects into Amazon S3」を参照してください。

  4. オブジェクトに誰でもアクセスできるように、アクセス許可を設定します。

    次に示すバケットポリシーを example.com バケットにアタッチします。example.com を実際のバケットの名前に置き換えてください。バケットポリシーをアタッチする詳細な手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「Editing Bucket Permissions」を参照してください。

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

    これで、2 つのバケット example.comwww.example.com が作成され、ウェブサイトのコンテンツが example.com バケットにアップロードされました。次のステップでは、リクエストを example.com バケットにリダイレクトするように www.example.com を設定します。リクエストをリダイレクトすると、同じウェブサイトコンテンツをコピーして 2 か所で以上維持する必要がなくなり、訪問者がブラウザで「www」を指定した場合もルートドメインだけを指定した場合も、同じウェブサイトコンテンツが「example.com」バケットから表示されるようになります。

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

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

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

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

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

    詳細な手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「To manage a bucket's website configuration」を参照してください。ウェブサイトエンドポイントの URL を書き留めます。これは、後で必要になります。

  2. このウェブサイトをテストするには、[Endpoint] の URL をブラウザに入力します。

    ブラウザにインデックスドキュメントページが表示されます。次に、www.example.com へのリクエストをすべて www.example.com にリダイレクトするように example.com バケットを設定します。

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

  1. Amazon S3 コンソールの [Buckets] リストで、[www.example.com] を右クリックし、[Properties] をクリックします。

  2. [Static Website Hosting] の下の [Redirect all requests to another host name] をクリックします。[Redirect all requests] ボックスに「example.com」と入力します。

  3. このウェブサイトをテストするには、[Endpoint] の 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 が対応する Amazon S3 バケットにマッピングされます。IP アドレスを使用する代わりに、このエイリアスレコードでは Amazon S3 ウェブサイトエンドポイントが使用されます。Amazon Route 53 によって、エイリアスレコードと、Amazon S3 バケットが存在する IP アドレスとのマッピングが維持されます。

詳細な手順については、「Amazon Route 53 開発者ガイド」の「Creating Alias Resource Record Sets Using the 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 レコードを 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 Registrar's Name Servers」を参照してください。

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

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

このコマンドは次の出力を返します(ここでは、一部のみを示します)。この出力に表示されている 4 つのネームサーバーは、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 にリダイレクトされます。

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