S3とCloudFrontを使って静的サイトを構築する方法
シンプルな静的サイトを作る場合
S3とCloudFrontを利用すれば容易に環境を作る事ができます。
今回はその手順をまとめさせていただきます。
S3側の設定~ファイルアップロードまで
1.S3でバケット作成

2.バケットのアクセス権限設定
パブリックアクセスを許可するようにし承認するようにします。

3.静的サイトとして設定
作成するとバケットができるので、リンクを選択します。

プロパティタブの「静的ウェブサイトホスティング」を有効にし
「インデックスドキュメント」にindex.htmlを設定する



4.アクセス許可の設定
「アクセス許可」タブを選択

バケットのポリシーを編集
Resourceにはバケット名を設定
|
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "Version": "2012-10-17", "Statement": [ { "Sid": "PublicGetObject", "Effect": "Allow", "Principal": "*", "Action": "s3:GetObject", "Resource": "arn:aws:s3:::placole-test-20230404/*" } ] } |

5.HTMLファイルのアップロード


アップロードが完了すると

S3への直URLが発行されます。

アクセスしてみると、先ほど上げたファイルの内容が表示されました。

これでS3側の設定がほぼ終わりましたので
ドメイン関係をこれから設定していきます。
1.CloudFront作成
・オリジンドメインには作成したS3を設定
・「新しいOAIを作成」を選択すると自動的にOAIを作成してくれるので選択
・「バケットポリシー」を自動更新でS3アクセス情報を更新してくれるので選択

httpアクセスをhttpsアクセスにリダイレクトするよう設定

代替ドメインなども通常通り設定

作成後デプロイが開始

2.S3のアクセス情報などを更新
CloudFront作成時にバケットポリシーの更新を実施したので
不要なもの(元々設定していたもの)を削除し赤枠部分だけを残すイメージで以下の設定を行う

|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
{ "Version": "2012-10-17", "Id": "PublicRead", "Statement": [ { "Sid": "1", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity EBY5Z4ZIK50F9" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::placole-test-20230404/*" } ] } |
3.route53でDNSのレコードを作成
エイリアスを利用し「トラフィックのルーティング先」をCloudFrontに設定
「ディストリビューション」には作成したCloudFrontに設定し
レコード作成を行う

以上で作業は終わりとなります。
作成したドメインでindex.html無しのURLでアクセスができるかと思います。
やり方さえ分かれば簡単に作る事ができますね!
更に詳細な情報については、公式ドキュメントをご参考に!
https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/getting-started-s3.html
