記事タイトルのとおりですが、AWS S3の前段にCloudFrontを置く理由を調べました。
AWS S3単体でもコンテンツ配信は可能なので、ふと疑問に疑問に思ったからです。
とくに参考になったサイト
- Amazon CloudFront を利用するメリットとS3との違いについて
- なぜ S3 の前段に CloudFront を置くと良いのか
CloudFrontを置くメリット
ざっくりメリットを挙げると3点です。
- キャッシュによる表示速度の高速化
- エッジデリバリーによる表示速度の高速化
- 独自ドメインのTLS(SSL)対応
(まだ調べきれてないので、他にもいくつかメリットはあると思います。)
キャッシュやエッジデリバリーによる高速化
AWS公式ドキュメントから引用します。
CloudFront のエッジロケーションは、AWS ネットワークバックボーンを介して AWS リージョンに接続しています。これは、地球を一周するほどの完全冗長の複数の 100 GbE 並列ファイバーで、数万のネットワークとリンクしています。そのため、オリジンの取得や動的コンテンツのアクセラレーションが改善されます。
エンドユーザーに低レイテンシーでコンテンツを配信するために、Amazon CloudFront は、450 以上の Point of Presence のグローバルネットワークと 48 か国の 90 以上の都市にある 13 のリージョンレベルのエッジキャッシュを使用します。Amazon CloudFront エッジロケーションは次の場所で提供されています。
引用: https://aws.amazon.com/jp/cloudfront/features/
要約すると、次の2点でCDN(コンテンツ・デリバリー・ネットワーク)として優れています。
- 世界中にエッジロケーションがあることで、利用者の近くから配信することができる
- エッジキャッシュによって、キャッシュで高速に配信することができる
独自ドメインのTLS(SSL)で配信できる
ACM(AWS Certificate Manager)で発行したTLS(SSL)証明書を、CloudFrontに紐づけて、独自ドメインのHTTPSで配信できます。
他にも思いつきそうなメリット
たとえば、CloudFrontにAWS WAFやAWS WAF Bot Controlを導入することで、DOS対策やBot対策が追加できそうです。
まとめ
ざっくり調べた限りでは、AWS CloudFrontが世界中にエッジロケーションを持つ優秀なCDNなので、素直にCDNとして活用しましょうという結論になりました。
また巨人の肩に乗るインフラ運用になるので、「CloudFront + S3」は情報量も多く、かつ取り回しが良いとも言えるかもしれません。