コンテンツに移動
ネットワーキング

Media CDN を使用したストリーミング サービスのデプロイ、保護、モニタリング

2023年9月26日
Google Cloud Japan Team

※この投稿は米国時間 2023 年 9 月 14 日に、Google Cloud blog に投稿されたものの抄訳です。

Media CDN は、動画のストリーミングや大きなオブジェクトのダウンロード用に設計された Google Cloud のメディア配信 CDN プラットフォームです。Media CDN は Google Cloud のウェブ アクセラレーション CDN プラットフォームである Cloud CDN を補完します。Google Cloud の Media CDN を使用することで、お客様は YouTube が世界中のユーザーにサービスを提供する際に使うものと同じインフラストラクチャを活用できるようになります。Media CDN は、206 以上の国と地域、1,300 を超える都市を網羅し、世界的な存在感を示すプラットフォームをお客様に提供しています。このブログ投稿では、Google Cloud Media CDN を立ち上げるための手順を説明します。次のトピックについて取り上げます。

  • 送信元の設定
  • CDN サービスの設定
  • 必要なセキュリティの設定と Media CDN の Cloud Armor とのインテグレーション
  • CDN サービスのモニタリングと Media CDN の Cloud Monitoring とのインテグレーション

セキュリティ要件はお客様によって異なり、セキュリティの設定の手順も選択的である一方で、送信元と CDN サービスを設定する手順はすべてのシナリオで必須です。そのため、このブログ投稿の中で頻繁に使用されている用語を、ここで定義しておくことが重要になります。

  • エッジ キャッシュ送信元: Media CDN において、エッジ キャッシュ送信元とは、Media CDN を介して提供するコンテンツをホストする、一般アクセス可能な HTTP(S) エンドポイントへの参照です。このため、構成の観点から、送信元に関する構成は「エッジ キャッシュ送信元」で定義されます
  • エッジ キャッシュ サービス: エッジ キャッシュ サービスは、数千のグローバル エッジ ロケーションをユーザーへのメディア配信に利用できるようにする一般公開のエンドポイントです。このため、Media CDN の構成の観点から、キャッシュとルーティングに関する構成は「エッジ キャッシュ サービス」で定義されます

送信元の設定: エッジ キャッシュ送信元の構成

Media CDN を使用すると、お客様は複数のソースに所在する送信元インフラストラクチャからコンテンツを容易に取得できます。コンテンツの送信元に関する構成は、「送信元」で定義されます。この構成は Google Cloud コンソール(UI)から行うか、YAML ファイルを作成し、これを gcloud コマンドを使用してインポートすることで実施できます。送信元の構成の例を以下に示します。

読み込んでいます...

送信元を定義する際に、以下のようないくつかの重要な点について考慮する必要があります。

a)単一のエッジ キャッシュ サービスで、マニフェスト、動画セグメント、その他の静的なコンテンツを含む複数の送信元にマッピングできます。たとえば、2 つの異なる Google Cloud Storage バケットを指す 2 つの送信元があり、その両方の送信元を、ある 1 つのエッジ キャッシュ サービスで問題なく使用することが可能です。

b)再試行やフェイルオーバー動作などのパラメータは送信元ごとに構成されます。たとえば、ある送信元について、お客様は再試行条件を「CONNECT_FAILURE」、「GATEWAY_ERROR」、「HTTP_5XX」、「FORBIDDEN」などとして構成できます。再試行条件を特定、選択した後、最大再試行回数や適切なタイムアウト値を定義します。タイムアウト値は、Media CDN がリクエストに応答するために送信元への接続を待機する時間を示します。

c)フェイルオーバー送信元: Media CDN をご使用のお客様にとって、コンテンツの可用性は最優先事項であり、フェイルオーバー メカニズムはお客様の送信元の可用性に対処する一般的な方法です。Media CDN がプライマリ送信元に到達できない場合、代替の送信元(フェイルオーバー送信元とも呼ばれる)にフェイルオーバーします

d)お客様は、送信元への通信が機能するプロトコルを構成する必要があります。送信元には、HTTP/2、HTTPS(TLS 経由の HTTP/1.1)、非暗号化の HTTP/1.1 によって到達できます。

CDN サービスの設定: エッジ キャッシュ サービスの構成

