Media CDN エッジ拡張機能を構成する

このページでは、Media CDN エッジ拡張機能(CdnEdgeExtension)を構成して、WebAssembly(Wasm)プラグインを Media CDN エッジ キャッシュ サービス(EdgeCacheService)に接続する方法について説明します。

CdnEdgeExtension リソースは EdgeCacheService デプロイに直接接続し、1 つ以上の順序付き拡張機能チェーン(extensionChains)を実行します。各拡張機能チェーンは、Common Expression Language(CEL)式を使用して照合され、最大 2 つのチェーンされた WasmPlugin リソースを含めることができます。

詳細については、Media CDN 拡張機能の概要をご覧ください。

始める前に

  1. Media CDN の送信元を作成する
  2. Media CDN サービスを作成する
  3. Service Extensions を使用してプラグインを作成する

  4. CdnEdgeExtension リソースを構成するときは、Media CDN エッジ拡張機能が、ルート マッチングやキャッシュ ルックアップなど、ほとんどの Media CDN 機能の前に実行されることを考慮してください。これにより、プラグインはヘッダーまたは URL を書き換えて HTTP ルーティングに影響を与えることができます。ただし、プラグイン コードは、Media CDN ルートルールが追加するカスタム ヘッダーや組み込み機能を検査できません。クライアント リージョン、IP アドレス、TLS パラメータなどのクライアント プロパティと接続プロパティにアクセスするには、転送属性を構成します。

Media CDN エッジ拡張機能を設定する

CdnEdgeExtension リソースを構成してプラグインを EdgeCacheService デプロイに接続するには、次の操作を行います。

  1. YAML ファイルで CdnEdgeExtension リソースを定義します。

    次の例では、media.example.com にリクエストを送信するときに、WASM_PLUGIN を呼び出してリクエスト ヘッダーとレスポンス ヘッダーの両方を処理します。

    注: failOpen: false 設定は、プラグインが失敗するかタイムアウトすると、HTTP 500 エラーコードを返します。

    cat >cdn-edge-extension.yaml <<EOF
    edgeCacheServices:
    - projects/PROJECT_ID/locations/global/edgeCacheServices/SERVICE_NAME
    extensionChains:
    - name: "edge-plugin-chain"
      matchCondition:
        celExpression: 'request.host == "media.example.com"'
      extensions:
      - name: "auth-and-header-plugin"
        service: projects/PROJECT_ID/locations/global/wasmPlugins/WASM_PLUGIN
        failOpen: false
        supportedEvents:
        - REQUEST_HEADERS
        - RESPONSE_HEADERS
        forwardAttributes:
        - request.method
        - request.host
        - request.path
        - source.client_region
    EOF
    

    次のように置き換えます。

    • PROJECT_ID: Google Cloud プロジェクトの ID
    • SERVICE_NAME: ターゲット Media CDN サービス(EdgeCacheService)の名前
    • WASM_PLUGIN: プラグインの名前(例: my-wasm-plugin-resource)

    YAML ファイルのフィールドの詳細については、API ドキュメントの ExtensionChain をご覧ください。

  2. gcloud beta service-extensions cdn-edge-extensions import コマンドを使用して CdnEdgeExtension リソースをインポートします。

    gcloud beta service-extensions cdn-edge-extensions import cdn-edge-ext \
       --source=cdn-edge-extension.yaml \
       --location=global
    

    注: 新しいプラグイン構成がすべてのロケーションに配布されるまでに時間がかかることがあります。

制限事項

  • EdgeCacheService デプロイに接続できるエッジ拡張機能は 1 つだけです。
  • エッジ拡張機能チェーンには、最大 2 つのプラグインを含めることができます。
  • Media CDN エッジ拡張機能は、REQUEST_HEADERS イベントと RESPONSE_HEADERS イベントをサポートしています。これらの拡張機能は、HTTP 本文またはトレーラーの処理をサポートしていません。
  • Media CDN エッジ拡張機能では、CEL 式ごとに 1 つの正規表現のみを使用できます。
  • 拡張機能チェーンと拡張機能の名前は RFC-1034 に準拠している必要があります。この仕様では、名前は最大 63 文字の英小文字またはハイフンで構成し、先頭は英字、末尾は英字または数字にする必要があります。

リソースの上限については、割り当てと上限をご覧ください。

次のステップ