Service Extensions を使用すると、拡張機能を使用して Media CDN 処理パスにカスタムコードを挿入できます。このページでは、Media CDN 拡張機能の概要について説明します。
Media CDN には、コンテンツ配信ネットワーク(CDN)の最も一般的なユースケースに対応する多くのコア機能が組み込まれています。これらの機能を超える要件がある場合があります。たとえば、キャッシュを改善するためにヘッダーを正規化したり、カスタム URL 署名アルゴリズムを使用したり、既存の CDN から Media CDN に以前の動作を移植したりする必要がある場合があります。
エッジ拡張機能(CdnEdgeExtension)を使用すると、Media CDN 処理パスのキャッシュの前にある Google エッジ ネットワークで WebAssembly(Wasm)プラグインを直接実行できます。
CdnEdgeExtension リソースは EdgeCacheService デプロイに直接接続し、1 つ以上の順序付き拡張機能チェーン(extensionChains)を実行します。各拡張機能チェーンは、ホスト名、URL パス、クエリ パラメータ、HTTP リクエスト ヘッダーに基づいてリクエストを選択的に評価する Common Expression Language(CEL)一致条件(matchCondition.celExpression)を定義します。
プラグインは、HTTP リクエスト ヘッダーとレスポンス ヘッダーの両方にアクセスして操作し、キャッシュキーの生成に影響を与え、カスタム認証トークンまたは URL 署名を検証し、合成レスポンスを提供できます。詳しくは、図 1 をご覧ください。
Media CDN エッジ拡張機能の仕組み
クライアント リクエストがエッジ拡張機能によって拡張された EdgeCacheService に到達すると、拡張機能は次の順序で実行されます。
一致条件の評価: Media CDN はリクエスト属性を抽出し、
CdnEdgeExtensionで定義された順序付きのextensionChainsを評価します。CEL 式がtrueと評価される最初のチェーンが実行され、後続のチェーンはすべてスキップされます。プラグイン リクエスト ヘッダーの処理(
REQUEST_HEADERS): 構成されたプラグインが順番に実行されます。1 つの拡張機能チェーン内で最大 2 つのプラグインをチェーンできます。プラグインは、転送された HTTP ヘッダーと Envoy 属性を検査し、リクエスト ヘッダーを追加または書き換えることができます。また、クライアントに直接合成レスポンスを返すこともできます。ルート マッチングと送信元の選択: Media CDN は、ルートルールを評価し、リクエストに基づいてターゲット送信元を選択します。これには、プラグインによって変更されたリクエスト ヘッダーや URL パスも含まれます。
キャッシュ ルックアップと送信元フェッチ: Media CDN は、キャッシュキー(プラグインが変更したリクエスト ヘッダーまたは URL パスを組み込むことができます)を評価し、エッジ キャッシュ ストレージをチェックします。キャッシュ ヒットが発生した場合はコンテンツを配信し、キャッシュミスが発生した場合は選択した送信元からコンテンツをフェッチします。
プラグイン レスポンス ヘッダー処理(
RESPONSE_HEADERS): キャッシュまたは送信元からコンテンツが取得されると、構成されたプラグインが順番に実行されます。その後、変更されたレスポンス ヘッダーがダウンストリーム クライアントに配信されます。クライアントへの配信: 最終的なレスポンス ヘッダーと本文がクライアントに配信されます。