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

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

概要

バケットを静的ウェブサイトのホスティング用に設定するには、ウェブサイト設定をバケットに追加します。この設定には、以下が含まれます。

  • インデックスドキュメント

    ユーザーが http://example.com のような URL を入力した場合、そのユーザーは特定のページを要求してはいません。この場合は、要求されたウェブサイトコンテンツが格納されているディレクトリの、デフォルトページがウェブサーバーから配信されます。このデフォルトページは「インデックスドキュメント」と呼ばれ、通常は index.html という名前です。バケットをウェブサイトホスティング用に設定するときは、インデックスドキュメントを指定する必要があります。Amazon S3 からこのインデックスドキュメントが返されるのは、ルートドメインまたはサブフォルダに対するリクエストが行われたときです。詳細については、「インデックスドキュメントとフォルダ」を参照してください。

  • ログ作成 (オプション)

    ウェブサイトにアクセスする閲覧者の数を追跡するには、ルートドメインのバケットのログ記録を有効にする必要があります。ログを有効にすることは省略可能です。詳細については、「(オプション) ウェブトラフィックのログ記録の設定」を参照してください。

  • エラードキュメント

    エラーが発生した場合は、Amazon S3 から HTML エラードキュメントが返されます。4XX クラスのエラーの場合は、ウェブサイト独自のエラードキュメントを返すこともでき、このドキュメントの中で、ウェブサイトのユーザー向けに追加のガイダンスを記述することができます。詳細については、「カスタムエラードキュメントのサポート」を参照してください。

  • すべてのリクエストをリダイレクトします

    ルートドメインが example.com の場合に、http://example.comhttp://www.example.com のどちらに対するリクエストにも応答できるようにするには、2 つのバケット example.comwww.example.com を作成し、ウェブサイトのコンテンツを一方のバケット、例えば example.com 内のみで維持し、他方のバケットはリクエストをすべて example.com バケットにリダイレクトするように設定します。

  • 高度な条件付きリダイレクト

    条件に応じてリクエストのルーティング先を変えることができます。この条件として使用できるのは、リクエストの中の特定のオブジェクトキー名またはプレフィックス、またはレスポンスコードです。例えば、バケット内のあるオブジェクトを削除する、または名前を変更する場合は、リクエストを別のオブジェクトにリダイレクトするルーティングルールを追加します。例えば、あるフォルダを使用不可能にする場合は、リクエストを別のページにリダイレクトするルーティングルールを作成し、リダイレクト先のページで、フォルダが使用できなくなった理由を説明します。ルーティングルールは、エラー状態を処理するために追加することもできます。その場合は、エラーを発生させたリクエストを別のドメインにリダイレクトし、そのドメインでエラーを処理します。

バケットウェブサイトの設定を管理するには、Amazon S3 コンソールを使用します。コンソールの、バケットの [Properties] タブで、ウェブサイト設定を指定します。

静的ウェブサイトを Amazon S3 でホスティングするには、インデックスドキュメント名の指定だけが必要です。

バケットをウェブサイトホスティング用に設定するときは、高度なリダイレクトルールを指定することもできます。

バケットのウェブサイトエンドポイントへのリクエストをすべて別のホストにリダイレクトするには、ホスト名の指定だけが必要です。

ルールは XML を使用して記述します。次のセクションでは、リダイレクトルールの一般的な構文と、指定の例を示します。

ルーティングルールを指定するための構文

ウェブサイト設定でルーティングルールを定義するための一般的な構文を次に示します。

Copy
<RoutingRules> = <RoutingRules> <RoutingRule>...</RoutingRule> [<RoutingRule>...</RoutingRule> ...] </RoutingRules> <RoutingRule> = <RoutingRule> [ <Condition>...</Condition> ] <Redirect>...</Redirect> </RoutingRule> <Condition> = <Condition> [ <KeyPrefixEquals>...</KeyPrefixEquals> ] [ <HttpErrorCodeReturnedEquals>...</HttpErrorCodeReturnedEquals> ] </Condition> Note: <Condition> must have at least one child element. <Redirect> = <Redirect> [ <HostName>...</HostName> ] [ <Protocol>...</Protocol> ] [ <ReplaceKeyPrefixWith>...</ReplaceKeyPrefixWith> ] [ <ReplaceKeyWith>...</ReplaceKeyWith> ] [ <HttpRedirectCode>...</HttpRedirectCode> ] </Redirect> Note: <Redirect> must have at least one child element. Also, you can have either ReplaceKeyPrefix with or ReplaceKeyWith, but not both.

次の表は、ルーティングルールの要素をまとめたものです。

名前 説明
RoutingRules

RoutingRule 要素のコレクションを入れるコンテナ。

RoutingRule

条件とリダイレクトを明示したルール。この条件が満たされたときにこのリダイレクトが適用されます。

条件: コンテナである RoutingRules の中には、少なくとも 1 つのルールが存在する必要があります。

Condition

条件を記述するためのコンテナ。この条件が満たされているときに、指定されたリダイレクトが適用されます。ルーティングルールの中に条件がない場合は、そのルールはすべてのリクエストに適用されます。

