3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【AWS S3】静的ウェブサイトホスティングで”どこを通る?”ユーザとバケットの通信フロー

3
Posted at

はじめに

今回は、S3の機能の一つである静的ウェブサイトホスティングについてまとめてみました。
特に、静的ウェブサイトホスティング機能でユーザはS3バケットに対してどのようにアクセスしているのかといった点に着目しました。

VPC内のサービスとインターネットはインターネットゲートウェイによって通信が可能になります。しかし、S3はVPC外に構成されるサービスのため、インターネットゲートウェイは使用できません。そのため、S3とインターネットの通信を可能にするためにはインターネットゲートウェイのような役割を担うサービスがあるのではないかと考え、このテーマに着目しました。

S3の静的ウェブサイトホスティング機能とは

・ 概要

S3の静的ウェブサイトホスティング機能とは、S3を使用することによって静的ウェブサイトをホストできる機能のことです。
S3バケットで静的ウェブサイトホスティングを有効にすることによって、そのバケットにアップロードされたファイル(HTMLファイルなど)にユーザがブラウザ等からアクセスすることができます。

静的ウェブサイトホスティングを有効にすることによって、バケットのあるリージョン固有のウェブサイトエンドポイントを利用することができます。

リージョン名 リージョン エンドポイント プロトコル
バージニア北部 us-east-1 s3-website.us-east-1.amazonaws.com HTTP
東京 ap-northeast-1 s3-website-ap-northeast-1.amazonaws.com HTTP

・ ウェブサイトエンドポイント

ウェブサイトエンドポイントはウェブブラウザを介してアクセスするように最適化されており、REST APIエンドポイントとは以下の点で異なります。

主な違い REST APIエンドポイント ウェブサイトエンドポイント
アクセスコントロール パブリックコンテンツとプライベートコンテンツの両方をサポートする 公開で読み取り可能なコンテンツのみをサポートする
エラーメッセージの処理 XML形式のエラーレスポンスを返す HTMLドキュメントを返す
リダイレクトのサポート なし オブジェクトレベルとバケットレベルの両方のリダイレクトが可能
サポートされるリクエスト バケット及びオブジェクトのすべてのオペレーションをサポート オブジェクトに対するGET及びHEADリクエストのみをサポート
バケットのルートでのGET及びHEADリクエストに対する応答 バケット内のオブジェクトキーのリストを返す ウェブサイト設定で指定されているインデックスドキュメントを返す
Secure Sockets Layer(SSL)のサポート SSL接続をサポート SSL接続をサポートしない

また、使用しているリージョンによってウェブサイトエンドポイントの形式は異なり、以下2つの形式のいずれかになります。

・http://[バケット名].s3-website-[リージョン].amazonaws.com
・http://[バケット名].s3-website.[リージョン].amazonaws.com

S3のバケット名はグローバルで一意になる必要があるため、静的ウェブサイトホスティング機能で有効になるウェブサイトエンドポイントも重複することがありません。

・ インデックスドキュメントについて

静的ウェブサイトホスティング機能を使用するために必要な設定として、インデックスドキュメントの設定およびアップロードがあります。インデックスドキュメントとは、リクエストが行われたときにS3によって返されるWEBページのことです。静的ウェブサイトホスティングを有効にする場合は、インデックスドキュメントの名前(index.htmlなど)を指定し、そのファイルをバケットにアップロードする必要があります。その結果、上記URLにアクセスされるとインデックスドキュメントが返されるようになります。

ユーザとS3の通信経路について

・ 通信経路

ここからが本題の静的ウェブサイトホスティングを有効にすることによって確立される、S3とインターネットの通信経路についてです。
結論、ユーザがブラウザ等でウェブサイトエンドポイントにアクセスすることで、指定されたリージョンのウェブサイトエンドポイントにアクセスされ、そこから指定されたバケットにアクセスし、バケット内にあるインデックスドキュメントがユーザに返されるという通信経路になります。

スクリーンショット 2026-02-27 160327.png

このアクセス経路を確保するためには、対象のバケットが静的ウェブサイトホスティングを有効化していること、バケットにインデックスドキュメントが設定され、そのファイルがアップロードされていること、そしてパブリックアクセスブロック設定を無効にし、パブリック読み取りアクセスを許可するバケットポリシーを設定する必要があります。

・ 注意点

ウェブサイトエンドポイントはHTTPSをサポートしていません。そのため、HTTPSを使用したい場合はほかの方法で実施する必要があります。

・AWS Amplify Hostingを使用することで、S3バケットから静的ウェブサイトをデプロイする
・CloudFrontを使用して、S3バケットに対するHTTPSリクエストを処理する

これらの方法を使用してS3バケットを公開することによってセキュアな通信が可能になります。

まとめ

以上、S3の機能の1つである静的ウェブサイトホスティングについてまとめてみました。ウェブサイトエンドポイントによってユーザとS3バケットの通信が可能になっていることがわかりました。

静的ウェブサイトホスティング機能のアクセス経路について皆様の理解の助けになれば幸いです。

お読みいただき、ありがとうございました。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?