Amazon CloudFrontとは?AWSのContent Delivery Network
Amazon CloudFrontはAWSのcontent delivery networkです: 世界中のedge locationにコンテンツをキャッシュし、ユーザーが近くのpoint of presenceから高速なレスポンスを得られるようにします。
CloudFrontはユーザーとあなたのorigin (多くの場合S3 bucketやload balancer) の間に位置し、リクエストが来る場所の近くにレスポンスをキャッシュします。レイテンシを削減し、トラフィックのスパイクを吸収し、HTTPSを終端し、アプリケーションの前にセキュリティ層を提供します。
CDNのedgeの仕組み
ユーザーがファイルをリクエストすると、CloudFrontは利用可能であれば最も近いedge cacheからそれを提供します。cache missでは、あなたのoriginから取得し、レスポンスを保存し、後続のリクエストをedgeから提供します。これにより、originの負荷とround-trip timeが劇的に削減されます。
originとbehavior
distributionは1つ以上のoriginを指し、cache behaviorsを使って異なるpathがどうキャッシュされるかを決めます。TTL、どのheaderやquery stringがcachingに影響するか、そしてリクエストが各originにどうルーティングされるかを制御します。
セキュリティ機能
- ドメイン向けのACM経由の無料HTTPS証明書。
- CloudFrontだけがプライベートなS3 bucketを読めるようにするorigin access control。
- 悪意あるトラフィックをフィルタリングするAWS WAFとの統合。
- 特定の国を許可またはブロックするGeo-restriction。
cache invalidation
edgeは積極的にキャッシュするので、新しいコンテンツをデプロイするとは、古いコピーを破棄するようCloudFrontに伝えることを意味します。変更されたpathに対してinvalidationを発行します (または、問題を完全に回避するためにバージョン管理されたファイル名を使います)。
CI/CDでの役割
フロントエンドのdeploy jobがbuildをS3にアップロードし、それからCloudFront invalidationを作成して、ユーザーが即座に新しいバージョンを見られるようにします。両ステップともIAM/OIDC roleを使ってpipelineから実行されます。バージョン管理されたアセットのファイル名により、index.htmlだけを無効化し、それ以外はすべてキャッシュし続けられます。
重要なポイント
- CloudFrontは、レイテンシを削減するためにグローバルなedge locationでコンテンツをキャッシュします。
- S3やload balancerのようなoriginをフロントし、HTTPSとセキュリティ制御を追加します。
- deployは、ユーザーが新しく公開されたコンテンツを見られるようキャッシュを無効化する必要があります。