SAA / ドメイン3 高パフォーマンスなアーキテクチャの設計

重要な内容

Amazon CloudFront

概要

は、世界各地のからコンテンツを配信するです。利用者に近い場所へコンテンツをすることで、遅延とへの負荷を軽減します。


主要技術

① オリジンとディストリビューション

は、、Application Load Balancer、、などをとして使用できます。ディストリビューションにドメイン名、証明書、配信方法を設定します。

② キャッシュ動作

パスパターンごとのビヘイビアで、許可するメソッド、、転送するヘッダー・Cookie・クエリ文字列などを制御します。キャッシュキーを必要最小限にすると、キャッシュヒット率を高められます。

TTLには最小TTL、デフォルトTTL、最大TTLの3つがあり、が返すCache-ControlやExpiresヘッダーとの関係で効き方が変わります。ここはキャッシュが効かない原因としてよく問われます。

設定効くのはどんなときか判断ポイント
デフォルトTTLオリジンがCache-ControlもExpiresも返さないとき既定値の0秒のままだと毎回オリジンへ取りに行きます。
最小TTL / 最大TTLオリジンがCache-ControlやExpiresを返すときオリジンが指示した期間をこの範囲へ収めます。
Cache-Control: max-ageオリジン側でキャッシュ期間を指示したいときオブジェクト単位で期間を変えられます。
Cache-Control: no-store / no-cacheキャッシュさせたくないときエッジキャッシュを止めるため、配信を速くしたい要件とは逆向きです。

デフォルトTTLが0秒のままだと、Cache-Controlを付けていないオブジェクトは毎回オリジンへ到達します。ヘッダーを付けずにエッジキャッシュを効かせたい場合は、キャッシュポリシーのデフォルトTTLを要件に合う秒数へ変更します。のポリシーはアクセス制御の仕組みなので、キャッシュ期間の指定には使えません。

利用者が世界中に分散していると、地域ごとのリージョナルエッジキャッシュがそれぞれ同じオブジェクトをオリジンへ取りに行きます。Origin を有効にすると、オリジンの前にもう1層のキャッシュが入り、各地域からの取得を集約してヒット率を高め、オリジンの負荷を下げられます。Origin Shieldを通るリクエストには追加料金がかかります。

キャッシュできない動的なでも、キャッシュを無効にしたキャッシュビヘイビアでを前段に置くと、利用者に近いエッジで接続を終端し、オリジンとの接続を使い回してAWSのネットワーク経由で転送するため、遠い利用者への応答を速くできます。

Point
  • TTL = Time To Live(生存時間) の略で、キャッシュを保持してよい期間です。
  • max-age は「この秒数までは再取得しなくてよい」という指示です。
  • 和訳

③ オリジンアクセス制御

にはOrigin Access Control()を使用し、を直接公開せず経由のアクセスだけを許可できます。署名付きURLや署名付きCookieは、限定公開コンテンツの配信に使用します。

やをオリジンにする場合、オリジンが公開されたままだとCloudFrontとを迂回して直接アクセスされます。インターネット向けのALBを残すなら、ALBのの送信元をCloudFrontのオリジン向けマネージドプレフィックスリスト(com.amazonaws.global.cloudfront.origin-facing)に限り、さらにCloudFrontが付けるカスタムヘッダーをALBのルールで確認すると、自社のディストリビューション経由のリクエストだけを通せます。オリジンを使えば、ALB、、EC2をに置いたままCloudFrontだけを入口にできます。

④ オリジングループ

プライマリとセカンダリのをグループ化すると、特定の障害応答時にセカンダリへできます。静的コンテンツの配信などで可用性を高められます。

⑤ 更新と無効化

を待たずにを更新する場合はInvalidationを使用します。頻繁に更新するコンテンツでは、ファイル名のも検討します。

「速く配信したいが、更新後に古い内容を見せたくない」という要件では、キャッシュ期間を短くする方向ではなく、長めのキャッシュ期間とリリース時のInvalidationを組み合わせます。普段はエッジで応答し、更新したパスだけを明示的に消せるため、ヒット率と鮮度を両立できます。Invalidationは一定件数を超えるとパスごとに課金されるため、消す対象を絞るか、ファイル名を変えるバージョニングを選びます。

更新の要件選ぶ手段判断ポイント
更新直後から新しい内容を見せたいInvalidation対象パスのキャッシュを即時に無効化します。
更新が頻繁で無効化の回数が増えるファイル名のバージョニング別のキーになるため無効化が不要です。
更新がほぼないコンテンツ長いmax-ageへの到達を減らせます。

⑥ セキュリティとエッジ処理

