静的ウェブサイトホスティング用に S3 バケットを設定する方法 - Amazon Simple Storage Service

このガイドは更新されていません。最新の情報と手順については、新しい Amazon S3 ユーザーガイドを参照してください。

静的ウェブサイトホスティング用に S3 バケットを設定する方法

静的ウェブサイトを Amazon S3 上でホスティングすることができます。静的ウェブサイトでは、個々のウェブページの内容は静的コンテンツです。静的ウェブサイトには、クライアント側のスクリプトが含まれている場合もあります。対照的に、動的ウェブサイトはサーバー側処理に依存しており、たとえばサーバー側スクリプト (PHP、JSP、ASP.NET など) が使用されます。Amazon S3 ではサーバー側のスクリプトはサポートしていません。

次の簡単な手順を使用して、Amazon S3 コンソールで静的ウェブサイトホスティング用に S3 バケットを設定できます。詳細については、Amazon Simple Storage Service 開発者ガイドの「Amazon S3 での静的ウェブサイトのホスティング」カスタムドメインを使用した静的ウェブサイトの設定については、Amazon Simple Storage Service 開発者ガイドの「Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定」を参照してください。

ステップ 1: 静的ウェブサイトホスティング用にバケットを設定する

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

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

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

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

  5. [このバケットを使用してウェブサイトをホストする] を選択します。

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

  7. [Index Document (インデックスドキュメント)] ボックスに、インデックスドキュメントの名前 (通常は index.html) を入力します。

    インデックスドキュメント名の大文字と小文字は区別されます。この名前は、S3 バケットにアップロードする HTML インデックスドキュメントのファイル名と正確に一致する必要があります。バケットをウェブサイトホスティング用に設定するときは、インデックスドキュメントを指定する必要があります。Amazon S3 からこのインデックスドキュメントが返されるのは、ルートドメインまたはサブフォルダに対するリクエストが行われたときです。詳細については、Amazon Simple Storage Service 開発者ガイドの「インデックスドキュメントの設定」を参照してください。

  8. (オプション) 4XX クラスエラーに関する独自のカスタムエラードキュメントを指定する場合は、[Error Document (エラードキュメント)] にカスタムエラードキュメントのファイル名を入力します。

    エラードキュメント名の大文字と小文字は区別されます。この名前は、S3 バケットにアップロードする HTML エラードキュメントのファイル名と正確に一致する必要があります。カスタムエラードキュメントを指定しない場合、エラーが発生すると、Amazon S3 からデフォルトの HTML エラードキュメントが返されます。詳細については、Amazon Simple Storage Service 開発者ガイドの「カスタムエラードキュメントの設定」を参照してください。

  9. (オプション) 高度なリダイレクトツールを指定する場合、[Rredirection rules (リダイレクトルール)] に、XML を使用してルールを記述します。

    たとえば、条件に応じてリクエストのルーティング先を変えることができます。この条件として使用できるのは、リクエストの中の特定のオブジェクトキー名またはプレフィックスです。詳細については、Amazon Simple Storage Service 開発者ガイドの「高度な条件付きリダイレクトの設定」を参照してください。

  10. [Save changes] を選択します。

    Amazon S3 では、バケットの静的ウェブサイトホスティングを有効にします。ページの下部の [静的ウェブサイトホスティング] の下に、バケットのウェブサイトエンドポイントが表示されます。

  11. インデックスドキュメントをバケットにアップロードします。

    S3 バケットにオブジェクトをアップロードするステップバイステップの手順については、「ポイントとクリックによるファイルのアップロード」を参照してください。

  12. オプションのカスタムエラードキュメントなど、ウェブサイト用の他のファイルをアップロードします。

次のセクションでは、静的ウェブサイトとしてのバケットにアクセスするために必要なアクセス許可を設定します。

ステップ 2: S3 パブリックアクセスブロック設定を編集する

デフォルトでは、Amazon S3 はアカウントとバケットへのパブリックアクセスをブロックします。バケットを使用して静的ウェブサイトをホストする場合は、以下の手順を使用して、パブリックアクセスブロック設定を編集できます。

警告

