【AWS_24】Amazon S3 (Simple Storage Service)を勉強する

Amazon S3 (Simple Storage Service)について検証してみます。
Amazon S3 はAWS (Amazon Web Services) が提供するオブジェクトストレージサービスです。
データをオブジェクトとして保存し、ウェブサイトやアプリケーションのバックアップ、アーカイブ、データ分析など、さまざまな目的に利用できます。
今回はS3を触ることがはじめてですので「バケットの作成」「アップロード・ダウンロード」「静的ウェブサイトホスティング」を検証してみます。
目次
バケットの作成
バケットはWindowsでいうドライブのようなもので、そのバケットの中にオブジェクトを保存します。
オブジェクトはファイルのようなものです。バケットはフォルダではないのでバケットの中に子バケットは作成できません。
管理者ユーザー(ルートユーザーではない)でサインインしてS3コンソールに入り、バケットを作成します。

「バケットタイプ」で「汎用」を選択し、任意の「バケット名」を入力します。
今回バケット名は「mybucket-20250703-02」としました。
オブジェクト所有者はデフォルトの「ACL無効(推奨)」を選択します。
このバケットのブロックパブリックアクセス設定はデフォルトの「パブリックアクセスをすべてブロック」にチェックを入れます。
バケットのバージョニングはデフォルトの「無効にする」を選択します。
デフォルトの暗号化のパケットキーは「無効にする」を選択します。
詳細設定のオブジェクトロックはデフォルトの「無効にする」を選択します。
「バケットを作成」をクリックします。



バケット「mybucket-20250703-02」が作成されました。

バケット作成者によるアップロード、ダウンロード
作成したバケット「mybucket-20250703-02」をクリックします。
ドラッグアンドドロップでファイルをアップロードします。

ドラッグアンドドロップ後、内容を確認し、「アップロード」をクリックします。

アップロードに成功しました。「閉じる」をクリックします。

ファイル名の左側にチェックを入れ「開く」をクリックすると「index.html」は直接ブラウザで開きましたが、WORDファイルはダウンロードのウィンドウが開きました。

バケット作成者以外によるアップロード、ダウンロード
ポリシーありユーザーの場合
ユーザー「user01」が所属するユーザーグループ「group01」へ「AmazonS3FullAccess」ポリシーを適用しました。
これで「user01」もS3へアクセスできるようになったはずです。

ユーザー「user01」でサインインします。
ユーザー「user01」でもファイルの閲覧、アップロードやダウンロードは問題なくできました。

ポリシーなしユーザーの場合
S3に対する権限ポリシーがないユーザー「user02」でサインインします。
S3を検索しても既存バケットは表示されず、バケット作成画面でも権限がないとバケットは作成できませんでした。

静的WEBサイトホスティング
S3は、静的なWebサイトの表示もできるそうなので検証してみます。
ただ、動的なWEBアプリケーションはホスティング不可のようです。
少し苦労しましたが以下サイトで解決できました。ありがとうございました。
【AWS S3】静的WEBサイトホスティング
https://qiita.com/OPySPGcLYpJE0Tc/items/d5be466d7dcb156649ae
パブリックアクセスのブロックを解除
S3コンソール画面でバケット名をクリックします。遷移した画面で「アクセス許可」タブを選択します。 「ブロックパブリックアクセス (バケット設定)」の「編集」をクリックします。 「パブリックアクセスをすべてブロック」のチェックを外して「変更の保存」をクリックします。 S3ではデフォルトで全てのパブリックアクセスを禁止するように設定されています。 今回はインターネット経由でのアクセスが必要なためこれを解除します。

パブリックアクセスのブロックが「オフ」となり解除されました。

静的ウェブサイトホスティングの設定
「プロパティ」タブを選択し、一番下の「静的ウェブサイトホスティング」の「編集」をクリックします。

「静的ウェブサイトホスティング」の「有効にする」をチェックします。
「ホスティングタイプ」の「静的ウェブサイトをホストする」をチェックします。
「インデックスドキュメント」は、私の場合「Hello world」を表示させる「index.html」を設定しました。
右下の「変更の保存」をクリックします。


「静的ウェブサイトホスティング」が有効になりました。

バケットポリシーの設定
S3コンソール画面でバケット名をクリックします。遷移した画面で「アクセス許可」タブを選択します。
「バケットポリシー」の「編集」をクリックします。

バケットポリシーは、JSONによって記載されます。 以下のコードをルールに記載することで、作成したS3バケットへのパブリックアクセスを許可します。 「バケットポリシーエディター」に以下のコードを記載し「保存」をクリックします。

バケットポリシーへ設定されました。

WEBページアクセス確認
アップロードした「index.html」をクリックすると以下ページが表示されます。
「オブジェクトURL」をコピーしてブラウザで表示します。

表示されました!

まとめ
S3も机上の勉強だけで実際に触ってみたことはなかったので今回の検証で少し理解が深まりました。実運用での利用のされ方は想像つかないですが、これからも検証を進めて理解を深めていければと思います。
以下、他の記事をまとめた一覧です。AWSもまとめています。