[SAA資格勉強]CloudFrontを学んでみた

はじめに

FundastA Inc.の鈴木です。

現在、AWS ソリューションアーキテクトアソシエイト試験合格に向け AWS について勉強中です。

今回は CloudFront について勉強したことを備忘録として、記述していきます。

今回のブログは少し長いです。

CloudFront とは

コンテンツ配信をグローバルロケーションを使って効率的に実施するサービスである。

リージョナルエッジキャッシュとは
オリジンサーバーとビューワー(ユーザー)に直接コンテンツを提供する POP の間にあり、エッジロケーションより大きなキャッシュを保存可能

エッジロケーションとは
サービスを提供する世界中にデータセンター
エッジロケーション設置箇所(国・都市)
出典:https://aws.amazon.com/jp/cloudfront/features/

CloudFrontの特徴

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

CloudFront ユースケース

サイトの高速化

  • サイトの表示が遅い
  • 大容量ファイルのダウンロードが遅い

負荷対策

  • ユーザーアクセスが膨大で多くのレスポンスを必要とする場合

動画配信

  • AdobeMediaServer や Wowza などの StreamingServerを組み合わせることで安定した動画配信環境の構築
  • VOD ストリーミング配信にも対応
  • S3 + CloudFront のみでストリーミング配信ができる。

CloudFront 設定方法

  • ファイル取得先の設定
  • ファイルアクセスの許可
  • アクセスに HTTPS を利用するかどうか
  • Cookie /クエリ文字列転送の要否を設定(言語設定も可能)
  • 地域制限(特定の国にのみアクセス可否など)
  • アクセスログを作成するのか設定

コスト

CloudFront を使用する上でかかる費用の項目を記述します。

  • リクエスト
    • デフォルトでリクエスト上限が決まっている。
    • 対象リクエスト
      • HTTP / HTTPS リクエスト
      • ORIGINSHIELD リクエスト
      • 無効リクエスト
      • フィールドレベル暗号化リクエスト
      • リアルタイムログリクエスト
  • データ転送アウト
    • インターネットへのリージョンデータ転送アウト
    • オリジンへのリージョン内データ転送アウト
    • IP カスタム SSL 証明書

Gzip 圧縮機能

エッジ側でコンテンツを Gzip 圧縮してより高速に配信可能

CloudFront の挙動

キャッシュにデータを保持して配信を高速化する。

データ取得方法

オリジンサーバーからデータを取得

  • 最初のデータ取得の際には直接アクセスする
  • TTL が過ぎてエッジにキャッシュがない場合、直接アクセスする。

CloudFront からデータを取得

  • 2 回目からエッジロケーションのキャッシュにアクセスする。

キャッシュの活用

キャッシュコントロールによりキャッシュヒット率を上昇させて効果的なキャッシュ活用を可能にし、オリジンの負荷軽減に役立っている。
  • パラメーター値の完全一致
    • URL とフォワードオプション機能のパラメーター値の完全一致でキャッシュが指定される。
    • 単一ファイルのキャッシュは最大 20 GB
    • GET/HEAD/OPTION リクエストを対象
  • キャッシュの無効化
    • キャッシュが期限切れになる前に無効化することが可能
    • 必要のないキャッシュを無効化することで効果的なりようを可能にする。
    • コンテンツごとに最大 3000 個まで無効化パスを指定できる。
    • ワイルドカードを利用して最大 15 個まで無効化パスリクエストが指定可能

アクセス制限

コンテンツオリジンなどのアクセス制限方法を記述します。

コンテンツへのアクセス制限

  • HTTPS 接続で接続する。
  • 特定の地理的な場所にいるユーザーがコンテンツにアクセスできないようにする。
  • CloudFront の署名付き URL か署名付き Cookie を使用してコンテンツにアクセスする。
  • 特定コンテンツフィールドのフィールドレベルの暗号化を設定する。
  • WAF を使用してコンテンツへのアクセス管理する。

オリジンへのアクセス制限

  • OAI(オリジンアクセスアイデンティティ)
    • S3 バケットへのアクセスを CloudFront からのリクエストに絞るための仕組み
    • OAI と呼ばれる特別なユーザーを作成し、そのユーザーに限定してアクセス
  • カスタムヘッダー
    • カスタムヘッダーをオプションで設定して、カスタムオリジンへのアクセス制限する仕組み
  • ビューワープロトコルポリシー
    • ビューワー(ユーザー)が CloudFront にアクセスするのに HTTPS でのアクセスが必要になる。
  • オリジンプロトコルポリシー
    • CloudFront がビューワーと同じプロトコルを使用してリクエストをオリジンに転送するようにディストリビューション

ユーザーキャッシュのアクセス制限

  • 署名付き URL
    • コンテンツに直接アクセスするURLではなく、署名付き URL からのみアクセスさせる。
    • ユースケース
      • 個別ファイルへのアクセスを制限する場合に利用する。
      • ユーザーが Cookie をサポートしていないクライアントを使用している場合
  • 署名付き Cookie
    • 署名付き Cookie からのみアクセスさせる。
    • ユースケース
      • 複数の制限されたファイルへのアクセスを提供する場合に利用
      • 現在の URL を変更したくない

CloudFront 地域制限

特定の場所にいるユーザーからのアクセスを制限する。

例:アフリカのユーザーに対して制限をかける。

セキュリティ

  • WAF と連携し、ディストリビューションに対するウェブリクエストを許可、ブロックが可能
  • Shield による DDoS 対応
  • CloudTrail はユーザー、ロールまたは AWS のサービスにより CloudFront で実行されたアクションレコードを提供
  • アクセスログは、ディストリビューションに対して行われたリクエストに関する詳細なレコードを提供

暗号化

SSL/TLS

  • ACM と連携して、照明を発行し、設定することが可能
  • SSL 証明書を設定することで、HTTPS でのコンテンツ配信になる。
  • CloudFront がビューワーと通信する際はビューワーが HTTPS を使用してファイルをリクエストするように CloudFront を設定
  • オリジンからファイルを取得する際に CloudFront が HTTPS を使用するように設定して、CloudFront とオリジンとの通信を暗号化する。

フィールドレベル暗号化

  • HTTPS とともにセキュリティのレイヤーが追加される。
  • システムの処理中に特定のアプリケーションのみがアクセスできるようにエンドツーエンドでデータを保護
  • 公開鍵認証方式を利用した暗号化を実施

おわりに

今回は、CloudFront に関することを記述いたしました。

項目が 12 個もあり、長くなりました。もう少し短くまとめられるようになりたいです。。。

CloudFront で少しでも役に立っていただければと思います。

ご覧いただきありがとうございます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA