静的ウェブサイトの設定 - Amazon Simple Storage Service

静的ウェブサイトの設定

Amazon S3 バケットを、ウェブサイトのように機能させるよう設定できます。この例では、Amazon S3 でウェブサイトをホスティングする手順を説明します。

注記

Amazon S3 は、ウェブサイトへの HTTPS アクセスをサポートしていません。HTTPS を使用する場合は、Amazon CloudFront を使用して Amazon S3 でホストされている静的ウェブサイトを提供できます

詳細については、「Amazon S3 でホストされている静的ウェブサイトを提供するために CloudFront をどのように使用したらよいですか?」と「閲覧者と CloudFront との通信で HTTPS を必須にする」を参照してください。

ステップ 1: バケットを作成する

以下の手順では、ウェブサイトホスティングにバケットを作成する方法の概要を説明します。バケットを作成する詳細な手順については、『Amazon Simple Storage Service コンソールユーザーガイド』の「How Do I Create an S3 Bucket?」を参照してください。

バケットを作成するには

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

  2. [バケットを作成する] を選択します。

  3. [バケット名] (example.com など) を入力します。

  4. バケットを作成するリージョンを選択します。

    レイテンシーとコストを節約するため、または規制条件に対応するために、最寄りのリージョンを選択します。選択したリージョンによって、Amazon S3 ウェブサイトエンドポイントが決まります。詳細については、「ウェブサイトエンドポイント」を参照してください。

  5. デフォルト設定をそのまま使用してバケットを作成するには、[作成] を選択します。

ステップ 2: 静的ウェブサイトホスティングを有効にする

バケットを作成したら、バケットの静的ウェブサイトホスティングを有効にできます。新しいバケットを作成することも、既存のバケットを使用することもできます。

静的ウェブサイトホスティングを有効にするには

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

  2. [Bucket name (バケット名)] で、静的ウェブサイトに対して使用するバケットを選択します。

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

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

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

  6. インデックスドキュメントの名前を入力します。

    通常、インデックスドキュメント名は index.html です。インデックスドキュメント名の大文字と小文字は区別されます。この名前は、S3 バケットにアップロードする HTML インデックスドキュメントのファイル名と正確に一致する必要があります。詳細については、「インデックスドキュメントの設定」を参照してください。

  7. (オプション) カスタムエラードキュメントを追加する場合は、[エラードキュメント] ボックスにエラードキュメントのキー名 (error.html など) を入力します。

    エラードキュメント名の大文字と小文字は区別されます。この名前は、S3 バケットにアップロードする HTML エラードキュメントのファイル名と正確に一致する必要があります。詳細については、「(オプション) カスタムエラードキュメントの設定」を参照してください。

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

    詳細については、「高度な条件付きリダイレクトの設定」を参照してください。

  9. [静的 ウェブサイトホスティング] の下のエンドポイントを書き留めます。

    エンドポイントは、バケットの Amazon S3 ウェブサイトエンドポイントです。バケットを静的ウェブサイトとして設定すると、このエンドポイントを使用してウェブサイトをテストできます。

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

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

デフォルトでは、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 (バケットとオブジェクトはパブリックではありません) と表示される場合は、バケットポリシーを追加する前に、アカウントのパブリックアクセスブロックの設定を編集する必要があります。

ステップ 4: バケットの内容の公開を許可するバケットポリシーを追加する

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

ステップ 5: インデックスドキュメントを設定する

バケットに対して静的ウェブサイトホスティングを有効にする場合は、インデックスドキュメントの名前 (index.html など) を入力します。バケットに対して静的ウェブサイトホスティングを有効にした後、インデックスドキュメント名を含む HTML ファイルをバケットにアップロードします。

インデックスドキュメントを設定するには

  1. index.html ファイルを作成します。

    index.html ファイルがない場合は、以下の HTML を使用して作成できます。

    <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>
  2. バケットの静的ウェブサイトホスティングを有効にしたときに入力した正確なインデックスドキュメント名 (例: index.html) を使用して、インデックスファイルをローカルに保存します。

    インデックスドキュメントファイル名は、[静的ウェブサイトホスティング] ダイアログボックスで入力したインデックスドキュメント名と正確に一致する必要があります。インデックスドキュメント名では、大文字と小文字が区別されます。たとえば、[静的ウェブサイトホスティング] ダイアログボックスの [インデックスドキュメント] 名に「index.html」と入力する場合、インデックスドキュメントファイル名も Index.html ではなく index.html である必要があります。

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

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

  5. バケットに対して静的ウェブサイトホスティングを有効にし、インデックスドキュメントの正確な名前 (index.html など) を入力します。詳細については、「ウェブサイトのホスティングの有効化」を参照してください。

    静的ウェブサイトホスティングを有効にしたら、ステップ 6 に進みます。

  6. インデックスドキュメントをバケットにアップロードするには、以下のいずれかを実行します。

    • インデックスファイルをコンソールバケットのリストにドラッグアンドドロップします。

    • [Upload] を選択し、プロンプトに従ってインデックスファイルを選択してアップロードします。

    手順については、Amazon Simple Storage Service コンソールユーザーガイド の「Amazon S3 バケットにファイルとフォルダをアップロードする方法」を参照してください。

  7. (オプション) 他のウェブサイトコンテンツをバケットにアップロードします。

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

バケットに静的ウェブサイトホスティングを設定したら、ウェブサイトエンドポイントをテストできます。

注記

Amazon S3 は、ウェブサイトへの HTTPS アクセスをサポートしていません。HTTPS を使用する場合は、Amazon CloudFront を使用して Amazon S3 でホストされている静的ウェブサイトを提供できます

詳細については、「CloudFront を使用して Amazon S3 でホストされている静的ウェブサイトを提供する方法」と「ビューワーと CloudFront との通信で HTTPS を必須にする」を参照してください。

ウェブサイトエンドポイントをテストするには

静的ウェブサイトホスティングを有効にしたときにウェブサイトエンドポイントを書き留めている場合は、ウェブサイトをテストするために、そのウェブサイトエンドポイントをブラウザに入力します。ブラウザに index.html ページが表示されれば、ウェブサイトのデプロイが成功しています。詳細については、「Amazon S3 ウェブサイトエンドポイント」を参照してください。

テストする前にウェブサイトエンドポイントを取得する必要がある場合は、次の手順に従います。

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

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

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

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

  5. ウェブサイトエンドポイントをテストするには、[エンドポイント] の横でウェブサイトエンドポイントを選択します。

    ブラウザに index.html ページが表示されれば、ウェブサイトのデプロイが成功しています。

これで、Amazon S3 でウェブサイトがホスティングされるようになりました。このウェブサイトには、Amazon S3 ウェブサイトエンドポイントの URL を指定してアクセスできます。ただし、作成したウェブサイトのコンテンツを配信するのに、example.com などのドメインを使用することもできます。また、Amazon S3 のルートドメインサポートを利用すると、http://www.example.comhttp://example.com のどちらのリクエストでも処理できるようになります。このようにするには、追加のステップが必要です。例については、「Route 53 に登録されたカスタムドメインを使用した静的ウェブサイトの設定」を参照してください。

ステップ 7: クリーンアップ

学習のためだけに静的ウェブサイトを作成した場合は、割り当てた AWS リソースを削除して、料金が発生しないようにします。AWS リソースを削除すると、ウェブサイトは使用できなくなります。詳細については、Amazon Simple Storage Service コンソールユーザーガイドの「S3 バケットを削除する方法」を参照してください。