KeyPrefixEquals

リクエストをリダイレクトするオブジェクトキー名のプレフィックス。

KeyPrefixEquals HttpErrorCodeReturnedEquals が指定されていない場合は、 は必須です。KeyPrefixEqualsHttpErrorCodeReturnedEquals の両方が指定されている場合は、両方が真である場合に、条件が満たされていると見なされます。

HttpErrorCodeReturnedEquals

この HTTP エラーコードに一致している場合にのみ、リダイレクトが適用されます。エラーが発生した場合、エラーコードがこの値に等しい場合は、指定されたリダイレクトが適用されます。

HttpErrorCodeReturnedEquals KeyPrefixEquals が指定されていない場合は、 は必須です。KeyPrefixEqualsHttpErrorCodeReturnedEquals の両方が指定されている場合は、両方が真である場合に、条件が満たされていると見なされます。

Redirect

コンテナ要素。リクエストのリダイレクトに関する指示を表すのに使用されます。リクエストを別のホストや別のページにリダイレクトすることも、別のプロトコルの使用を指定することもできます。1 つの RoutingRule に対して、1 つの Redirect 要素が存在する必要があります。1 つの Redirect 要素の中に、ProtocolHostNameReplaceKeyPrefixWithReplaceKeyWithHttpRedirectCode の兄弟要素のうち 1 つ以上が存在する必要があります。

Protocol

レスポンスとして返される Location ヘッダーで使用されるプロトコル (HTTP または HTTPS)。

同レベルの要素の 1 つが指定されている場合、Protocol は省略可能です。

HostName

レスポンスとして返される Location ヘッダーで使用されるホスト名。

同レベルの要素の 1 つが指定されている場合、HostName は省略可能です。

ReplaceKeyPrefixWith

リダイレクトリクエストの中の KeyPrefixEquals の値を置き換えるオブジェクトキー名のプレフィックス。

同レベルの要素の 1 つが指定されている場合、ReplaceKeyPrefixWith は省略可能です。これを指定できるのは、ReplaceKeyWith が指定されていない場合のみです。

ReplaceKeyWith

レスポンスとして返される Location ヘッダーで使用されるオブジェクトキー。

同レベルの要素の 1 つが指定されている場合、ReplaceKeyWith は省略可能です。これを指定できるのは、ReplaceKeyPrefixWith が指定されていない場合のみです。

HttpRedirectCode

レスポンスとして返される Location ヘッダーで使用される HTTP リダイレクトコード。

同レベルの要素の 1 つが指定されている場合、HttpRedirectCode は省略可能です。

次の例では、一般的なリダイレクトタスクについて説明します。

例 1: キープレフィックスの名前を変更した後にリダイレクトする

バケットに次のオブジェクトが含まれているとします。

  • index.html

  • docs/article1.html

  • docs/article2.html

ここでフォルダ名を docs/ から documents/ に変更することにしました。この変更を行った後は、プレフィックス docs/ に対するリクエストを documents/ にリダイレクトする必要があります。例えば、docs/article1.html に対するリクエストを documents/article1.html にリダイレクトする必要があります。

この場合、次のルーティングルールをウェブサイト設定に追加します。

Copy
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>docs/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyPrefixWith>documents/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>

例 2: 削除されたフォルダに対するリクエストをページにリダイレクトする

images/ フォルダ (つまり、キープレフィックスが images/ のすべてのオブジェクト) を削除するとします。ルーティングルールを追加し、その中で、キープレフィックス images/ を持つオブジェクトに対するリクエストをすべて folderdeleted.html というページにリダイレクトするように設定します。

Copy
<RoutingRules> <RoutingRule> <Condition> <KeyPrefixEquals>images/</KeyPrefixEquals> </Condition> <Redirect> <ReplaceKeyWith>folderdeleted.html</ReplaceKeyWith> </Redirect> </RoutingRule> </RoutingRules>

例 3: HTTP エラーの場合にリダイレクトする

リクエストされたオブジェクトが見つからないときに、リクエストを特定の Amazon EC2 インスタンスにリダイレクトするとします。リダイレクトルールを追加し、その中で、HTTP ステータスコード 404 (Not Found) が返されたときに特定の EC2 インスタンス (このインスタンスでリクエストを処理する) にリダイレクトするように設定します。次に示す例では、オブジェクトキープレフィックス report-404/ もリダイレクトに挿入しています。たとえば、ExamplePage.html というページをリクエストした結果が HTTP 404 エラーとなったときは、指定の EC2 インスタンスにある report-404/ExamplePage.html というページにリクエストをリダイレクトします。ルーティングルールが何も設定されていない場合に HTTP エラー 404 が発生したときは、設定内で指定されているエラードキュメントが返されます。

Copy
<RoutingRules> <RoutingRule> <Condition> <HttpErrorCodeReturnedEquals>404</HttpErrorCodeReturnedEquals > </Condition> <Redirect> <HostName>ec2-11-22-333-44.compute-1.amazonaws.com</HostName> <ReplaceKeyPrefixWith>report-404/</ReplaceKeyPrefixWith> </Redirect> </RoutingRule> </RoutingRules>