【クラウドフロント】

CloudFront(クラウドフロント) とは?

💡 AWSの「世界中に広がる高速道路」でコンテンツを届ける配達人
📌 このページのポイント
CloudFront のアーキテクチャ オリジン S3 EC2 ALB CloudFront キャッシュ Lambda @Edge WAF / Shield エッジロケーション 600か所以上 東京 N.Virginia ロンドン 👤 ユーザー オリジン シールド (任意) S3/EC2 = オリジンサーバー CloudFront = CDN層 エッジ = 世界拠点キャッシュ
CloudFrontのアーキテクチャ:オリジン → CloudFront → エッジロケーション → ユーザー
ひよこ ひよこ

CloudFrontって何をするサービスなの?

ペンギン先生 ペンギン先生

AWSが提供するCDN(コンテンツ配信ネットワーク)サービスだよ。世界中に600か所以上の「エッジロケーション」というサーバーを持っていて、ユーザーに一番近い場所からコンテンツを届けるんだ。東京のユーザーには東京のサーバーから、ニューヨークのユーザーにはニューヨーク近くのサーバーから配信するから、どこからアクセスしても速く表示されるんだよ。

ひよこ ひよこ

S3と組み合わせることが多いって聞いたんだけど、どうやって使うの?

ペンギン先生 ペンギン先生

よくある使い方は、S3に静的ファイル(HTMLCSS・画像など)を置いて、CloudFrontをその前に立てる構成だね。S3を直接公開すると遅かったりセキュリティ面が心配だけど、CloudFrontを挟むことでキャッシュによる高速化と、S3への直接アクセスを遮断するセキュリティ強化が同時に実現できるんだよ。OAC(オリジンアクセスコントロール)という仕組みでS3をCloudFrontからしかアクセスできないようにできるんだ。

ひよこ ひよこ

Lambda@Edgeっていうのもあるよね?それって何なの?

ペンギン先生 ペンギン先生

Lambda@Edgeは、CloudFrontのエッジロケーション上でLambda関数(AWSサーバーレス処理)を実行できる機能だよ。通常のLambdaは特定のリージョン(東京など)で実行されるけど、Lambda@Edgeはユーザーに一番近いエッジで実行されるから超高速なんだ。たとえばリクエストのURLを書き換えたり、認証チェックをしたり、画像をリサイズしてから返したりと、コンテンツを配信する途中でカスタム処理を加えられるんだよ。

ひよこ ひよこ

料金はどんな仕組みなの?キャッシュを上手く使えば安くなったりするの?

ペンギン先生 ペンギン先生

CloudFrontの料金は主に「データ転送量」と「HTTPリクエスト数」で決まるよ。キャッシュヒット率を上げると、オリジン(S3やEC2)へのリクエストが減るからコストも下がるんだ。Cache-Controlヘッダーで適切なキャッシュ期間を設定することが重要で、変更が少ない画像やフォントは長めに、HTMLは短め(またはキャッシュなし)にするのが一般的な戦略だね。CloudFrontとS3間のデータ転送は無料なのもポイントだよ。

ひよこ ひよこ

セキュリティ面でも役に立つって聞いたんだけど、具体的にはどんなことができるの?

ペンギン先生 ペンギン先生

AWS ShieldというDDoS防御が標準で有効になっているし、AWS WAFWebアプリケーションファイアウォール)と連携して不正なリクエストをブロックすることもできるよ。また、HTTPS化(SSL/TLS証明書の設定)も簡単にできて、ACM(AWS Certificate Manager)で無料の証明書を発行してCloudFrontに設定するだけでOKなんだ。地域ごとにアクセスを制限する「Geo制限」機能もあるよ。

ひよこ ひよこ

ベテランのエンジニアが知っておくべきCloudFrontの深い知識ってあるの?

ペンギン先生 ペンギン先生

上級者が注目するのは「オリジンシールド」と「キャッシュヒット率の最適化」だね。オリジンシールドは、エッジロケーションとオリジンの間にキャッシュ層を1段追加する機能で、オリジンへのリクエストを劇的に減らせるんだ。あとはキャッシュキーの設計が重要で、クエリ文字列Cookieヘッダーをキャッシュキーに含めすぎるとキャッシュが細分化されてヒット率が下がるから、本当に必要なものだけに絞るのがコツだよ。CloudFront Functionsというエッジ実行機能はLambda@Edgeより軽量で安価なので、単純なURL書き換えなどにはこちらを使い分けるのがプロの判断だね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「CloudFront」って出てきたら「AWSCDNで、世界中にコンテンツを速く届けるサービス」と思えればだいたいOK!
📖 おまけ:英語の意味
「Amazon CloudFront」 = 雲(クラウド)の前面
💬 ユーザーに最も近い「前面(フロント)」からコンテンツを届けるイメージだよ
← 用語集にもどる