おっさん社内SEエンジニアの勉強ブログ

勉強記録のブログとなります。

AWS認定学習記録-キャッシュの活用-CloudFrontの概要

ハンズオンは進めず次の単元の学習となります。

今回のテーマ:CloudFrontの概要

概要

CloudFrontとはAWSが提供するCDN(Content Delivery Network)サービスです。
CDNとはWEBコンテンツ配信処理(画像や動画など)を高速化するためのサービスとなります。

導入前後のイメージや導入後のメリットは以下のようになります。

f:id:In-houseSE:20210829144318p:plain

また、大規模なアクセスを世界中にあるエッジのキャパシティを活用し、効率的かつ高速にコンテンツ配信が可能なサービスとなります。
ポイントとしては以下項目などがあります。

  • 210以上のエッジロケーションによる高性能な分散配信
  • 高いパフォーマンス
  • AWS WAF/AWS Certificate Managerとの連携やDDoS対策によるセキュリティ機能
  • オリジンに対し、Header/Cookie/Query Stringsによるフォワード指定で、動的なページ配信が可能

アーキテクチャの変化

従来はユーザーに近い位置にあるエッジロケーションから配信するシンプルな構成となります。
概要図は以下のようになります。

f:id:In-houseSE:20210829145035p:plain

現在は、「リージョナルエッジキャッシュ」が追加されより効率的な配信を可能とする構成となります。
概要図は以下のようになります。

f:id:In-houseSE:20210829145318p:plain

グローバルエッジネットワーク

AWSならではのグローバルに配信ネットワークが構築が可能です。

Distribution設定

CloudFrontの配信設定を実施して、各ドメインにて利用します。 ポイントは以下のような項目があります。

  • 各配信先となるドメインに割り当てるCloudFrontを設定
  • マネージメントコンソールやAPIにより作成
  • WEB DistributionとRTMP Distributionを選択
  • 使用量が最大40Gbps/100,000RPS超は上限緩和申請が必要
  • 独自ドメインの指定可能

設定する際の留意事項は以下のような項目があります。

  • コンテンツオリジン設定:CloudFrontの配信ファイルの取得先設定
  • アクセス制限:ファイルアクセスの許可設定
  • セキュリティ設定:アクセス時にHTTPSの使用の要否
  • Cookieまたはクエリ文字列転送設定:オリジンへのCookie/クエリ文字列転送の要否を設定
  • 地域制限:特定の国のユーザーからアクセス拒否設定
  • アクセスログ設定:アクセスログを作成要否の設定

WEB Distribution/RTMP Distributionの違い

Adobeメディアを利用する場合:RTMPDistribution
通常:WEB Distribution
このように使用判断を行いますが、各々の機能概要を以下に記載します。

WEB Distribution
  • 通常のHTTPプロトコルを利用したWEB配信をする際に利用
  • HTTP1.0/HTTP1.1/HTTP2に対応
  • オリジンはS3バケット/MediaPackageチャンネル/HTTPサーバーを設定
  • Apple HTTP Live Streaming(HLS)やMicrosoft Smooth Streamingなど様々な形式のビデオオンデマンド
RTMP Distribution
  • RTMP配信形式の際に利用
  • Adobe Media Server/Adobe Real-Time Messaging Protocol(RTMP)を使用し、メディアファイルをストリーミング
  • S3バケットをオリジン設定
  • クライアントはメディアファイル/メディアプレイヤーを使用(JW Player、Flowplayer、Adobe Flash)

Gzip圧縮機能

エッジロケーション側でコンテンツとGzip圧縮し高速で配信が可能です。

キャッシュコントロール機能

キャッシュコントロールによりキャッシュヒット率を上昇させ効率的なキャッシュ活用を可能とします。
ポイントは以下の2項目となります。

パラメーター値の完全一致

  • URLとフォワードオプション機能(heade/Cookie/Query String)のパラメータ値の完全一致キャッシュが指定される仕組み
  • 単一ファイルのキャッシュは最大20GB
  • GET/HEAD/OPTIONリクエストを対象

キャッシュ無効化

  • キャッシュが期限切れになる前に無効化することが可能
  • 必要のないキャッシュを無効化することで効率的な利用を可能
  • コンテンツ毎に最大3,000個まで無効化パスを指定可能
  • ワイルドカードを利用し最大15個まで無効化パスリクエストが指定可能

セキュリティ機能

CloudFrontでは様々なセキュリティ設定を行うことで、セキュアなコンテンツ配信が可能となります。
ポイントとしては以下のようなものがあります。

  • SSL証明書を設定し、コンテンツ配信時のHTTPS対応
  • HTTPS化することによりビューワーとオリジン配信時の暗号化通信が可能
  • オリジンカスタムヘッダーによる通信制限が可能
  • AWS WAFによるファイアーウォール機能と連携
  • AWS WAFを使用することにより、ディストビューションに対するWEBリクエスト許可/拒否が可能
  • AWS WAFを使用することにより、Referre制限によるリンク参照禁止も可能
  • Amazon S3バケットからの配信の際、OAIとCloudFrontを指すカスタムドメインによってアクセス制限が可能
  • AWS ShieldによるDDoS対応が可能(標準で有効化され使用可能)
  • 署名付きURL/Cookieによる有効期間を設定
  • GEOリストリクションによる地域情報でアクセス判定し制限が可能

CloudFrontの利用設計

キャッシュ対象を決定した上で、キャッシュ時間やセキュリティ制限を設計します。
利用設計時のポイントは以下のようなものがあります。

キャッシュ対象の設定

コンテンツ利用データ分析などを実施し、静的コンテンツ/動的コンテンツへのキャッシュ対象URLを設定します。

TTLの設定

変更が反映されるまでの時間を考慮し、キャッシュ時間(TTL)を決定します。

その他設定

セキュリティ対応などその他設定事項の要否を選定します。(SSL認証の有無/HTTPSの有無など)

今回のテーマは以上です。