本頁面說明如何設定 Media CDN 邊緣擴充功能 (CdnEdgeExtension),將 WebAssembly (Wasm) 外掛程式附加至 Media CDN 邊緣快取服務 (EdgeCacheService)。
CdnEdgeExtension 資源會直接附加至 EdgeCacheService 部署作業,並執行一或多個已排序的擴充功能鏈結 (extensionChains)。每個擴充功能鏈結都會使用一般運算語言 (CEL) 運算式進行比對,且最多可包含兩個鏈結的 WasmPlugin 資源。
詳情請參閱「Media CDN 擴充功能總覽」。
事前準備
- 建立 Media CDN 來源
- 建立 Media CDN 服務
設定
CdnEdgeExtension資源時,請注意 Media CDN 邊緣擴充功能會在大多數 Media CDN 功能之前執行,包括路徑比對和快取查詢。這樣一來,外掛程式就能重寫標頭或網址,影響 HTTP 轉送。不過,外掛程式程式碼無法檢查 Media CDN 路由規則新增的自訂標頭或內建功能。如要存取用戶端和連線屬性 (例如用戶端區域、IP 位址或 TLS 參數),請設定轉送屬性。
設定 Media CDN 邊緣擴充功能
如要設定 CdnEdgeExtension 資源,並將外掛程式附加至 EdgeCacheService 部署作業,請按照下列步驟操作:
在 YAML 檔案中定義
CdnEdgeExtension資源。下列範例會叫用
WASM_PLUGIN,在您傳送要求至media.example.com時,同時處理要求和回應標頭。注意:如果外掛程式失敗或逾時,
failOpen: false設定會傳回 HTTP500錯誤代碼。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 專案 IDSERVICE_NAME:目標Media CDN服務的名稱 (EdgeCacheService)WASM_PLUGIN:外掛程式名稱,例如my-wasm-plugin-resource
如要進一步瞭解 YAML 檔案中的欄位,請參閱 API 說明文件中的「ExtensionChain」。
使用
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部署作業只能附加一個邊緣擴充功能。 - 邊緣擴充功能鏈最多可包含兩個外掛程式。
- Media CDN 邊緣擴充功能支援
REQUEST_HEADERS和RESPONSE_HEADERS事件。這些擴充功能不支援 HTTP 主體或結尾處理。 - Media CDN 邊緣擴充功能只允許每個 CEL 運算式使用一個規則運算式。
- 擴充功能鏈結和擴充功能的名稱必須符合 RFC-1034 規定。根據這項規格,名稱最多可包含 63 個小寫英數字元或連字號,開頭必須是英文字母,結尾必須是英文字母或數字。
如要進一步瞭解資源限制,請參閱「配額與限制」。