送信元の構成に続いて、次のステップではエッジ キャッシュ サービスの構成を実施します。考慮すべき点には次のようなものがあります。

a)エッジ キャッシュ サービスを複数の「ルート」に分割します。このルートは(少なくとも)ホストに基づいてリクエストと一致します。それぞれのルートについて、適切な送信元を定義し、キャッシュ動作のプロパティを定義できます。たとえば、最初のルートはマニフェスト ファイルと一致するように定義して、適切な送信元を指定し、その CDN ポリシーや CORS ポリシーなどを定義できます。そして、2 つめのルートは *.ts のようなセグメントと一致するように定義し、同一の送信元あるいは別の送信元を指定し、適切な CDN ポリシーや CORS ポリシーなどを定義します。

読み込んでいます...

b)次に各ルートについて、お客様はどのキャッシュ モードが特定のルートルールに適切かを決定する必要があります。キャッシュ モードにより、Media CDN が、送信元で設定されたすべてのキャッシュ ディレクティブをオーバーライドして、成功したレスポンスを無条件にキャッシュに保存するか(FORCE_CACHE_ALL)、または Media CDN が静的オブジェクトをキャッシュに保存して、送信元からの有効なキャッシュ ディレクティブが優先されるようにするか(CACHE_ALL_STATIC)、もしくは一致するオブジェクトがキャッシュをバイパスするか(BYPASS_CACHE)を決定できます

c)CDN ポリシーに対し適切な有効期間(TTL)を定義します。ここでは、エッジ キャッシュがオブジェクトを保存できる最長時間(Max TTL)、クライアント ブラウザがオブジェクトをキャッシュできる時間(Client TTL)、送信元に有効な TTL が存在しない場合に使用するタイマー(default TTL)の 3 つのタイマーに注意が必要です。これらの TTL は楽観値タイマーであることを認識しておく必要があります。ほとんどアクセスされないコンテンツは、TTL に達する前にキャッシュから削除される可能性があります。

オプションとして、クロスオリジン リソース シェアリング(CORS)に関する構成が必要であれば、CORS ポリシーでこれについての構成が可能です。詳細については、こちらのドキュメントをご覧ください。

セキュリティの設定: エッジ キャッシュのセキュリティ構成

セキュリティの要件はデプロイに応じて異なり、Media CDN では包括的なセキュリティ インテグレーションが可能です。セキュリティに関する最も一般的な要求について以下で説明します。

コンテンツ配信の保護: コンテンツの保護には複数の戦略が存在し、お客様はそのうちの 1 つまたは複数のものを要求に応じてデプロイできます。

Media CDN は Cloud Armor と統合可能です。Cloud Armor のエッジ セキュリティ ポリシーは、配信されるコンテンツへの各地域からのアクセスを許可 / 拒否できます。さらに、配信されるコンテンツにアクセスできるソース IP アドレス ブロックの許可 / 拒否を構成することもできます(IP 許可リスト / 拒否リスト戦略)。以下の例は Cloud Armor ポリシーのサンプルルールを示しており、インドからアクセスするユーザーもしくは許可リスト中の IP 範囲からアクセスするユーザーにコンテンツへのアクセスを許可しています。

読み込んでいます...

  • Media CDN は自ドメイン名からの TLS 暗号化(HTTPS)トラフィックの配信をサポートしています。セルフマネージド証明書と Google マネージド証明書の両方が、Media CDN ではサポートされています。

コンテンツへのアクセスの保護

Media CDN は、クライアント認証用に以下のような署名付きリクエストのオプションを提供しています。

  • 署名: Media CDN は単一の署名を使用してコンテンツ保護を支援します。署名によって、ホストやプロトコルを含む完全な URL 署名が行なえます。
  • トークン: トークン認証は署名付きリクエストの署名形式で、リクエストへの署名に使用される情報がすべて特別に構成されたトークンに入っています。このトークンをリクエスト URL のクエリ パラメータに付与して、署名付きリクエストを作成します。トークンの検証に加えて、再生セッション中に、将来のリクエストで使用するユーザー エージェント用の新しいトークンを生成するように Media CDN を構成することも可能です。この動作はデュアル トークン認証と呼ばれ、マスター マニフェスト アセットがリンク共有されないよう保護を強化し、アプリケーション サーバーが、プレイバック セッション中の各リクエストに対してではなく初期のマスター マニフェスト リクエストのみに署名することを要求します。Media CDN はトークンを使用してコンテンツの保護に役立てます。アプリケーション サーバーは初期のマスター マニフェスト リクエストに対して短期トークンを生成し、Media CDN はセッション中の残りのアセットへのリクエストを認証する長期トークンを返します。

より包括的な多層防御アプローチでは、送信元が Media CDN 自体からのリクエストを認証できる必要があります。

  • このような要求に対し、送信元が Google Cloud Storage(GCS)バケットである場合は、Media CDN はサービス アカウントを使用して非公開 GCS バケット向けに認証済みリクエストを作成します。つまり、GCS バケットが非公開である場合、Media CDN がキャッシュ フィル時にバケットからの読み出しができるよう、Media CDN のサービス アカウントに「objectViewer」権限を付与する必要があります。
  • GCS 上にない送信元バケットについては、Media CDN は AWS 署名バージョン 4 もサポートしています。これは送信元が AWS S3 バケットなど外部ストレージのバケットにある場合などに有用です。

モニタリングの設定: エッジ キャッシュ モニタリング

メディア サービスを注意深くモニタリングして、期待通りに動作していることを確認することが重要です。Media CDN では、すべてのお客様が無料で設定済みのモニタリングを使用できます。定義済みのダッシュボードが目的に合わなければ Media CDN の指標を使用してカスタム モニタリング ダッシュボードを構成できます。あるいは、豊富なログデータを使用してエッジ キャッシュに関するさまざまなデータポイントについて詳細に把握できます。設定済みのモニタリングには以下が含まれます(これらに限定されません)

  • キャッシュ サマリー結果のレポート: HIT、MISS、UNCACHEABLE の割合やオフロード率。
  • オーディエンスの上位の地域
  • リクエスト総数、キャッシュ(下り、外向き)、キャッシュ フィル、エラー発生率の統計
  • 送信元の最初のバイトまでの時間、レイテンシなど

前述のモニタリング統計情報はすべて、お客様が構成した Media CDN のエッジサービスごとに、過去 6 週間までの履歴を確認できます。下の画面例は、設定済みのモニタリング ダッシュボードに含まれるウィジェットを示しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/1_MediaCDNmonitoring-forblog.max-2200x2200.PNG

上述のほか、Media CDN は Cloud Monitoring とも統合可能です。これにより、Media CDN のユーザーには、Metrics Explorer を使用する際に指標を選択したり、これらの指標に基づいてアラート ポリシーを作成したりするオプションが提供されます。さらに、これにより他の Google Cloud プロダクトと同じオペレーション スイートが使用できるため、統一されたツールや手順のエクスペリエンスの下で Media CDN のモニタリングを開始できます。Metrics Explorer では、Media CDN から豊富な指標が得られ、お客様はこれらを使用してカスタム ダッシュボードを作成できます。有用な指標の例を挙げると、リクエスト数、クライアントごとのリクエスト数、レスポンス バイト数、クライアントごとのレスポンス バイト数、送信元へのリクエスト数、送信元のレスポンス バイト数、送信元の最初のバイトまでの時間、送信元の最終バイトまでの時間などがあります。次の画面例はモニタリングが可能な指標の例を示しています。

https://storage.googleapis.com/gweb-cloudblog-publish/images/2_MetricsExplorer-MediaCDN.max-2200x2200.PNG

最後に、Media CDN は、さまざまなツールへのエクスポート オプションを備えた準リアルタイムのロギング機能を提供します。クライアントとエッジの間の各 HTTP リクエストが Media CDN により Cloud Logging に記録されます。HTTP ログフィールド、クライアント ASN、キャッシュ ステータス、キャッシュ モード、Armor Edge のセキュリティ ポリシーの詳細などが Media CDN のログとして表示される重要なフィールドです。Media CDN のログエントリの例をこちらに示しています。

その他のリソース

このトピックの詳細については、以下をご覧ください。

ー ネットワーキング担当カスタマー エンジニア Gaurav Madan

ー プロダクト マネージャー Prakash Daga

投稿先