本稿は、AWS Solution Architect Professional に出題される Amazon CloudFront についてまとめた記事です。
目次
Amazon CloudFront が出題されるシナリオ
Amazon CloudFront とは
ユーザーへの静的および動的Webコンテンツの配布を高速化するWebサービス ( コンテンツ配信ネットワーク(CDN)サービス)
エッジロケーションと呼ばれるデータセンターの世界的なネットワークを通じてコンテンツを配信します。ユーザーがCloudFrontで提供しているコンテンツをリクエストすると、ユー ザーは可能な限り最高のパフォーマンスでコンテンツが配信されるように、レイテンシーが最も低いエッジロケーションにルーティングされます。コンテンツがすでに最も遅延の少ないエッジロケーションにある場合、CloudFrontはすぐに配信します。コンテンツがそのエッジの場所にない場合、CloudFrontは定義したオリジンからコンテンツを取得します。
CloudFrontがコンテンツを配信する方法
S3バケットや独自のHTTPサーバーなどのオリジンサーバーを指定します。このサーバーからCloudFrontがファイルを取得し、世界中のCloudFrontエッジロケーションから配信されます。
ファイル (コンテンツ) をオリジンサーバーにアップロードします。CloudFrontディストリビューションを作成します。これは、ユーザーがWebサイトまたはアプリケーションを介してファイルをリクエストしたときに、どのオリジンサーバーか らファイルを取得するかをCloudFrontに伝えます。同時に、CloudFrontですべてのリクエストをログに記録するかどうか、配布が作成されたらすぐに有効にするかどうかなどの詳細を指定します。
CloudFrontは、CloudFrontコンソールで確認できる新しいディストリビューションにドメイン名を割り当てます。CloudFrontは、ディストリビューションの設定(コンテンツではなく)をそのすべてのエッジロケーション(CloudFrontがオブジェクトのコピーをキャッシュする地理的に分散したデータセンター内のサーバーのコレクション)に送信します。
CloudFrontは、以下の HTTP メソッドで WebSocket プロトコルだけでなく、HTTPプロトコルもサポートします。
- GET
- HEAD
- POST
- PUT
- DELETE
- OPTIONS
- PATCH
Lambda@Edge と一緒に使う
Lambda@Edge を CloudFront と一緒に使う場合、 CloudFront が配信するコンテンツをさまざまな方法でカスタマイズできるようにします。署名付きURLまたは署名付きCookieを使用するオプションとして、独自のカスタムオリジンからプライベートコンテンツを提供するように CloudFront ディストリビューションを構成するのに役立ちます。
Regional edge caches
CloudFront には、コンテンツが CloudFront エッジロケーションに留まるほど人気がない場合でも、コンテンツのパフォーマンスを向上させるために、より多くのコンテンツを視聴者に近づけるリージョナルエッジキャッシュがあります。
CloudFront と DNS
CloudFront でゾーン apex を使用できます。 CloudFront はワイルドカード CNAME をサポートします。
CloudFront Origins
オリジンにS3バケットを使用する
CloudFront が配信するオブジェクトをS3バケットに配置します。
Origin の Web サイトエンドポイントとして設定された S3 バケットを使用する
メディアストアコンテナまたはメディアパッケージチャネルを使用する
MediaStore コンテナとして設定されたS3バケットをセットアップするか、MediaPackage でチャンネルとエンドポイントを作成できます。次に、CloudFront でディストリビューションを作成および構成して、ビデオをストリーミングします。
EC2またはその他のカスタムの Origin を使用する
例えば、WebサーバHTTPサーバです。
Origin の Failover のために CloudFront Origin グループを使用する
オリジンフェイルオーバーを使用して、 CloudFront のプライマリオリジンと、プライマリオリジンが特定の HTTP ステータスコードエラー応答を返す場合にCloudFront が自動的に次のオリジンに切り替えるために、セカンダリオリジンを指定します。
オブジェクトのキャッシュ
オブジェクトはデフォルトで24時間キャッシュされます。有効期限が切れる前であっても、CloudFrontエッジキャッシュ内のファイルを無効にすることができます。
CloudFront は、クエリ文字列パラメーターの値に基づいてコンテンツのさまざまなバージョンをキャッシュできます。
キャッシュの設定
キャッシュ動作ごとに構成できる機能には次のものがあります。
- パスパターン
- CloudFront ディストリビューションに複数のオリジンを設定している場合、 CloudFront がリクエストを転送するオリジンを指定します。
- クエリ文字列をオリジンに転送するかどうか。
- 指定されたファイルにアクセスするには、署名付きURLが必要かどうか。
- ユーザーにHTTPSを使用してこれらのファイルにアクセスするように要求するかどうか。
- オリジンがファイルに追加するCache-Controlヘッダーの値に関係なく、これらのファイルをキャッシュする最小時間
圧縮
ビューアリクエストのリクエストヘッダーにAccept-Encoding : gzipが含まれる場合に、特定のタイプのファイルを自動的に圧縮し、圧縮ファイルを提供するように CloudFront を構成でき ます。
CloudFront Distribution
CloudFront ディストリビューションを作成して、コンテンツの配信元とコンテンツ配信の追跡、および管理する方法の詳細を CloudFront に伝えます。
ディストリビューションの設定
以下、必要な構成設定を選択し設定します。
コンテンツオリジン
CloudFront が配信するファイルを取得する Amazon S3 バケット、 MediaPackage チャネル、または HTTP サーバーのことです。オリジンとして、最大25個の S3 バケット、チャネル、HTTPサーバーの任意の組み合わせを指定できます。
アクセス
ファイルをすべてのユーザーが利用できるようにするか、一部のユーザーにアクセスを制限するかを指定します。
セキュリティ
ユーザーが HTTPS を使用してコンテンツにアクセスすることを CloudFront に要求するかどうかを指定します。
Cookieまたはクエリ文字列の転送
CloudFront がオリジンに Cookie またはクエリ文字列を転送するかどうかを指定します。
Geo restrictions ( 地域制限 )
選択した国のユーザーがコンテンツにアクセスできないように CloudFront で許可するかどうかを指定します。
アクセスログ
ビューアのアクティビティを示すアクセスログを CloudFront で作成するかどうか指定します。
HTTP または HTTPS 経由で設定可能なコンテンツ
- 静的および動的なダウンロードコンテンツ
- Apple HTTPライブストリーミング(HLS)やMicrosoft Smooth Streamingなど、さまざまな形式のオンデマンドビデオ
- リアルタイムでの会議、会議、コンサートなどのライブイベント
ディストリビューションを作成または更新するときに指定する値
配信方法
WebまたはRTM。
オリジン設定
保存しているWebコンテンツのバージョンのロケーションに関する情報。
キャッシュ動作設定
Webサイト上のファイルの特定のURLパスパターンに対して、さまざまなCloudFront キャッシュ機能を構成できます。
カスタムエラーページとエラーキャッシング
制限事項
選択した国のユーザーがコンテンツにアクセスできないようにする必要がある場合、指定した国のホワイトリストのユーザーがコンテンツにアクセスできるようにするか、指定した国のブラックリストのユーザーがコンテンツにアクセスできないように CloudFront ディストリビューションを構成できます。
パフォーマンスと可用性
CloudFront では、複数のオリジンをセットアップして、 Origin Failover で冗長性を有効にすることもできます。 Origin Failover を設定するには、少なくとも2つのオリジンを持つディストリビューションが必要です。次に、1つのプライマリを設定して、2つのオリジンを含むディストリビューションのオリジングループを作成します。最後に、オ リジングループをオリジンとして指定するキャッシュ動作を定義します。
- オリジングループの2つのオリジンは、次の任意の組み合わせにすることができます。 Amazon S3 バケットや Amazon EC2 インスタンスなどのAWSオリジン、または独自の HTTP ウェブサーバーなどのカスタムオリジン。
- オリジングループを作成するときに、プライマリオリジンが設定した特定のステータスコードを返すときに、 GET 、 HEAD 、および OPTIONS HTTP メソッドの2番目のオリジンにフェイルオーバーするように CloudFront を設定します。
CloudFront は、動的コンテンツと静的コンテンツの両方に最適化されており、キャッシュの動作を最適化するための広範な柔軟性を提供し、ネットワーク層ではレイテンシとスループットの最適化がされています。
CloudFront で HTTPS を使用する
ビューアと CloudFront の間、および CloudFront とオリジン間の通信の両方に HTTPS 設定を選択できます。
ビューアで HTTPS を使用し、ファイルに代替ドメイン名を使用する場合、 CloudFront が HTTPS リクエストを処理する方法について次のオプションのいずれかを選択する必要があります。
- 各エッジロケーションで専用 IP アドレスを使用する
- サーバー名表示 (SNI) を使用する
モニタリング
請求レポート
請求レポートは、 CloudFront を含む、使用している AWS サービスのすべてのアクティビティビューです。使用状況レポートは、 CloudFront などのサービスのアクティビティの要約であり、時間、日、または月ごとに集計されます。また、 CloudFront の使用状況をグラフィカルに表示する使用状況チャートも含まれています。 CloudFront コンソールには、 CloudFront アクセスログのデータに基づいたさまざまなレポートが含まれます。
- CloudFront キャッシュ統計レポート
- CloudFront 人気オブジェクトレポート
- CloudFront トップリファラーレポート
- CloudFront 使用状況レポート
- CloudFront Viewers レポート
AWS Config の利用
AWS Config を使用して、CloudFront ディストリビューション設定の変更の構成変更を記録できます。
CloudWatch の利用
CloudFront は Amazon CloudWatch メトリックスと統合されているため、ウェブサイトまたはアプリケーションを監視できます。
CloudTrail の利用
AWS CloudTrail で API リクエストをキャプチャすることは可能です。 ただし、 CloudFront はグローバルサービスですので、 CloudTrail ログで CloudFront リクエストを表示するには、既存の証跡を更新してグローバルサービスを含める必要があります。
セキュリティ
CloudFront 、 AWS Shield 、 AWS WAF 、および Route 53 はシームレスに連携して動作し、ネットワークやアプリケーション層の DDoS 攻撃を含む複数の種類の攻撃に対して柔軟で階層化されたセキュリティ境界を作成します。
SSL 機能
コンテンツ、 AP I、またはアプリケーションを SSL/TLS 経由で配信でき、高度な SSL 機能が自動的に有効になります。
Geo-restriction
地理的制限機能により、特定の地理的場所のユーザーが CloudFront を介して配信しているコンテンツにアクセスできないようにすることができます。
Origin Acess Identity ( OAI )
Origin Access Identity 機能で、あなただけの CloudFront からアクセスできるように S3 バケットへのアクセスを制限することができます。
フィールドレベルの暗号化
フィールドレベルの暗号化は CloudFront の機能で、クレジットカード番号などのユーザーが送信したデータをオリジンサーバーに安全にアップロードできます。
価格
CloudFront サービスに支払う最大価格に対応する価格クラスを選択します。デフォルトでは、 CloudFront はすべての CloudFront リージョンのエッジロケーションからオブジェクトを提供します。
- S3バケットに保管するための料金
- エッジロケーションからオブジェクトを提供するための料金
- オリジンにデータを送信するための料金
データ転送
HTTP / HTTPS リクエスト
無効化リクエスト
CloudFrontディストリビューションに関連付けられた専用 IP カスタム SSL 証明書 - HTTPS 要求には追加料金が発生し、フィールドレベルの暗号化も有効になっている要求には追加料金が発生します。
コンプライアンス
以下に準拠しています。
- PCI-DSS
- SOC
- HIPAA
制限事項
- 配信できる単一ファイルの最大サイズは 20 GB
- 配信制限ごとのデータ転送速度は 40 Gbps
- ディストリビューションごとに提供できるファイルは無制限