AWS S3の静的ウェブサイトホスティングできちんとしたWebページを表示する

# はじめに
AWSのS3には静的ウェブサイトホスティングと呼ばれる、サーバを構築しなくてもWebページを表示できる仕組みがあります。ハンズオンで試すことがありますが、その場合たいていテキストのみのHTMLファイルを配置するのできちんとしたWebページを表示させました。

私は写真撮影が趣味ですが、写真の管理や編集にAdobeのLightroom Classicを使っています。Lightroom Classicには写真のアルバムをWebページで出力する機能があるので、この機能で出力したWebページをS3でWebサイトとして作成します。
![スクリーンショット 2024-04-18 210924.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/21dae2bc-a9ad-1821-fcad-f5c719bca090.png)

# ファイル、フォルダの構成
以下画像の通りです。ハンズオンの場合はindex.htmlにテキストファイルを記載して配置する場合が多いですが、今回はcssやjsを含むWebページとなっています。

・index.html Webページ本体です。
・images/large 写真のファイルが格納されています。
・images/thumbnails  写真のサムネイルが格納されています。
![スクリーンショット 2024-04-18 210025.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/fd06216e-6b14-95a5-9f32-921a15fc6da2.png)

# S3の設定
※以下の説明ですが、AWSの初期設定は完了しているものとします。

AWS S3を開いたら、「バケットの作成」クリックします。
![スクリーンショット 2024-04-18 210216.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/52e4decd-69c1-12af-6e74-abfd06f0bfda.png)

バケットを設定します。バケット名を入力し、他の設定はデフォルトのままとします。
下にある「バケットの作成」をクリックします。
![スクリーンショット 2024-04-18 210258.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/82e6b39d-19ce-6f97-d00d-587475f3d15b.png)

バケットができました。「アップロード」をクリックします。
![スクリーンショット 2024-04-18 210320.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/4e3a096d-539a-b972-22a7-37792d46f98a.png)

アップロード画面になるのでフォルダをファイルとフォルダ欄にドラッグアンドドロップします。
ファイルが配置されたら「アップロード」をクリックします。
![スクリーンショット 2024-04-18 210342.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/ad5eabbc-7cae-2e7b-2968-add9b8c714a8.png)

バケットにファイルが格納されました。バケット直下にindex.htmlとindex.htmlから参照されるファイルが格納されたフォルダを配置します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/772e20f0-a98a-02e8-2c94-35ee2ad76392.png)


S3バケットの「プロパティ」タブをクリックします。一番下に静的ウェブサイトホスティングの項目があるので「編集」をクリックします。
![スクリーンショット 2024-04-18 212007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/691308ba-b478-c9f6-5807-0ef1c5fb3f0d.png)

静的ウェブサイトホスティングの設定画面が表示されます。
静的ウェブサイトホスティングの「有効にする」を選択します。
インデックスドキュメントにhtmlファイル名の"index.hthml"を入力します。
![スクリーンショット 2024-04-18 212134.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/dec0bb70-95f7-da64-d5b3-bbe77d69f11f.png)

一番下に「変更の保存」があるのでクリックします。

あとはインターネットへの公開に必要なアクセス許可を設定します。
バケットの「アクセス許可」のタブをクリックし、ブロックパブリックアクセス(バケット設定)の「編集」をクリックします。
![スクリーンショット 2024-04-18 212559.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/e1b2aede-e822-a1e3-76ea-8862bbde4860.png)

設定画面が表示されます。パブリックアクセスをすべてブロックのチェックを外して「変更の保存」をクリックします。
![スクリーンショット 2024-04-18 212619.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/6dcd503a-be13-f729-05b5-55b2e7177e76.png)

ポップアップが表示されます。確認と入力し、「確認」をクリックします。
![スクリーンショット 2024-04-18 212703.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/62ce2892-9f32-1bbc-2a68-62efa23a5a49.png)

バケットポリシーの「編集」をクリックします。
![スクリーンショット 2024-04-18 212755.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/050c5d79-fbda-5ab6-6cfa-a8bc4314cf5b.png)

バケットポリシーを入力します。Resourceに設定する値は上の方にバケットARNが表示されているのでコピーして貼り付けます。

```
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "[バケットARNからコピーする]/*"
        }
    ]
}
```
左側の四角いマークをクリックすると文字列をコピーできます。
![スクリーンショット 2024-04-18 213132.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/6beeb4ea-67c3-95a9-f81d-27e43600bff0.png)

バケットポリシーを入力したら下にある「変更の保存」をクリックします。
以上で設定完了です。

# Webページを表示する
すべて設定したら静的ウェブサイトホスティングの設定を表示します。
下にURLが表示されているのでコピーしてWebブラウザのURL欄に貼り付けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/d04c7999-0071-270a-39f0-fdb41d8553b6.png)

ブラウザで開くとWebページが表示されました。ハンズオンでよく見るテキスト1行ではなくちゃんとしたwebページとなっています。
![スクリーンショット 2024-04-18 210647.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/fcedc279-9845-9c44-c67b-e5995f636b49.png)

サムネイルをクリックすると写真が表示されます。
![スクリーンショット 2024-04-18 210659.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/92424/6d4f7a0a-a2d0-2b83-313a-bddc3e09de91.png)

S3の静的ウェブサイトホスティングによるWebページ作成は以上です。ただし、このままだとHTTPのWebページなので実際にWebページを製作するときはHTTPSにした方がよいです。