プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • AWS
  • CloudFrontのキャッシュ設定、キャッシュポリシー、オリジンリクエストポリシー
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

CloudFrontのキャッシュ設定、キャッシュポリシー、オリジンリクエストポリシー

10.01

  • miyabisan2
  • コメントを書く

この記事は5分で読めます

cloudFrontのビヘイビアの設定で「キャッシュポリシー」と「オリジンリクエストポリシー」という設定項目が出てきています。(何年か前のcloudFrontではなかった設定です。)

イメージ

設定イメージとしては以下のようになります。

マネージドポリシー

AWS側が用途に合わせて用意しているキャッシュポリシーのテンプレートです。そのまま使えそうであれば使ってもよいです。カスタマイズしたい場合は「Legacy cache settings(カスタムポリシー)」を選択して設定するようにしましょう。

キャッシュポリシー

クライアントとCloudFront間のポリシーです。キャッシュキーに含めるヘッダーやクエリ文字列、TTLなどを定義します。

CachingOptimized

Policy with catching enabled,Supports Gzip and Brotli compression.(キャッチが有効になっているポリシー。Gzip および Brotli 圧縮をサポートします。)

CachingDisabled

Policy with caching disabled(キャッシュが無効になっているポリシー)、その名の通りCloudFrontではキャッシュを行わない設定になります。カスタムポリシーでいえば全てのTTLを0にした状態です。

CachingOptimizedForUncompressedObjects

Default policy when compression is disabled(圧縮が無効な場合のデフォルトのポリシー)

Elemental-MediaPackage

Policy for Elemental MediaPackage Origin(Elemental MediaPackage のオリジンのポリシー)

Amplify

デフォルトでは選択できないようになっています。

This policy forwards the host header. S3 expects the origin's host and cannot resolve the distribution's host.(このポリシーはホストヘッダーを転送します。 S3 はオリジンのホストを想定していますが、ディストリビューションのホストを解決できません。)

オリジンリクエストポリシー

CloudFrontとオリジン間のポリシーになります。オリジンが一意のコンテンツを作るのに必要なヘッダーやクエリ文字列などを定義します。

UserAgentRefererHeaders

Policy to forward user-agent and referer headers to origin(ユーザーエージェントヘッダーとリファラーヘッダーをオリジンに転送するポリシー)

AllViewer

デフォルトだと選択できないようになっています。

This policy forwards the host header. S3 expects hte origin's host and cannnot resolve the distribution's hsot.(このポリシーはホストヘッダーを転送します。 S3 はオリジンのホストを予期しているため、ディストリビューションの hsot を解決できません。)

CORS-S3Origin

Policy for S3 origin with CORS(CORS を使用した S3 オリジンのポリシー)

CORS-CustomOrigin

Policy for custom origin with CORS(CORS を使用したカスタムオリジンのポリシー)

Elemental-MediaTailor-PersonalizedManifests

Policy for Elemental MediaTailor Orogin(Elemental MediaTailor Orogin のポリシー)

AllViewerAndCloudFrontHeaders-2022-06

Policy to forward all parameters in viewer requests and all CloudFront headers as of June 2022(2022 年 6 月時点で、ビューアリクエストのすべてのパラメータとすべての CloudFront ヘッダーを転送するポリシー)

AllViewerExceptHostHeader

Policy to forward all parameters in viewer requests except for the Host header(Hostヘッダーを除くビューアリクエストのすべてのパラメータを転送するポリシー)

Legacy cache settings(カスタムポリシー)

TTL設定

CloudFrontキャッシュ内のオブジェクトの有効期間を決定する設定です。(オリジン側の「Cache-Control」及び「ExpiresHTTPヘッダー」に連動します。)

キャッシュキー設定

CloudFrontがコンテンツをキャッシュする際に一意のコンテンツであることを判断するためのキーを指定します。(ヘッダー、クエリ文字列、cookieの要素を指定できます。)

キャッシュコントロール

CloudFrontだけでなくCDN全般通じてそうですが、キャッシュヒット率を上げることが重要です。

