Cloud Front
サービス概要
ユーザーへの静的および動的ウェブコンテンツ (.html、.css、.js、イメージファイルなど) の配信を高速化するウェブサービスであり、CloudFront ではエッジロケーションと呼ばれるデータセンターの世界規模のネットワークを通じてコンテンツが配信される。
CloudFront を使用して提供されているコンテンツをユーザーがリクエストすると、そのユーザーはエッジロケーションにルーティングされ、最も低いレイテンシーが提供されるため、最高のパフォーマンスで配信が可能。
特徴
-
コンテンツがエッジロケーション内に最も低いレイテンシーで既に存在している場合、CloudFront はそのコンテンツを即時に配信する。
-
コンテンツがそのエッジロケーションに存在しない場合、CloudFrontは、コンテンツの最終バージョンのソースとしてAWSユーザーが特定したS3バケット、MediaPackageチャネル、HTTP サーバー (たとえば、ウェブサーバー) などの、AWSユーザーが定義したオリジンからコンテンツを取り込む。
-
ファイルのコピーが世界中の複数のエッジロケーションに保持される (つまりキャッシュされる) ため、信頼性と可用性の向上も得られる。
-
Lambda@Edge
-
Lambda の拡張機能で、CloudFront が配信するコンテンツをカスタマイズする関数を実行できるコンピューティングサービス。
-
署名付きの URL や署名付きの Cookie を使用するオプションとして、独自のカスタムオリジンからプライベートコンテンツを供給する CloudFront ディストリビューションを設定するのに役立つ。
-
US-East-1 (バージニア北部) リージョンで作成した Node.js または Python 関数を、サーバーのプロビジョニングや管理の必要もなく、世界中のビューワーの最寄りの AWS のロケーションで実行可能。
-
Lambda@Edgeのトリガーをビューワーリクエストに設定すると、ビューワーからリクエストがある度にLambdaが起動。キャッシュがある場合に起動させたくない場合はトリガーをオリジンリクエストに設定。
-
オンデマンドおよびライブストリーミングビデオの供給
-
オンデマンドストリーミングで CloudFront を使用して、MPEG DASH、Apple HLS、Microsoft Smooth Streaming、CMAF などの一般的な形式であらゆるデバイスにストリーミング可能。
-
ライブストリームをブロードキャストする場合は、フラグメントを正しい順序で配信するマニフェストファイルに対する複数のリクエストを結合して、オリジンサーバーの負荷を軽減できるように、メディアフラグメントをエッジにキャッシュすることができる。
-
CloudFront を使用して HTTPS を設定する場合、既にオリジンサーバーへのセキュアなエンドツーエンド接続が存在します。フィールドレベルの暗号化を追加する場合、HTTPS セキュリティに加えて、システムの処理中に特定のデータにオリジンの特定のアプリケーションのみがアクセスできるように、そのデータを保護できる。
-
署名付きURL
-
有効期限切れ日時など、追加の情報も含まれており、コンテンツへのアクセスをより詳細に制御できる。
-
署名付きURLで制限を指定するJSON形式のポリシーステートメントを作成する。既定ポリシーまたはカスタムポリシーのいずれかを使用する。
-
カスタムポリシー・・・ユーザーがコンテンツへの①アクセスを開始できる日時②アクセスできなくなる日時③アクセスできるユーザーの IP アドレスまたは IP アドレス範囲を指定できる。URL が長くなる。
-
規定ポリシー・・・ユーザーがコンテンツにアクセスできなくなる日時を指定できる。
-
暗号化
-
ビューワーと CloudFront 間 ・・・ビューワーと CloudFront との間で HTTPS を必須にするかどうかを選択する場合、「ビューアープロトコルポリシー」で該当する値を指定。HTTPS 接続に使用するために必要な CloudFront の下記のセキュリティポリシーも選択。
-
1.ビューワーと通信するために CloudFront が使用する最低限の SSL/TLS プロトコル。
-
2.ビューワーに返すコンテンツを暗号化するために CloudFront で使用できる暗号。
-
CloudFront とオリジン間 ・・・ CloudFront とオリジン間で HTTPS が必要な場合には、CloudFront とオリジンの通信に使用されるプロトコルも選択。選択したプロトコルは、CloudFront に返すコンテンツを暗号化するためにオリジンがしようできる暗号化方式を決定する。
ベストプラクティス
- CloudFrontキャッシュに保持する時間はTTL値で制御が可能。期間を長くすると、その間はオリジンにファイルを取りに行かないため、パフォーマンス向上とオリジンの負荷軽減になる。もしTTLを0秒にした場合は常にオリジンからの最新コンテンツであることを確認するような動作となる。
- CloudFrontにおいて、S3バケットのコンテンツに対して、アクセスを制限するためには、Origin Access Identity(OAI)を作成し、S3バケット内のオブジェクトへのアクセスをそのOAIのみに許可する。=まずCloudFrontの署名付きURLまたは署名付きCookieを作成し、S3バケットのファイルへのアクセスを制限する。次にOrigin Access Identity(OAI)という特別なCloudFrontユーザーを作成して配布に関連付け、CloudFrontがOAIを使用することで、直接URLを使用してもファイルにアクセスできなくなる。
- http://example.com/index?language=en のようなHTTP領域区別の場合、クエリ文字列パラメーター値に基づき言語決定する構成とすることで、地域ごとに言語を変えたWEBサイトの構成が可能となる。