このステップを完了する前に、「Amazon S3 パブリックアクセスブロックの使用」を確認し、パブリックアクセスの許可に伴うリスクを了承してください。パブリックアクセスブロック設定をオフにしてバケットをパブリックにすると、インターネット上のだれでもバケットにアクセスできるようになります。バケットへのすべてのパブリックアクセスをブロックすることをお勧めします。

  1. Amazon S3 コンソール (https://console.aws.amazon.com/s3/) を開きます。

  2. 静的ウェブサイトとして設定されたバケットの名前を選択します。

  3. [Permissions] を選択します。

  4. [Block public access (bucket settings) (パブリックアクセスのブロック (バケット設定))] で [編集] を選択します。

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

    警告

    このステップを完了する前に、「Amazon S3 パブリックアクセスブロックの使用」を確認し、パブリックアクセスの許可に伴うリスクを了承してください。パブリックアクセスブロック設定をオフにしてバケットをパブリックにすると、インターネット上のだれでもバケットにアクセスできるようになります。バケットへのすべてのパブリックアクセスをブロックすることをお勧めします。

    Amazon S3 は、バケットのパブリックアクセスブロック設定をオフにします。パブリックで静的ウェブサイトを作成するには、バケットポリシーを追加する前に、 アカウントの [パブリックアクセスのブロック] 設定を編集する必要があります。パブリックアクセスのブロックのアカウント設定が現在有効になっている場合は、[Block public access (bucket settings) (パブリックアクセスのブロック (バケット設定))] の下にメモが表示されます。

ステップ 3: バケットポリシーを追加する

S3 のパブリックアクセスブロック設定を編集した後で、バケットへのパブリック読み取りアクセスを許可するバケットポリシーを追加できます。パブリック読み取りアクセスを許可すると、インターネット上のだれでもバケットにアクセスできるようになります。

重要

次のポリシーは、単なる例として、バケットのコンテンツへのフルアクセスを許可します。このステップに進む前に、「Amazon S3 バケット内のファイルを保護するにはどうすればよいですか?」を確認して、S3 バケット内のファイルを保護するためのベストプラクティスと、パブリックアクセスの許可に伴うリスクを理解してください。

  1. [バケット] で、バケットの名前を選択します。

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

  3. [Bucket Policy (バケットポリシー)] で [編集] を選択します。

  4. ウェブサイトのパブリック読み取りアクセスを許可するには、次のバケットポリシーをコピーし、[Bucket policy editor (バケットポリシーエディター)] に貼り付けます。

    { "Version": "2012-10-17", "Statement": [ { "Sid": "PublicReadGetObject", "Effect": "Allow", "Principal": "*", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::example.com/*" ] } ] }
  5. Resource をバケット名に更新します。

    前のバケットポリシーの例では、example.com がバケット名です。このバケットポリシーを独自のバケットで使用するには、バケット名に合わせてこの名前を更新する必要があります。

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

    バケットポリシーが正常に追加されたことを示すメッセージが表示されます。

    Policy has invalid resource というエラーが表示された場合は、バケットポリシー内のバケット名がバケット名と一致していることを確認します。バケットポリシーの追加については、「S3 バケットポリシーを追加する方法」を参照してください。

    エラーメッセージが表示され、バケットポリシーを保存できない場合は、アカウントとバケットの [パブリックアクセスをブロックする] 設定をチェックして、バケットへのパブリックアクセスを許可していることを確認します。

S3 のパブリックアクセスブロック設定を編集した後で、バケットへのパブリック読み取りアクセスを許可するバケットポリシーを追加できます。パブリック読み取りアクセスを許可すると、インターネット上のだれでもバケットにアクセスできるようになります。

重要

次のポリシーは、単なる例として、バケットのコンテンツへのフルアクセスを許可します。このステップに進む前に、「Amazon S3 バケット内のファイルを保護するにはどうすればよいですか?」を確認して、S3 バケット内のファイルを保護するためのベストプラクティスと、パブリックアクセスの許可に伴うリスクを理解してください。

ステップ 4: ウェブサイトエンドポイントをテストする

バケットを静的ウェブサイトとして設定し、アクセス許可を設定すると、Amazon S3 ウェブサイトエンドポイントからウェブサイトにアクセスできます。詳細については、Amazon Simple Storage Service 開発者ガイドの「ウェブサイトエンドポイント」を参照してください。Amazon S3 ウェブサイトエンドポイントの完全なリストについては、アマゾン ウェブ サービス全般のリファレンスの「Amazon S3 ウェブサイトエンドポイント」を参照してください。

  1. [バケット] で、バケットの名前を選択します。

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

  3. ページの下部の [静的ウェブサイトホスティング] で、[Bucket website endpoint (バケットウェブサイトエンドポイント)] を選択します。

    インデックスドキュメントが別のブラウザウィンドウで開きます。