1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

S3とCloudFrontを使って静的サイトを作成してみる

Last updated at Posted at 2024-10-07

これは何?

AWSのS3CloudFrontを使って静的サイトの環境を作ったので備忘録

メリット

  • コストが安い(EC2などと違いアクセス分しかコストかからない)
  • サーバーレスでメンテナスが不要
  • S3だけで作るよりセキュリティー面good(https通信ができる)

デメリット

  • ある程度AWSの知識必要(そこまでは学習コストはかからない認識だが)
  • PHPなどのサーバーサイドの言語は動かせない
  • CloudFrontの設定でWAFを利用するとお金がかかる

環境作成

S3の準備

バケットの作成は下の記事とほぼ同じ
https://qiita.com/rakkun/private/cbfa52a7fee3f7c0ea39

ブロックパブリックアクセス設定だけ違う(今回はチェックを外さない)
スクリーンショット 2023-12-25 22.15.13.png

バケットポリシーや静的ウェブサイトホスティングも特に設定しない
バケットポリシーは後で設定する

CloudFrontの準備

ディストリビューションの作成
オリジンドメインの部分をクリックすると先ほど作成したS3のバケットが表示されるため選択
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3638353033332f61333533336433322d383730322d333366362d663033352d3337303037376561656336382e706e67.png

ここはHTTPSにリダイレクトするように設定(onlyでもいいのかな)
スクリーンショット 2023-12-25 22.27.38.png

WAFの設定有効にするだけでお金かかるはず。。。
スクリーンショット 2023-12-25 22.28.03.png

他は特に変更なく作成する。

ファイルを配置

ここも、以前やったS3の部分と同じ
スクリーンショット 2023-12-25 22.34.25.png

いざアクセス

アクセス方法はCloudFrontのディストリビューションドメイン名をコピーしてブラウザに貼り付ける

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3638353033332f62626534353464392d623934302d653862302d346635392d3231313766383566343964302e706e67.png

は???
スクリーンショット 2023-12-25 22.36.11.png

あ、バケットポリシー。。。

バケットポリシーの設定

自分で作らなくてもCloudFrontで必要なバケットポリシーを作成してくれる
オリジンの設定をする
スクリーンショット 2023-12-25 23.10.04.png

オリジンアクセスをPublicから Origin access control settings(俗に言うOAC) に変更
ポリシーをコピーをクリックしてクリップボードに保存しておく
スクリーンショット 2023-12-25 23.13.34.png

S3のバケットポリシーに移行してコピーした内容を貼り付ける
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3638353033332f36323230663536612d363663622d343937662d623832382d6362326662623963653838642e706e67.png

再チャレンジ!

🖕🖕🖕🖕🖕
スクリーンショット 2023-12-25 22.54.30.png

あれ?詰んだ???

デフォルトルートオブジェクトの設定

どうやらデフォルトルートオブジェクトの設定なるものが必要らしい
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f3638353033332f39643437386663362d306262362d646161352d623133662d3261366139393162623662352e706e67.png

index.htmlを設定してあげる
スクリーンショット 2023-12-25 23.22.06.png

三度目の正直

これでだめなら心が折れちゃう。。。
スクリーンショット 2023-12-25 23.26.15.png

お、無事に表示された!

おまけ

ページ遷移

https://d2ek2spgsf156c.cloudfront.net/
ディレクトリそのまま上げたらいけた

今後試したいこと

  • 手動アップロードからCI/CDを使って自動でアップロード
  • Route53入れて独自ドメイン

感想

  • AWSのコンソール画面がしょっちゅう変わるから、一年後には全く同じ方法じゃできないかも。。。
  • S3だけでやった時は、つまらずいけたけど複数サービス使うとたまに躓くなぁ
  • ファイル更新した時に、地味にキャッシュにいじめられた(書く時間がなかったので割愛)
1
0
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
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?