S3 でホストされているコンテンツで Index.html 機能を使用する方法はありますか?
-
09-06-2019 - |
質問
S3 のデフォルトを Index.html ページにする方法はありますか?例えば。:私のバケットオブジェクトリスト:
/index.html
/favicon.ico
/images/logo.gif
への電話 www.example.com/インデックス.html よく働く!しかし、もし誰かが電話したとしたら、 www.example.com/ バケットレベルの ACL がどのように構成されているかに応じて、403 または REST オブジェクト リストの XML ドキュメントを取得します。
それで、質問は次のとおりです。S3 でホストされているコンテンツで Index.html 機能を使用する方法はありますか?
解決
Amazon S3 がサポートするようになりました ドキュメントのインデックス付け
の インデックスドキュメント バケットの場合は次のように設定できます index.html
. 。サイトのルート、またはその名前のドキュメントを含むサブディレクトリにアクセスすると、そのドキュメントが返されます。
aws cli を使用すると非常に簡単に実行できます。
aws s3 website $MY_BUCKET_NAME --index-document index.html
設定できるのは、 インデックスドキュメント AWS マネジメントコンソールから:
他のヒント
3 年経ってもまだこの問題に苦しんでいる人のために、いくつかの重要な情報を追加させてください。
Web サイトの URL (DNS を指定する必要がある URL) は、
<bucket_name>.s3-us-west-2.amazonaws.com
, 、 しかし
<bucket_name>.s3-website-us-west-2.amazonaws.com
.
前者を使用すると、どれだけ設定しても意図したとおりに動作しません。 インデックスドキュメント.
具体的な例として、次のことを考えてみましょう。
- http://www-example-com.s3.amazonaws.com/index.html 動作します。
- http://www-example-com.s3.amazonaws.com/ で失敗します
AccessDenied
. - http://www-example-com.s3-website-us-west-2.amazonaws.com/ 効く!
本当の Web サイトのアドレスを取得するには、 S3管理コンソール, 、ターゲットのバケットを選択してから、 Properties
, 、 それから Static Website Hosting
. 。機能するWebサイトのURLが表示されます。
Amazon CloudFront を使えば簡単に解決できます リンク. 。Amazon CloudFront では、ルート オブジェクトを変更できます。ここからマネージャーをダウンロードできます。m1.mycloudbuddy.com/downloads.html。
長い時間が経ち、この質問が出され、Amazon S3 のインターフェイスが変更されました。更新されたスクリーンショットを使って回答したいと思います。
S3 がウェブホスティングとして機能するには、「静的ウェブホスティング」を有効にする必要があります。- プロパティに移動 - > [static Web Hostingをクリック] - > [[このバケット]を使用してWebサイトをホストする] - インデックスドキュメント(デフォルトでindex.html)、エラードキュメントとリダイレクトルール(もしあればリダイレクトルール」を入力します。
で答えたように https://stackoverflow.com/a/24377823/3086531, 、ウェブホスティングリンクは次のようになります
読むことをお勧めします このスレッド 2006 年から (アマゾン ウェブ サービス開発者接続上)。これに対する簡単な解決策はないようです。
はい。AWS Cloudfront を使用すると、デフォルトのファイルを割り当てることができます。
DNS WebForwards とクローキングを使用してこれを行うことができます。Index.html の完全なパスに進むだけです
www.example.com からの転送先 http://www.example.com.s3.amazonaws.com そして出力を必ず隠蔽してください。