独自ドメインの配信では証明書を関連付けます。利用者との間はビヘイビアのビューワープロトコルポリシー (をHTTPSへリダイレクト、またはHTTPSのみ) で、CloudFrontとカスタムの間はオリジンプロトコルポリシー (HTTPSのみ) で、それぞれHTTPSを強制します。片方だけでは、もう一方の区間が平文のまま残ります。を組み合わせると、不審なリクエストをエッジで遮断できます。署名付きURLは個別ファイル、署名付きCookieは複数ファイルへの期限付きアクセスに向きます。

CloudFront Functionsは軽量で高頻度な処理、@Edgeはより複雑な処理に使います。キーへ不要なCookie、ヘッダー、クエリ文字列を含めるとキャッシュが細分化されるため、必要最小限にします。

Lambda@Edgeは、ビューワーリクエスト、オリジンリクエスト、オリジンレスポンス、ビューワーレスポンスの4つのタイミングで実行できます。オリジンレスポンスに関連付けると応答の本文そのものを加工できるため、デバイスに応じた画像のリサイズやフォーマット変換のように、返すコンテンツを作り替える処理をエッジで完結できます。CloudFront Functionsはビューワー側の2つのタイミングだけで動き、実行時間が非常に短い代わりに本文や外部通信を扱えません。

要件選ぶ機能判断ポイント
ヘッダーの書き換え、URLの正規化、簡単なリダイレクトCloudFront Functionsビューワー側で完結し、実行時間と費用を抑えられます。
レスポンス本文の加工、画像変換、外部サービスへの問い合わせLambda@Edgeオリジン側のタイミングを使え、本文とネットワークを扱えます。
どのデバイスから来たかで応答を変えたいCloudFront-Is-Mobile-ViewerなどのヘッダーCloudFrontが付与する判定結果をオリジンや関数へ渡せます。

キャッシュポリシーでヘッダーをキャッシュキーへ含めると、そのヘッダーの値ごとに別のキャッシュを持てますが、コンテンツ自体が変換されるわけではありません。応答の中身を変えるのは、あくまでオリジンかLambda@Edgeです。

⚠️ 頻出: 「エッジで画像を変換して返したい」はLambda@Edge、「ヘッダーを書き換えたいだけ」はCloudFront Functionsです。


⑦ 料金とデータ転送の削減

は、エッジから利用者へのデータ転送(アウト)と/リクエストの件数に課金されます。、、などのAWSのからCloudFrontへの取得(オリジンフェッチ)には転送料金がかかりません。そのため、S3やEC2からインターネットへ直接配信している大量のダウンロードをCloudFront経由に変えると、オリジンからインターネットへの転送料金がなくなり、に当たった分はオリジンへの取得自体も減ります。

料金を抑える手段仕組み判断ポイント
CloudFrontを前段に置くAWSのオリジンからのオリジンフェッチは無料S3やEC2からインターネットへの直接配信の転送料金をなくせます。
キャッシュヒット率を上げるオリジンへの取得とオリジン側の処理を減らすキャッシュキーを絞り、を適切に設定します。
価格クラスを絞る配信に使うを料金の安い地域に限る価格クラス100は北米、欧州、イスラエル、トルコ、価格クラス200はさらに南米とオセアニアを除く地域です。対象外の地域の利用者は遅延が増えます。

価格クラスは配信を止める機能ではなく、対象外の地域の利用者も、対象内のエッジから配信を受けられます(遅延は増えます)。特定の国からのアクセスを拒否したい場合は地理的制限を使います。


試験対策

① CloudFrontとGlobal Acceleratorの使い分け

コンテンツの、エッジ配信、負荷軽減にはを選びます。/通信をキャッシュせずAWSグローバルネットワークで最適化する場合はを選びます。

② 高可用な配信

やをにし、必要に応じてオリジングループでします。S3の非公開化にはを組み合わせます。

要件選択肢
非公開S3から安全に配信 + OAC
有料会員向けの単一ファイル署名付きURL
会員向けの複数ファイル署名付きCookie
を即時削除Invalidation
ヘッダーが無いオブジェクトをエッジでキャッシュキャッシュポリシーのデフォルト
長くキャッシュしつつ更新後の鮮度も守る長いmax-age + リリース時のInvalidation
デバイスごとに画像を変換して返す@Edge

⚠️ 頻出: S3静的Webサイトと、非公開S3をOACで保護する構成は同じではありません。


参考文献

  1. ※1出題比率: AWS 公式の試験ガイドに記載された、採点対象の設問のうちその分野が占める割合です。

検索

キーワードを入力してください