1
1

More than 3 years have passed since last update.

AWS S3 静的ウェブホスティング・カスタムドメインを使用した静的ウェブホスティングをやってみた

Last updated at Posted at 2021-08-11

初めに

以下のチュートリアル・設定方法に従ってやってみました。カスタムドメインの場合に気を付けることは、ドメイン名とバケット名は一致していなければならない点です。良い勉強になりました。

バケットウェブサイトエンドポイントを使用した静的ウェブホスティング

バケットを作成します。

1.png

「プロパティ」タブをクリックし、「静的ウェブサイトホスティング」の「編集」をクリックします。その後、以下の画面のように設定します。

2.png

「アクセス許可」タブをクリックし、「ブロックパブリックアクセス (バケット設定)」の「編集」をクリックし、以下のようにチェックを外します。

3.png

この時点ではバケット名の横に「オブジェクトは公開することができます」と表示されます。

4.png

続いてバケットポリシーを設定します。「アクセス許可」タブをクリックし、「バケットポリシー」の「編集」をクリックし、以下のように設定します。

5.png

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::example-20210811.com/*"
        }
    ]
}

この時点ではバケット名の横に「公開」と表示されます。

6.png

最後に以下のリンクにアクセスすると、index.html の内容が表示されます。

7.png

表示例

9.png

カスタムドメインを使用した静的ウェブホスティング

冒頭にも書きましたが、ドメイン名とバケット名は一致していなければなりません

サブドメイン用のバケットを作成する

サブドメイン用のバケットを作成します。(ルートドメイン用のバケットは上記で作成したバケットを用います)

サブドメインはオブジェクトを格納しません。空のバケットを作成し、静的ウェブホスティングの設定するだけになります。ただし静的ウェブホスティングの設定は、リダイレクトの設定になります。

10.png

サブドメインバケットの静的ウェブホスティングを設定します。

11.png

ログ用のバケットを作成します。(オプションです。必要がなければこの手順は飛ばしても問題ありません。)

12.png

ログファイル格納用にフォルダを作成します。

13.png

「プロパティ」タグをクリックし、「サーバーアクセスログ記録」の「編集」をクリックします。以下のように設定します。ターゲットバケットは「S3の参照」から選択できます。

14.png

Route53 でカスタムドメインの設定をする

Route53 でドメインを取得します。「ドメインの登録」をクリックします。

24.png

バケット名の「.com」を取った部分を左側の入力欄に入力し、右側には「.com」を選択します。「チェック」をクリックし、利用可能であれば、「カートに入れる」をクリックします。住所などはデフォルトのまま、注文を確定します。

25.png

ホストゾーンから今作成したドメインをクリックします。

27.png

「レコードを作成」をクリックします。

16.png

以下の画面が表示される場合には、「ウィザードに切り替える」をクリックします。

17.png

「シンプルルーティング」をクリックします。

18.png

「シンプルなレコードを定義」をクリックします。

19.png

以下のように設定し、「シンプルなレコードを定義」をクリックします。

20.png

続いてサブドメイン用のレコードを作成します。「シンプルなレコードを定義」をクリックします。

21.png

先ほどと同様の設定に加え、レコード名の入力欄に「www」を入力します。後は先ほどと同様に進めます。

22.png

ドメインにアクセスし、正常にホスティングされるか確認します。

26.png

疑問点

サーバーアクセスログの書き込み間隔はどれくらいなのでしょうか。

サーバーアクセスログのドキュメントには書き込みが 2 時間おきと書いてあります。

Amazon S3 は 2 時間おきにログバケットにウェブサイトアクセスログを書き込みます。

このドキュメントは以下の「ステップ 5: ウェブサイトトラフィックのログ記録を設定する」に記載があります。

一方、以下のドキュメントの「ベストエフォート型のサーバーログ配信」を読むと、明確に書き込み間隔の記載はありません。数時間以内としか書かれていません。

サーバーアクセスログレコードの配信は、ベストエフォートで行われます。ログ記録用に適切にバケットを設定した場合、そのバケットへのほとんどのリクエストについてログレコードが配信されます。ほとんどのログレコードは、記録された時間から数時間以内に配信されますが、配信間隔は短くなる場合もあります。

サーバーログの完全性や適時性は保証されません。リクエストのログレコードが、リクエストが実際に処理されてからかなり後に配信されたり、配信すらされないこともあり得ます。サーバーログの目的は、バケットに対するトラフィックの特性を理解することです。ログレコードが失われることはまれですが、すべてのリクエストが完全に報告されるとは限りません。

参考記事

1
1
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
1
1