Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Hosting Static webpage using Amazon Simple Storage Service (S3)

2025年09月23日に「Dev.to」が公開したITニュース「Hosting Static webpage using Amazon Simple Storage Service (S3)」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Amazon S3で静的ウェブサイトを公開する方法を初心者向けに解説する。AWSのS3はHTMLやCSSで構成されるサイトをホスティングできるストレージサービスだ。バケット作成から設定、ファイルアップロード、公開時のミスと解決策まで具体的に紹介する。

ITニュース解説

Amazon S3は、ウェブサイトをインターネット上に公開するための強力なクラウドサービスである。特に、HTML、CSS、JavaScriptなどのファイルで構成される「静的ウェブサイト」をホスティングするのに適しており、システムエンジニアを目指す初心者にとっても、クラウドの仕組みを体験する良い機会となる。

S3とは「Amazon Simple Storage Service」の略で、Amazon Web Services (AWS) が提供するストレージサービスの一つである。これは「ブロックストレージ」という形式でデータを保存し、非常に高い耐久性と可用性を持つ。具体的には、S3に保存されたデータは、同じリージョン内にある3つの異なるアベイラビリティゾーン(地理的に離れたデータセンターのグループ)に自動的に複製されるため、データが失われるリスクが極めて低く、常にアクセス可能な状態が維持される。

静的ウェブサイトは、サーバーサイドで動的な処理を行わず、ファイルそのものがブラウザに直接配信されるシンプルな構造のウェブサイトである。これに対し、ブログやオンラインストアのようにデータベースと連携して内容が変化するウェブサイトは「動的ウェブサイト」と呼ばれる。静的ウェブサイトはシンプルであるがゆえに、高速に表示され、セキュリティ管理も比較的容易であるという利点がある。

S3で静的ウェブサイトをホスティングする最初のステップは、AWSアカウントの作成と、S3サービス内で「バケット」と呼ばれるストレージ領域を設定することから始まる。バケットは、ウェブサイトを構成するすべてのファイルを格納するための仮想的なコンテナである。

バケットを作成する際には、いくつかの重要な設定が必要となる。まず、バケットタイプは一般的な用途に適した「汎用バケットタイプ」を選択する。次に、バケット名を指定するが、この名前はAWS全体でユニーク(唯一無二)である必要があるため、慎重に決める。 「ACL(Access Control List)」は無効に設定する。これは個々のファイルへのアクセス権限を管理する機能だが、現在はより広範な「バケットポリシー」でアクセス制御を行うことが推奨されているため、通常は無効化する。 静的ウェブサイトをインターネット上に公開するためには、「ブロックパブリックアクセス」のオプションを無効にする必要がある。これを有効にしたままだと、バケット内のファイルにインターネットからアクセスできなくなり、ウェブサイトが閲覧不能となるため注意が必要である。 「バケットバージョニング」は有効に設定することが推奨される。これにより、ファイルの変更履歴がS3に保存され、誤ってファイルを上書きしたり削除したりした場合でも、以前のバージョンに復元することが可能となり、データの安全性が向上する。 暗号化オプションでは、「サーバーサイド暗号化 (SSE-S3)」を選択する。これは、S3がファイルを保存する際に自動的に暗号化を行い、セキュリティを強化する機能である。また、「バケットキー」は無効にする。これらの設定を終えたら、「バケットを作成」ボタンをクリックしてバケットの作成を完了する。

バケットが作成されたら、次にそのバケットを静的ウェブサイトとして機能させるための詳細な設定を行う。 まず、作成したバケットに、HTML、CSS、JavaScriptなどのウェブサイトを構成するファイルをすべてアップロードする。 次に、バケットの「プロパティ」タブに移動し、下部にある「静的ウェブサイトホスティング」の項目を有効にする。ここで、ウェブサイトのデフォルトページとなるファイル名を指定する。一般的には「index.html」と入力するが、このファイルがウェブサイトのトップページとして表示される。エラーページがある場合もここで指定できる。設定後、「変更を保存」する。 さらに重要なのが、「パーミッション」タブでの設定である。ここで「バケットポリシー」を編集し、ウェブサイトのファイル(オブジェクト)にインターネット上のすべてのユーザーがアクセスできるようにするポリシーを記述する。具体的なポリシーはJSON形式で記述され、S3バケット内の特定のオブジェクトに対して、匿名ユーザーが「s3:GetObject」アクション(ファイルの読み取り)を実行することを許可する内容となる。このポリシーを正しく設定しないと、ウェブサイトが公開されても誰も閲覧できない状態になってしまうため、正確な記述が求められる。ポリシーを記述したら、「変更を保存」する。 これらの設定が完了したら、再びバケットの「プロパティ」タブに戻り、下部に表示されている「ウェブサイトエンドポイント」のリンクをクリックすると、作成した静的ウェブサイトがブラウザに表示されるはずである。

この一連の作業において、著者はいくつかの間違いを経験し、そこから貴重な教訓を得ている。 一つ目の間違いは、静的ウェブサイトホスティングのインデックスドキュメント指定に関するものだった。著者はファイルをフォルダーごとS3にアップロードし、インデックスドキュメントを「フォルダー名/ファイル名.html」という形式で指定した。しかし、これは誤りであり、S3コンソールでエラーが発生した。S3の静的ウェブサイトホスティングでは、ウェブサイトのルートパスはバケットのルート直下であるため、インデックスドキュメントはサブディレクトリのパスを含めず、「ファイル名.html」のようにファイルそのものの名前で指定する必要がある。ウェブサイトのファイルがサブディレクトリにある場合でも、インデックスドキュメントはファイル名のみで指定し、ウェブサイト全体のパス構造はウェブサイト内で適切にリンクを張ることで対応するのが一般的である。 二つ目の間違いは、バケットポリシーの設定不足によるアクセス拒否であった。ウェブサイトを公開し、URLにアクセスした際、「アクセスが拒否されました」というエラーが表示された。これは、前述の「バケットポリシー」が適切に設定されていなかったために起こった問題である。バケットポリシーは、S3バケット内のオブジェクトに対するアクセス権限を制御する根幹的な設定であり、インターネットからの読み取りアクセスを許可するポリシーがなければ、ウェブサイトは閲覧不可能となる。この経験から、バケットポリシーの理解と正確な設定がいかに重要であるかを著者は痛感したという。

これらの実践的な経験と、それに伴うエラーの解決を通じて、S3のバケットポリシーの仕組みやファイルの命名規則に関する深い理解が得られる。システムエンジニアを目指す上では、座学だけでなく、実際に手を動かし、エラーに直面し、それを自力で解決するプロセスが非常に重要である。Amazon S3を使った静的ウェブサイトのホスティングは、クラウドサービスを体験する最初のステップとして最適であり、エラーを恐れずに挑戦し続けることが、確かなスキル習得への近道となるだろう。

関連コンテンツ

関連IT用語