GET/HEAD/OPTION(選択可能)のリクエストがキャッシュ対象です。

PUTなどは対象外です。

単一ファイルのキャッシングは最大30GBまでになります。

ただ、範囲リクエストを使用することで30GBを超えるオブジェクトを分割してキャッシュ可能です。

URLパス(Behavior)毎にキャッシュ期間指定が可能です。

以下のような感じでBehavior(URLパス)毎にTTLを設定することができます。よくあるパターンとしては静的画像はTTLは長めにして、APIはキャッシュさせないみたいな設定です。

キャッシュコントロールヘッダー

下の図は、縦軸がオリジン側の設定(例:ApacheのWebサーバーに設定するCache-Controlの値)で、横軸がCloudFront側で設定するTTL設定の値になります。

cloudFrontではApacheなどのオリジン側の設定を完全に上書きしてしまうわけではなく、以下のような条件表に沿って設定を行ったうえでクライアントにキャッシュコントロールを返却するという処理になります。

Cache Policy 最小  TTL設定(CloudFront側の設定)
 最小TTL = 0秒最小TTL > 0秒を設定
オリジンHTTPヘッダー(例:Apacheなどの設定)Cache-Control max-ageを指定指定されたmax-ageと最大TTLで小さい値の期間をキャッシュする。最小TTL<max-age<最大TTLmax-age期間
max-age < 最小TTL最小TTL期間
最大TTL < max-age最大TTL期間
Cache-Control設定なしデフォルトTTL期間キャッシュ(24時間)最小TTLまたはデフォルトTTLで大きい値の期間キャッシュ
Cache-Control
max-ageとs-maxageを指定
指定されたs-max-ageと最大TTLで小さい値の期間キャッシュ最小TTL<s-max-age<最大TTLs-max-age期間
s-max-age < 最小TTL最小TTL期間
最大TTL < s-max-age最大TTL期間
Expiresを指定指定されたExpires日付と最大TTLで早い日付の期間キャッシュ最小TTL<<最大TTLExpires日付
Expires < 最小TTL最小TTL期間
最大TTL < Expires最大TTL期間
Cache-Contrl no-cache、no-store、および(または) privateディレクティブ追加ヘッダーを優先される。最小TTLの期間キャッシュ
オリジン側がHTTPキャッシュコントロールヘッダーを付与しない場合でも上書きが可能です。(MetadataにHTTPヘッダーを指定)
また、注意点としては、HTMLのmetaタグのHTTP Cache-ControlやPragmaが指定されていてもCloudFrontのキャッシュコントロールはできないので注意です。

デフォルトTTL

オリジンがキャッシュコントロールヘッダーを指定しない場合に利用、設定で変更できます。

最小TTL

CloudFront側でキャッシュすべき最小期間、設定で変更できます。

最大TTL

CloudFront側でキャッシュすべき最大期間、設定で変更できます。

キャッシュの削除(無効化、Invalidation)

長くても1分程度で完了します。

コンテンツごとに無効化パスを指定

同時に3000個までのパス指定が可能

ワイルドカードを利用した無効化パス指定

  • 同時に最大15個まで無効化パスリクエストが指定可能
  • オブジェクト数の制限なし
スポンサーリンク
  • 2023 10.01
  • miyabisan2
  • コメントを書く
  • AWS
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 12.28

    【AWS】EC2「ユーザーデータ」、「インスタンスメタデータ」について

  2. 2021 01.16

    【AWS】「ストレージ」(S3、EFS、Glacier、Storage Gatewayなど)

  3. 2021 12.02

    【AWS】「Code Commit」、「Code Build」、「Code Deploy」、「Code Pipeline」の違い

  4. 2019 11.24

    【AWS】「Amazon EC2インスタンス」、「セキュリティグループ」や「ACL」について

  5. 2020 06.15

    【AWS】WebサーバーにWordPressをインストールする。

  6. 2022 07.16

    【マイクロサービス】「メッセージブローカー」(AWSメッセージングサービス比較など)

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

StoryBookのビジュアルリグレッションテスト

【FuelPHP】概要

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー