助け合いフォーラム

AWS

AWS ソリューションアーキテクト - アソシエイト(SAA-C03)
問題ID : 30466
問題を開く
Amazon CloudFrontを使用してS3バケット内にあるWebコンテンツを配信している。Webコンテンツは1日に数回更新されるため、CloudFrontに保存されているキャッシュの更新頻度を高くしたい。
どのような設定をすればよいか。

正解

キャッシュTTLを小さい値に変更する

解説

キャッシュTTL(Time To Live:TTL)とはキャッシュを保持する時間のことです。URLパスごとに指定できます。CloudFrontはキャッシュTTLが超過した後にクライアントからのリクエストを受けると、オリジンサーバーにコンテンツの更新有無を確認し、更新されていればキャッシュに反映しつつ応答を返します。

キャッシュTTLは大きい値であるほどキャッシュの更新頻度が低くなり、小さい値であるほどキャッシュの更新頻度が高くなります。

したがって正解は
・キャッシュTTLを小さい値に変更する
です。

キャッシュTTLを含むキャッシュの設定のことを「キャッシュポリシー」といいます。

その他の選択肢については、以下のとおりです。

・キャッシュTTLを大きい値に変更する
キャッシュTTLを大きい数値にすると、キャッシュを保持する時間が長くなり更新頻度が低くなるので、誤りです。

・Invalidationを小さい値に変更する
・Invalidationを大きい値に変更する
Invalidationはキャッシュを削除する機能です。
キャッシュの更新頻度の設定ではないため、誤りです。

参考

【コンテンツ配信ネットワーク(Content Delivery Network:CDN)】
コンテンツ配信ネットワークとは、インターネット上のコンテンツを高速化して配信するためのネットワークのことです。コンテンツ配信ネットワークでは、世界各地の配信サーバー(エッジサーバー)がオリジナルデータがあるサーバー(オリジンサーバー)のコンテンツをコピーして保管(キャッシュ)します。クライアントはオリジンサーバーへアクセスする代わりに、エッジサーバーのキャッシュからコンテンツを受け取ります。
コンテンツ配信ネットワークを利用することにより、クライアントがコンテンツに低遅延でアクセス可能になる他、オリジンサーバーへの負荷軽減にもなります。


【Amazon CloudFront】
Amazon CloudFrontは、AWS上で動作する安全で高速なコンテンツ配信ネットワークです。CloudFrontを利用すると、世界各地に配置されているエッジロケーションから、自動的にクライアントと地理的な距離が近いエッジロケーションが選択されます。そしてエッジロケーション内のエッジサーバーがコンテンツを配信します。
CloudFrontのオリジンサーバーには、EC2インスタンスやS3バケットなどのAWSリソースや、オンプレミスのサーバーを設定できます。


CloudFrontでは、静的なコンテンツのほか、ライブストリーミングやオンデマンドストリーミングなどの動的なコンテンツも高いパフォーマンスで配信できます。AWSメディアサービス(動画伝送サービスや、動画変換サービスなど)と連携して、世界中にいるクライアントからのリクエストに対して低遅延で動的コンテンツを配信します。

【エッジロケーション】
AZとは異なるAWSデータセンターで、AZよりも数多く世界中に配置されています。Amazon CloudFrontやAmazon Route 53など一部のグローバルサービスを提供するとともに、AWS Global Acceleratorを利用してユーザーからリージョンサービスへアクセスする際の通信経路でもあります。

【ディストリビューション】
CloudFrontを使用するには、はじめに「ディストリビューション」を作成します。ディストリビューションではオリジンサーバーやキャッシュなど、コンテンツを配信するために必要な各種設定をします。
ディストリビューションを作成するとCloudFrontを通してコンテンツにアクセスするためのURL「http(s)://xxxxxx.cloudfront.net」が発行されます。URLは通信の暗号化の有無(HTTP/HTTPS)を選択できます。AWS Certificate Manager(サーバー証明書を管理するサービス)から発行したサーバー証明書をインポートすることで、URLに独自ドメイン名を使用することもできます。

■オリジンサーバーの設定
オリジンサーバーは、S3バケットやELBなどのAWSサービスから選択するか、ドメイン名を入力します。

すでにS3の静的Webホスティング(バケットに保存している静的コンテンツをWebサイトとして公開できる機能)を設定しているS3バケットもオリジンサーバーとして指定できます。

■キャッシュの設定や機能
キャッシュには、CloudFrontのキャッシュとブラウザキャッシュの2種類があります。CloudFrontのキャッシュは「キャッシュポリシー」でTTL(Time To Live)を設定でき、ブラウザキャッシュは「Cache-Controlヘッダー」で制御できます。

コンテンツ配信ネットワークはキャッシュが重要な役割を持っています。以下の設定や機能によってキャッシュを適切に管理することが大切です。

○キャッシュTTL(Time To Live:TTL)
キャッシュを保持する時間のことです。URLパスごとに指定できます。CloudFrontはキャッシュTTLが超過した後にクライアントからのリクエストを受けると、オリジンサーバーにコンテンツの更新有無を確認し、更新されていればキャッシュに反映しつつ応答を返します。
キャッシュTTLを含むキャッシュの設定のことを「キャッシュポリシー」といいます。

○キャッシュ削除(Invalidation)
エッジサーバーに保存されているキャッシュを即座に削除できる機能です。キャッシュを削除した後にクライアントからデータのリクエストを受け取ると、エッジサーバーは必ずオリジンサーバーへコンテンツを取得しにいくので、クライアントへ配信するコンテンツが最新化されます。削除対象のデータはフォルダ名やファイル名で指定できます。

S3バケットを使用してWebコンテンツを保存する際、各オブジェクトに対してCache-Controlヘッダーを設定することで、ブラウザ(ローカル)キャッシュの動作を制御できます。S3オブジェクトのCache-Controlヘッダーをno-cacheに設定すると、ブラウザキャッシュが無効になりますが、CloudFrontのキャッシュには最小TTLが適用されます。最小TTLはデフォルトで1秒なので、コンテンツが変更された直後でも最新のコンテンツが返されます。

【CloudFrontを利用したセキュリティの強化】
CloudFrontを利用してコンテンツへのアクセスを制御したり、暗号化することでデータを保護します。

■OAI(Origin Access Identity)
S3バケット内のコンテンツへのアクセスをCloudFront経由でのアクセスに限定し、クライアントからS3バケットへ直接アクセスされないようにする機能です。クライアントからオリジナルコンテンツへの直接アクセスを制限することにより、オリジンサーバーのデータを保護できます。

オリジンサーバーにS3バケットを選択すると、OAIの設定が表示されます。


OAIを利用する時は、S3バケットのバケットポリシーにCloudFront経由のみアクセス可能にする設定を追加します。


■CloudFront署名付きURL
URLを知っている特定のクライアントが期限付きでコンテンツへアクセスできる機能です。S3の署名付きURLと同じく、CloudFront署名付きURLは非常に長いランダムな文字列で作成されているため、URLを知らない人が推測することはほぼ不可能です。
CloudFront署名付きURLを利用する時は、OAIを有効にしてS3バケットへ直接アクセスされないように設定します。また、URL発行時に有効期限を設定すると、有効期限の過ぎたURLは無効になります。

■地理的制限
クライアントからのアクセスを国別に制限できる機能です。クライアントの接続情報から接続元の国を判別して、ホワイトリストに設定した国からのアクセスは許可、ブラックリストに設定した国からのアクセスは拒否します。例えば、特定の国に対して法律上の理由でコンテンツの配信ができない場合などに利用します。

■フィールドレベル暗号化
CloudFrontはユーザーからオリジンサーバーへのリクエストを受けるリバースプロキシとして動作します。フィールドレベル暗号化は、ユーザーから送信されたHTMLフォームのPOSTリクエストのうち、一部のフィールドを暗号化し、特定のアプリケーションでのみ復号可能とする機能です。リクエストをオリジンに転送する前にCloudFrontがさらにデータを暗号化するので、HTTPS通信のセキュリティがより強固になります。フィールドレベル暗号化は、ECサイトで送信される個人情報のような高い機密性が求められるデータに利用します。
下記の図では、ユーザーから送信された機密情報をCloudFrontで暗号化し、Lambda関数のみアクセス可能にしています。
上に戻る

誤字

投稿日 2023/11/11

解説の

Invalidatiionはキャッシュを削除する機能です。

iが1つ多いです。
Invalidationが正です。

スタッフからの返信

s staff_satomi

2023/11/12 00:11

yastice様 ご指摘の点を修正いたしました。 ご報告いただきまして、誠にありがとうございます。

この投稿に対して返信しませんか?