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

静的ウェブサイトホスティング用に 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: 静的ウェブサイトホスティング用に Amazon S3 バケットを設定する

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

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

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

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

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

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

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

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

    カスタムエラードキュメントを指定しない場合、エラーが発生すると、Amazon S3 からデフォルトの HTML エラードキュメントが返されます。詳細については、Amazon Simple Storage Service 開発者ガイドの「カスタムエラードキュメントのサポート」を参照してください。

  8. (オプション) 高度なリダイレクトツールを指定する場合は、[Edit redirection rules] ボックスに、ルールを記述するための XML を入力します。

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

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

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

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

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

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

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

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

警告

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

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

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

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

  4. [Edit] を選択します。

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

    警告

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

  6. 確認ボックスで、confirm, を入力し、[確認] を選択します。

    [S3 バケット] で、バケットの [アクセス] が [Objects can be public (オブジェクトは公開可能)] に更新されます。これで、バケットポリシーを追加して、バケット内のオブジェクトをパブリックに読み取り可能にすることができます。アクセス がまだ Bucket and objects not public (バケットとオブジェクトはパブリックではありません) と表示される場合は、バケットポリシーを追加する前に、アカウントのパブリックアクセスブロックの設定を編集する必要があります。

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

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

重要

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

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

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

  3. [バケットポリシー] を選択します。

  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] を選択します。

    バケットにパブリックアクセスが許可されていることを示す警告が表示されます。[バケットポリシー] に、パブリックラベルが表示されます。

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

    [Error - Access denied (エラー - アクセスが拒否されました)] という警告が表示され、バケットポリシーエディターでバケットポリシーの保存が許可されていない場合は、アカウントレベルおよびバケットレベルのパブリックアクセスブロック設定をチェックして、バケットへのパブリックアクセスを許可していることを確認します。

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

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