#CloudFront特徴
・高性能な分散配信
・高いパフォーマンス
・予測不可能なスパイクアクセスへの対応
・セキュリティ機能
・設定容易で即時利用可能
・充実したレポーティング
・完全従量課金
#CloudFrontによるCON(Contents Delivery Network)
・大容量のキャパシティを持つ地理的に分散したサーバ群からコンテンツをキャッシュしたり、配信するサービス。
利点
・ユーザを一番近いエッジローケーションに誘導することで配信を高速化
・コンテンツをキャッシングを行い、オリジンの負荷をオフロード
・DNSを応用した仕組みで最適なエッジロケーションを割り当て
・CloudFront導入はバックエンドはそのままで可能
#コンテンツ配信の流れ
①Amazon S3 バケット、ALB、EC2、オンプレミスにある独自のHTTPサーバなどのオリジンサーバ設定。
②ファイルをオリジンサーバにアップロード
③CloudFrontディストリビュージョン作成
④CloudFrontがドメイン名を割り当て
⑤ディストリビュージョンの構成を全てのエッジロケーションに送信
#ディストリビュージョン
・ドメイン毎に割り当てられるCloudFrontの設定
・マネージメントコンソールもしくはAPIで即時作成可能
・HTTP/1.0、HTTP/1.1、HTTP/2、WebSocket対応
・IPv6対応
・デフォルトでは「xxxx.cloudfront.net」がディストリビュージョンのドメイン名として割り当てられる
・CNAMEエリアスを利用して代替えドメイン名の指定可能
・Route53と組み合わせたZone Apexが利用可能
#ウェブディストリビュージョン
サポートプロトコル/HTTPメソッド
(1)HTTP/HTTPS対応
・GET,HEAD,OPTION(Cacheモード)
・PUT,POST,DELETE,OPTION,PATCH(Proxyモード)
(2)オリジンへのアクセス
・Internet経由でアクセスできることが必要
・Range GET対応
エッジでのgzip圧縮機能
CloudFrontエッジでコンテンツをgzip圧縮することでより高速にコンテンツを配信
#キャッシュ動作:キャッシュコントロール機能
キャッシュコントロール
キャッシュヒット率を向上させることがCDN導入のポイント
・GET/HEAD/OPTIONのリクエストが対象
・単一のファイルサイズのキャッシングは最大20GBまで
・URL毎にキャッシュ期間指定が可能
キャッシュコントロールヘッダーの挙動
・キャッシュ時間のコントロールが可能
・キャッシュマイにキャッシュ設定を行うことで、URLパス毎にキャッシュ期間を変えることが可能
(1)デフォルトTTL:オリジンがキャッシュコントロールヘッダーを指定しない場合に利用(デフォルト24時間)
(2)最小TTL:キャッシュすべき最小時間
(3)最大TTL:キャッシュすべき最大時間
キャッシュファイルの無効化
・コンテンツ毎の無効化パス指定
・同時に最大3000個までのパス指定が可能
キャッシュ動作:動的コンテンツ機能
オリジンサーバに対してHeader,Cookie,Query,Strings情報をフォワードすることで、動的なページの配信にも対応
・オリジンに任意のヘッダー情報をて転送することで動的なページ生成にも対応
・必要最低限のヘッダーを指定することを推奨
・CloudFront独自ヘッダーがある
Cookieオリジンへ転送
・オリジンに任意のCookie情報を転送することで動的なページ生成にも対応
・CloudFrontは指定されたCookie名と値をセットでキャッシュ
・必要最低限のCookieを指定することを推奨
クエリ文字列パラメータ値をオリジンへ転送
・オリジンに任意のクエリ文字列を転送することで動的なページ生成にも対応
・CloudFrontは指定されたクエリ文字列パラメータと値をセットでキャッシュ
カスタムオリジンのタイムアウト
・CloudFrontがカスタムオリジンからの応答を待つ時間を指定
・デフォルトのタイムアウトは30秒、4~60秒の範囲で設定可能
オリジンフェイルオーバー
CloudFrontオリジンフェイルオーバーによる高可用性
・オリジングループを作成し、プライマリオリジン・セカンダリオリジンを指定
・エラーHHTPステータス500等フェイルオーバー用に設定したHTTPステータスコードを返した場合や接続タイムアウトした場合にバックアップオリジンにルーティング
#データ保護機能
サポートするSSL証明書
(1)デフォルト証明書
・cloudfront.netドメインのSSL証明書は標準で利用可能
(2)独自SSL証明書
・ACM(AWS Certification Manager)で発行された証明書
オリジン暗号化通信
CloudFrontエッジとオリジン間の通信方式を制御
・SSlプロトコル方式
・オリジンと通信プロトコル
・HTTPのみ,HTTPSのみ,クライアントからの通信プロトコルに合わせる
・カスタムオリジンの場合のみ指定可能
地域制限(Whitelist/Blacklist)
地域制限によるアクセス制御
・接続されるクライアントの地域情報をもとに、エッジでアクセス判定
・ディストリビュージョン全体に対して適応
・制限されたアクセスには403を返す
署名付き URL/Cookie
・署名付き URL/Cookieを利用したプライベートコンテンツ配信
・Restricted Viewer Accessを有効にするだけで、署名のないアクセスを全てブロック
・標準
①有効期間
②有効コンテンツパス
・オプション
①アクセス元IPアドレス制限
②有効開始時刻指定
③許可コンテンツのワイルドカード指定
署名付き URL
・有効期間を最初にするkポトを推奨
・権限のないアクセスには403を応答
・URLの生成
・決められたフォーマットでQuery Stringsにパラメータ値を設定
・CloudFrontの秘密鍵を利用してSignatureのパラメータ文字列を署名
・アクセス毎に必ず署名が必要
フェールドレベル暗号化を使用した機密データの保護
・POSTリクエストの特定のデータフィールドを特定のアプリケーションのみアクセスできるように保護
・公開鍵暗号化方式
オリジンサーバの保護
(1)オリジンがS3の場合
・Origin Access Identity(OAI)使用
・S3バケットのへのアクセスをCloudFrontのみに制限
(2)カスタムオリジンの場合
・オリジンカスタムヘッダーを利用し、CloudFrontで指定された任意のヘッダーをオリジン側でチェック
・オリジン側のアドレスを公開しないとともに、CloudFrontが利用するIPアドレスの許可をさせる。