AWS再入門2018 Amazon CloudFront編

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。池田です。北海道では例年より早く、桜の開花が観測されました。いよいよ春がやってきましたね。

今回はAmazon CloudFrontの主な特徴と、公開されている「Amazon CloudFrontについてよくある質問」からピックアップしたいくつかの項目から、その機能を整理していこうと思います。

Amazon CloudFrontとは

低レイテンシーの高速転送によりデータ、ビデオ、アプリケーション、API をビューワーに安全に配信するグローバルコンテンツ配信ネットワーク (CDN) サービスです。CloudFront の物理的なロケーションは AWS グローバルインフラストラクチャに直接接続されているという意味で AWS に統合されています。

CDNは[ Content Delivery Network ]の略称で「ウェブコンテンツをインターネット経由で配信するために最適化されたネットワークのこと(wikipediaより)」です。 単一サーバによるコンテンツ配信ではアクセス集中による高負荷が原因で、配信が途切れたりサーバ側の処理が追いつかずタイムアウトしてしまうなど、提供者側にも利用者側にも不満が残るケースが少なくありませんでした。これを解消するために考案された負荷分散の仕組みのひとつと言えます。

主な特徴

  • 柔軟なコンテンツ配信
    URLパスに基づいた複数のオリジンサーバ、キャッシュ動作を設定することにより、エンドユーザごとに変化する動的コンテンツの配信が可能。デバイスやアクセス元の国(ジオターゲティング)による設定を用いた多言語対応や、S3以外のカスタムオリジンサーバへの転送なども可能。Lambda@Edgeによるコンテンツのカスタマイズやパーソナライズが可能。
  • 充実したセキュリティ
    AWS Certificate Managerを利用した無料SSL証明書や、独自のSSL証明書によるHTTPS暗号化通信が可能。情報の参照をオリジンは以下の特定コンポーネントやサービスに限定することが可能。署名付きURL、署名付きCookieの利用や、オリジンアクセスアイデンティティ(OAI)を使用してAmazon S3バケットへのアクセスを制限できる。CloudFrontを利用すると、追加料金なくAWS Shield Standardの保護が自動的に適用される。
  • ストリーミングに対応
    動画配信システムを簡単に構築できる、フルマネージド型のサービスAWS ElementalからのAWSメディアサービスと統合されている。これにより様々な方式での動画配信が可能となっている。
  • レポートと分析機能
    詳細なキャッシュ統計レポート、Amazon CloudWatchによるほぼリアルタイムなCloudFront使用状況のモニタリングなど多様な情報を集計、分析することが可能。

CloudFront全般でよくある質問

  • Amazon CloudFront でできること
    • 世界中のエッジロケーションのネットワークを使用して、リクエストに対して高速に(最も低いレイテンシーを提供するエッジロケーションから)コンテンツを配信する
      ・エッジロケーション: コンテンツにアクセスしたユーザにもっとも低いレイテンシで応答できるよう、世界各地に配置されたコンテンツを配信するためのデータセンター
  • サポートされるコンテンツ
    • HTTP上でサービス可能なすべてのファイルをサポート
      ・HTML、PHPなどの動的コンテンツ、画像、音声、動画、ソフトウェアなどの他にライブまたはオンデマンドでのストリーミング配信
    • サポートしているHTTPリクエスト
      ・GET、HEAD、POST、PUT、PATCH、DELETE、OPTIONS
  • 利用できるオリジンサーバ
    • AWSが提供するオリジンサーバ以外にも独自のオリジンサーバが利用可能(カスタムオリジン)
  • zone apexの利用
    • Amazon Route 53を利用することで、例えば www.example.com ではなく example.com といったzone apexを指定することが可能(Route 53のエイリアスレコードを利用)

エッジロケーションへのよくある質問

  • リージョン別エッジキャッシュとは
    • エッジロケーションとオリジンの間に存在する大容量のキャッシュサーバと考えて良い
    • リクエストを受けたエッジロケーションは、自身が保持していないコンテンツを(オリジンよりも物理的に近い位置にある)リージョン別エッジキャッシュから読み込むことで、オリジンから取得するよりもレスポンスが向上している
  • 国を指定したアクセス制限
    • Geo Restriction機能を利用することで、特定の国からのアクセスを拒否(HTTPステータスコード403を返答)することが可能
  • カスタムエラーメッセージ
    • 独自のHTTP4xxおよび5xxエラーメッセージが利用可能
  • キャッシュの保持期間(失効期間)
    • デフォルトは24時間
    • 0秒以上の任意の長さを指定可能
  • エッジロケーションからの削除
    • オリジンから削除することで、失効期間経過後に削除される
    • 無効化リクエスト(API)を利用して削除する

コンプライアンスに関するよくある質問

  • PCIへの準拠
    • PCI DSSレベル1に準拠
  • HIPAAへの適合
    • 適合している
    • AWSと事業提携契約(BAA)を締結している場合は、Amazon CloudFrontを使用して保護医療情報(PHI)を迅速に提供可能

セキュリティに関するよくある質問

  • 独自ドメインを利用したHTTPSによる配信
    • 独自SSL証明書機能を利用することにより可能
    • デフォルトではCloudFrontディストリビューションドメイン名が適用される
  • フィールドレベル暗号化
    • ユーザが提出したクレジットカード番号などのデータをオリジンサーバに安全にアップロードする機能
      PUT/POSTリクエストがオリジンに転送される前に、事前に定義されたフィールド固有の暗号化キーによりHTTPS形式でさらに暗号化する
      ・この機能によって、特定のコンポーネントまたはサービスでのみ、機密データを復号化が可能となり、プログラムのミスによる対象データの破損や書き換えを回避できる
  • 専用IP独自SSLとSNI独自SSLの違い
    • 専用IP独自SSL
      1対1でSSL証明書と専用IPアドレスをマッピングし、SSLコンテンツが各エッジロケーションで機能するようにしたもの
    • SNI独自SSL
      Transport Layer Security(TLS)プロトコルのSNI拡張機能に依存
      複数のドメインが同じIPアドレスを介したSSLトラフィックを処理できるようにするもの
      旧世代のブラウザなどでは利用できない点に注意が必要
  • SNIとは
    • Server Name Indicationの略称で、TLSプロトコルの拡張機能
    • 関連付けられたSSLリクエストのドメイン(サーバ名)が識別されるため、SSL通信で適切な証明書を使用することができる
  • DDoS攻撃からの保護
    • AWS Shield Standardを利用することで、SYN/UDPフラッド攻撃やリフレクション攻撃といった、頻繁に発生する一般的なレイヤー3およびレイヤー4攻撃から保護される
      ・AWS Shield Standard: AWSで実行しているウェブアプリケーションに対するDDoS攻撃を防御するマネージドサービス
  • ウェブアプリケーションの保護
    • AWS WAF(ウェブアプリケーションファイアウォール)を利用することで可能
      ・ IPアドレス、HTTPヘッダー、および独自URI文字列に基づいて許可またはブロックや監視(カウント)のルールを設定することができる

まとめ

本当はまだまだたくさんの「よくある質問」があり、それらについても整理したいところですが、再入門の範囲を超えて深掘りしたくなってきました。今回はここまでとしておき、また別の機会に、もっと掘り下げた投稿をしたいと思います。AWSの各種サービスの概要や仕組み、それらを支える技術などを学習していく上で定番なのはホワイトペーパーだと思いますが、各サービス紹介におけるFAQ(よくある質問)や事例集も大変参考になると感じています。これからも様々なドキュメントを読み解いてより理解を深めていきたいと思います。