Cloudfront で静的にホストされている Web サイトのサブディレクトリにデフォルトのルート オブジェクトを設定するにはどうすればよいでしょうか? 質問する

Cloudfront で静的にホストされている Web サイトのサブディレクトリにデフォルトのルート オブジェクトを設定するにはどうすればよいでしょうか? 質問する

Cloudfront で静的にホストされている Web サイトのサブディレクトリにデフォルトのルート オブジェクトを設定するにはどうすればよいでしょうか。具体的には、www.example.com/subdir/index.htmlユーザーが要求するたびに が提供されるようにしwww.example.com/subdirたいと考えています。これは、S3 バケットに保持されている静的 Web サイトを配信するためのものであることに注意してください。さらに、オリジン アクセス ID を使用して、S3 バケットへのアクセスを Cloudfront のみに制限したいと考えています。

さて、私はCloudfrontがS3やAmazonの状態とは異なる動作をすることを認識しています具体的には:

CloudFront のデフォルトのルートオブジェクトの動作は、Amazon S3 インデックスドキュメントの動作とは異なります。Amazon S3 バケットをウェブサイトとして設定し、インデックスドキュメントを指定すると、ユーザーがバケット内のサブディレクトリをリクエストした場合でも、Amazon S3 はインデックスドキュメントを返します。(インデックスドキュメントのコピーは、すべてのサブディレクトリに存在する必要があります。) Amazon S3 バケットをウェブサイトとして設定する方法とインデックスドキュメントの詳細については、『Amazon Simple Storage Service 開発者ガイド』の「Amazon S3 でのウェブサイトのホスティング」の章を参照してください。

そのため、Cloudfront ではデフォルトのルートオブジェクトを指定できますが、これは にのみ機能しwww.example.com、 には機能しませんwww.example.com/subdir。この問題を回避するには、オリジンドメイン名を S3 によって指定されたウェブサイトエンドポイントを指すように変更します。これはうまく機能し、ルートオブジェクトを均一に指定できます。残念ながら、これは と互換性がないようです。オリジンアクセスID具体的には、上記のリンクには次のように記載されています。

編集モードに変更:

Web ディストリビューション – [オリジン] タブをクリックし、編集するオリジンをクリックして、[編集] をクリックします。オリジン アクセス ID を作成できるのは、オリジン タイプが S3 オリジンであるオリジンのみです。

基本的に、正しいデフォルトのルートオブジェクトを設定するには、ウェブサイトバケット自体ではなく、S3ウェブサイトエンドポイントを使用します。これは、オリジンアクセスIDの使用と互換性がありません。そのため、私の質問は、

  1. Cloudfront で静的にホストされている Web サイトのすべてのサブディレクトリにデフォルトのルート オブジェクトを指定することは可能ですか?

  2. Is it possible to setup an origin access identity for content served from Cloudfront where the origin is an S3 website endpoint and not an S3 bucket?

ベストアンサー1

There IS a way to do this. Instead of pointing it to your bucket by selecting it in the dropdown (www.example.com.s3.amazonaws.com), point it to the static domain of your bucket (eg. www.example.com.s3-website-us-west-2.amazonaws.com):

ここに画像の説明を入力してください

Thanks to This AWS Forum thread

おすすめ記事