5
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 で静的ホスティングしてみた【ハンズオン】

5
Posted at

こんにちは!
AWS初心者の ぶーちょ です!

今回は「次期 AWS Champions を目指すアドベントカレンダー」に参加させていただきます 🎄

自己紹介(AWSレベル感)

AWSの経験としては、

  • Budgets / Cost Explorer を少々
  • 社内ハンズオンイベントに少し参加した程度

というレベル感です。

普段はどちらかというと AWS利用料金の番人 的な立ち位置で、
部署全体のAWS利用料を 約8,000ドル削減 したことがあります
(この話はまた別の機会に…)

とはいえ、
インフラ構築の実務経験はほぼゼロ です。

「これはさすがにまずいぞ」と思い、
何かしらハンズオンをやろうとネタを探していたところ、先輩からこんなものを教えてもらいました。

30日でAWSをマスターするハンズオン問題集

30日でマスターする!?

コレだっ!!!

ということで、こちらのハンズオンに挑戦することにしました。

今回選んだ題材

本記事執筆時点でもいくつかハンズオンのネタが公開されていましたが、
今回はその中から

S3 と CloudFront を使った静的ホスティング

を選びました。

AWSの試験ではよく聞く構成ですが、
実際に自分で構築したことがなかった ため、ハンズオンとして取り組んでみました。

まずは基本の「キ」から。

本記事では、初心者目線で

  • どこで詰まったか
  • なぜそうなるのか

を中心にまとめていきます。

全体構成

image.png

※ハンズオン記事より引用
https://qiita-user-contents.imgix.net/https%3A%2F%2Fgithub.com%2F2025-Japan-AWS-Jr-Champions%2F30days-handson%2Fblob%2Fmain%2FBeginner%2Fimg%2F13-S3%2F13-s3-029.png%3Fraw%3Dtrue


そもそも「静的ホスティング」とは?

静的ホスティングとは、

  • HTML
  • CSS
  • JavaScript
  • 画像ファイル

など、あらかじめ用意したファイルをそのまま配信する Webサイトの公開方法です。

一方で、動的ホスティングはアクセスごとに処理が発生します。
例えば、

  • ECサイト
  • 会員制サービス
  • ログイン判定が必要なサイト

などが該当します。

S3 と CloudFront をおさらい

S3(Amazon Simple Storage Service)

S3 は様々な種類のファイルを保存できるストレージサービスです。

つまり、

  • HTML ファイルも保存できる
  • HTML を保存した S3 バケットを 静的Webサイトとして公開 できる

というわけですね。

S3 単体でも静的ホスティングは可能ですが、

  • セキュリティ
  • アクセス制御

の面で課題があります。

CloudFront

そこで登場するのが CloudFront です。

CloudFront は CDN(コンテンツ配信サービス)で、

  • 世界中にキャッシュして高速配信できる
  • HTTPS を簡単に利用できる

というメリットがあります。

今回のゴール

今回は、

S3 に配置した静的ファイルを
CloudFront 経由で HTTPS で表示する

ことをゴールにします。

大まかな手順は以下の通りです。

  1. S3 バケットを作成して静的ファイルを配置
  2. CloudFront ディストリビューションを作成
  3. CloudFront 経由でアクセスできることを確認

① S3 バケットを作成して静的ファイルを配置

まずは S3 バケットを作成します。

ここで少し悩んだのが パブリックアクセス設定

デフォルトでは
「パブリックアクセスをすべてブロック」にチェックが入っていますが、
今回は 簡易的なハンズオン ということでチェックを外しました。

※ 実運用ではしっかり制御が必要ですね
(ANS の知識が頭をよぎりました)

image.png


HTML ファイルをアップロードします。

image.png

無事アップロードできました。


② CloudFront ディストリビューションを作成

次に CloudFront の設定です。

……が、

CloudFront ディストリビューションって何?

となったので、ここで少し復習。


CloudFront ディストリビューションとは?

CloudFront ディストリビューションとは、
コンテンツ配信のルールをまとめた設定 のことです。

代表的な設定項目として、

オリジン:コンテンツの取得元
今回は S3 ですが、試験だと ALB が出てきたりしますね


ディストリビューション設定

先ほど作成した S3 バケットをオリジンに設定し、
あとは基本的にポチポチ進めていきました。

image.png

設定完了です。

image.png


③ CloudFront 経由でアクセス確認(ここで詰まる)

ここで最初の壁。

「どうやって CloudFront からアクセスするの?」

ハンズオンのヒントを見ると、以下の形式でアクセスするとのこと。

https://<ディストリビューションドメイン名>/<ファイル名>.html

なるほど、ドメイン名ってこうやって使うのか…。

よし!アクセスだ!!

……と思いきや。

image.png

なぜ!?

2つ目の壁:アクセスできない

「サーバーが見つかりません」とのこと。

ハンズオンの解説と見比べてみると、
CloudFront の WAF が有効 になっていました。

今回はハンズオンなので、WAF は無効にします。

image.png


アクセス成功!

無事アクセスできました 🎉

image.png

HTTPS でアクセスできていることも確認できました。

image.png


まとめ

今回は S3 + CloudFront を使った静的ホスティングを実装してみました。

手順自体はそこまで複雑ではありませんでしたが、

  • CloudFront のアクセス方法が分からない
  • ディストリビューションの概念がふわっとしていた

など、実務経験の無さを痛感 する結果となりました。

次は、

  • WAF の設定
  • アクセス制御
  • セキュリティ周り

にも挑戦してみたいと思います。

ここまで読んでいただき、ありがとうございました!

参考文献

5
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
5
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?