研究室:Media CDN 的服務擴充功能

1. 簡介

上次更新時間:2024 年 5 月 1 日

內容傳遞網路 (CDN) 運用多種方式,將經常存取的內容快取至較靠近使用者的位置、終止較靠近用戶端的連線、重複使用與來源之間的連線,以及採用新型網路通訊協定和自訂項目,藉此改善使用者效能。

Media CDN 是 GCP 的串流媒體全球邊緣網路,提供許多內建或「核心」選項核心功能適用於最常見的用途,但您可能還有其他需求無法滿足這項核心功能組合的需求。

Media CDN 的 Service Extensions (有時也稱為「邊緣程式性」) 可讓您在邊緣執行自己的程式碼,以自訂 Media CDN 的行為。其他用途包括將快取金鑰正規化、自訂權杖驗證與權杖撤銷、其他自訂記錄欄位、A/B 測試和自訂錯誤頁面等。

建構項目

本程式碼研究室將逐步說明如何運用 Media CDN (CDN) + 服務擴充功能 (邊緣程式設計) + Cloud Storage (CDN 來源),部署支援邊緣運算功能的 CDN 推送環境。

1f19151bdd96acb0.png

課程內容

  • 如何將 Media CDN 設為「來源」的 Cloud Storage 值區
  • 如何透過自訂 HTTP 驗證建立 Service Extension 外掛程式,並將其與 Media CDN 建立關聯
  • 如何驗證 Service Extension 外掛程式是否正常運作
  • (選用) 如何管理 Service Extension 外掛程式,例如更新、參照、復原及刪除特定外掛程式版本

軟硬體需求

  • 基本網路與 HTTP 知識
  • 基本的 Unix/Linux 指令列知識

2. 事前準備

要求取得 Media CDN 許可清單,以及Service Extensions 許可清單

開始之前,請務必確認專案已加入 Media CDN 和 Media CDN 服務擴充功能的私人預先發布版許可清單。

  • 如要申請 Media CDN 和 Service Extensions 的存取權,請與 Google 帳戶團隊聯絡,以便代您建立 Media CDN 和 Service Extensions 的存取權要求

3. 設定和需求

啟動 Cloud Shell

雖然 Google Cloud 可以從筆記型電腦遠端操作,但在本程式碼研究室中,您將使用 Google Cloud Shell,這是一種在 Cloud 中執行的指令列環境。

在 GCP 控制台的右上方,按一下「Cloud Shell」圖示:

1dec6f9683153af0.png

佈建並連線至環境的作業只需幾分鐘的時間。完成後,您應該會看到類似下方的內容:

de496bb88f9a0b10.png

這部虛擬機器都裝載了您需要的所有開發工具。提供永久的 5 GB 主目錄,而且在 Google Cloud 中運作,大幅提高網路效能和驗證能力。這個研究室中的所有工作都可以透過瀏覽器完成。

事前準備

IAM 角色與存取權

以下是建立 Media CDN 和 Artifact Registry 資源所需的 Identity and Access Management (IAM) 權限:

  • roles/networkservices.edgeCacheAdmin
  • roles/networkservices.edgeCacheUser
  • roles/networkservices.edgeCacheViewer
  • roles/artifactregistry.repoAdmin

在 Cloud Shell 中,確認您已設定 project_idproject_numlocationrepository 環境變數。

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
PROJECT_ID=[YOUR-PROJECT-NAME]
PROJECT_NUM=[YOUR-PROJECT-NUMBER]
LOCATION=us-central1
REPOSITORY=service-extension-$PROJECT_ID

啟用 API

啟用 Media CDN 與透過下列指令使用 Service Extensions API

gcloud services enable networkservices.googleapis.com
gcloud services enable networkactions.googleapis.com
gcloud services enable edgecache.googleapis.com
gcloud services enable artifactregistry.googleapis.com

4. 建立 Cloud Storage 值區

Media CDN 內容可以源自 Cloud Storage 值區、第三方儲存空間位置,或任何可公開存取的 HTTP(HTTPS) 端點等位置。

在本程式碼研究室中,我們會將內容儲存在 Cloud Storage 值區中。

使用 gsutil mb 指令來建立值區

gsutil mb gs://mediacdn-bucket-$PROJECT_ID

或者,您也可以使用 GUI 建立 Cloud Storage 值區,如下所示:

  1. 前往 Google Cloud 控制台中的「Cloud Storage」頁面。
  2. 按一下「建立」按鈕。
  3. 輸入值區名稱。例如「mediacdn-bucket-$PROJECT_ID」。
  4. 其餘設定請保留預設值。
  5. 按一下「建立」按鈕。

50475e01c5a3adbe.png

5. 將測試物件上傳至 Cloud Storage 值區

現在我們要將物件上傳至 Cloud Storage 值區。

  1. 在 Cloud Shell 中建立檔案,然後使用 gsutil 將檔案上傳至值區
echo media-cdn-service-extensions-test > file.txt

gsutil cp file.txt gs://mediacdn-bucket-$PROJECT_ID
  1. 將值區的存取權授予 Media CDN
gsutil iam ch \
serviceAccount:service-$PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com:objectViewer gs://mediacdn-bucket-$PROJECT_ID

6. 設定 Media CDN

接下來,我們要建立 Media CDN 設定。

每項 Media CDN 設定都包含兩項主要資源:

  • EdgeCacheService,負責處理用戶端的設定 (TLS、IP 位址)、轉送、CDN 設定 (快取模式、存留時間、簽署) 和安全性政策。
  • EdgeCacheOrigin:負責對任何以 HTTP 為基礎的來源設定每個來源的設定,並且負責在沒有或可連線內容時重試條件。

設定邊緣快取來源

現在,我們要建立一個來源,指向您剛建立的 Cloud Storage 值區。

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。
  2. 按一下「來源」分頁標籤。
  3. 按一下「建立來源」
  4. 請輸入「cloud-storage-origin」做為邊緣快取來源的名稱
  5. 在來源位址下方:
  6. 選擇「選取 Google Cloud Storage 值區」
  7. 瀏覽到名為「mediacdn-bucket-$PROJECT_ID」的 Cloud Storage 值區。
  8. 按一下「選取」
  9. 其餘設定請保留預設值。
  10. 按一下「建立來源」

e6eb0faa94838c4.png

新建立的 EdgeCacheOrigin 資源會顯示在「來源」頁面專案的來源清單中。

設定邊緣快取服務

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。
  2. 按一下「SERVICES」(服務) 分頁標籤。
  3. 點選「建立服務」
  4. 為服務輸入專屬名稱,例如「media-cdn」,然後按一下「下一步」。

d2f9ac837bc5d45a.png

  1. 在「轉送」部分中,按一下 [新增主機規則]
  2. 輸入萬用字元 -「*」。

25d3e25000934e59.png

  1. 按一下「新增轉送規則」
  2. 將「Priority」(優先順序) 指定為「1」。
  3. 按一下「新增比對類型」,在「路徑比對」部分選取「前置字元比對」。做為比對類型,請指定「/」然後按一下 [完成]
  4. 選取「主要動作」下方的「從來源擷取」,然後在下拉式清單中選取您先前設定的來源。

d1975f366233521a.png

  1. 按一下「進階設定」即可展開更多設定選項。
  2. 在「路徑」動作中,按一下「新增項目」。接著,按照下列步驟操作:
  3. 在「類型」部分,選取「CDN 政策」。
  4. 在「快取模式」部分,選取「強制快取所有內容」。
  5. 其他設定則保留預設值
  6. 按一下 [完成]。
  7. 按一下 [儲存]

b7e77d059db84ab6.png

  1. 點選「建立服務」

新建立的 EdgeCacheService 資源會顯示在專案服務清單中的「服務」頁面上。

擷取 MediaCDN IP 位址和測試

  1. 前往 Google Cloud 控制台的「Media CDN」頁面。
  2. 前往 Media CDN
  3. 按一下 [服務] 分頁標籤。
  4. 查看「地址」欄。

4031b6d1eac89041.png

如要測試您的服務是否已正確設定快取內容,請使用 curl 指令列工具發出要求並檢查回應。

curl -svo /dev/null "http://MEDIA_CDN_IP_ADDRESS/file.txt"

這個指令應該會輸出如下的內容:

< HTTP/2 200 OK
...
media-cdn-service-extensions-test
...

現在,您已經使用 Cloud Storage 做為來源,成功建立 MediaCDN 部署作業。

7. 設定 Artifact Registry for Service Extensions

我們必須先設定 Artifact Registry,才能建立 Service Extensions。Artifact Registry 是 Google Cloud 的通用套件管理工具,用於管理建構構件。Service Extension (Proxy-Wasm) 外掛程式會發布至 Artifact Registry。發布至 Artifact Registry 後,即可將 Proxy-Wasm 外掛程式部署至 Media CDN 部署作業。

我們將使用 gcloudartifact repositories create 指令建立存放區

gcloud artifacts repositories create service-extension-$PROJECT_ID \
    --repository-format=docker \
    --location=$LOCATION \
    --description="Repo for Service Extension" \
    --async

或者,您也可以使用 GUI 建立存放區,如下所示:

  1. 前往 Google Cloud 控制台的「Artifact Registry」頁面。
  2. 按一下「+ 建立存放區」按鈕。
  3. 輸入存放區的名稱。例如「service-extension-$PROJECT_ID」。
  4. 格式 -「Docker」模式:「標準」、「位置類型」-「區域」,然後選擇「us-central1 (愛荷華州)」
  5. 按一下「建立」按鈕。

b525b3bc0867dc42.png

新建立的 Artifact Registry 存放區資源應會顯示在「存放區」頁面。

建立存放區資源後,請在 Cloud Shell 中執行下列指令,設定 Cloud Shell Docker 用戶端以透過這個存放區推送及提取套件。

gcloud auth configure-docker $LOCATION-docker.pkg.dev

輸出:

...
Adding credentials for: us-central1-docker.pkg.dev
Docker configuration file updated.

8. 在 Media CDN 上設定 Service Extensions

現在,我們會示範如何使用 Rust 程式設計語言編寫及建構服務擴充功能 (Proxy-Wasm) 外掛程式,以部署至 Media CDN。

在這個範例中,我們會建立 Proxy-Wasm 外掛程式,驗證每個 HTTP 要求是否含有包含「secret」值的 Authorization 標頭。如果要求不包含此標頭,外掛程式會產生「HTTP 403 禁止」回應。

快速複習 Service Extensions 這三項重要資源:WasmAction、WasmPlugin 和 WasmPluginVersion。

  • WasmAction 資源是附加至 Media CDN EdgeCacheService 的資源。WasmAction 參照 WasmPlugin 資源。
  • WasmPlugin 資源具有對應至目前使用中的 WasmPluginVersion 的主要版本。
  • WasmPluginVersions 參照 Artifact Registry 中的容器映像檔。變更 Proxy-wasm 外掛程式時,您會建立不同的 WasmPluginVersions。

請參考下圖,進一步瞭解這些資源之間的關係。

22b3548b3a61c379.png

編寫及建構 Service Extension 外掛程式

  1. 按照 https://www.rust-lang.org/tools/install 的操作說明安裝 Rust 工具鍊。
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
  1. 接下來,請執行下列指令,將 Wasm 支援新增至 Rust 工具鍊:
rustup target add wasm32-wasi
  1. 建立名為 my-wasm-plugin 的 Rust 套件:
cargo new --lib my-wasm-plugin

輸出:

Created library `my-wasm-plugin` package
  1. 輸入 my-wasm-plugin 目錄,您應該會看到 Cargo.toml 檔案和 src 目錄。
cd my-wasm-plugin
ls

輸出:

Cargo.toml  src
  1. 接下來,請編輯 Cargo.toml 檔案來設定 Rust 套件。在 Cargo.toml 檔案的 [dependencies] 行後方,新增以下內容:
proxy-wasm = "0.2"
log = "0.4"

[lib]
crate-type = ["cdylib"]

[profile.release]
lto = true
opt-level = 3
codegen-units = 1
panic = "abort"
strip = "debuginfo"
  1. 編輯完成後,Cargo.toml 檔案應大致如下所示:
[package]
name = "my-wasm-plugin"
version = "0.1.0"
edition = "2021"

[dependencies]
proxy-wasm = "0.2"
log = "0.4"

[lib]
crate-type = ["cdylib"]

[profile.release]
lto = true
opt-level = 3
codegen-units = 1
panic = "abort"
strip = "debuginfo"
  1. 。將 sample_code 檔案的完整內容複製到 Cloud Shell 中 src 目錄的 lib.rs 檔案中。
  1. 編輯完成後,lib.rs 檔案應大致如下所示:
use log::info;
use proxy_wasm::traits::*;
use proxy_wasm::types::*;

...

struct DemoPlugin;

impl HttpContext for DemoPlugin {
    fn on_http_request_headers(&mut self, _: usize, _: bool) -> Action {
        if self.get_http_request_header("Authorization") == Some(String::from("secret")) {
            info!("Access granted.");
            Action::Continue
        } else {
            self.send_http_response(403, vec![], Some(b"Access forbidden.\n"));
            Action::Pause
        }
    }
}

impl Context for DemoPlugin {}
  1. 我們已設定 Cargo.toml 資訊清單檔案,並在 lib.rs 檔案中編寫 Proxy-Wasm 程式碼,可以建構 Proxy-Wasm 外掛程式。
cargo build --release --target wasm32-wasi

建構成功完成後,您會看到如下訊息:

Finished release [optimized] target(s) in 1.01s

讓我們驗證 target 目錄,並檢查已建立的檔案:

ls ./target

輸出內容如下所示:

CACHEDIR.TAG release wasm32-wasi

將 Proxy-Wasm 外掛程式發布至 Artifact Registry

現在,我們會將 Proxy-Wasm 外掛程式發布至您之前建立的 Artifact Registry 存放區,以便部署至 Media CDN。

首先,我們會將 Proxy-Wasm 外掛程式封裝到容器映像檔中。

  1. 在同一個 my-wasm-plugin 目錄中建立名為 Dockerfile 的檔案,其中應包含下列內容:
FROM scratch 
COPY target/wasm32-wasi/release/my_wasm_plugin.wasm plugin.wasm
  1. 接著,建構容器映像檔:
docker build --no-cache --platform wasm -t my-wasm-plugin .

(僅限非 x86 處理器) 接著,建構容器映像檔:

docker build --no-cache --platform wasm --provenance=false -t my-wasm-plugin . 

輸出

[+] Building 0.2s (5/5) FINISHED                                     docker:default
...
  1. 接著,發布或「推送」將 Proxy-Wasm 外掛程式新增至 Artifact Registry我們要使用「prod」標記容器映像檔標記之前。
docker tag my-wasm-plugin $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod

現在,我們將標記「prod」複製到存放區

docker push $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod

輸出:

The push refers to repository 
...
8564ddd9910a: Pushed 
prod: digest: sha256:f3ae4e392eb45393bfd9c200cf8c0c261762f7f39dde5c7cd4b9a8951c6f2812 size: 525

現在,讓我們驗證 Proxy-Wasm 外掛程式的容器映像檔已成功推送至 Artifact Registry,輸出內容應如下所示:

gcloud artifacts docker images list $LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin --include-tags

輸出:

Listing items under project 
...
IMAGE                                         DIGEST           TAGS  CREATE_TIME          UPDATE_TIME
<LOCATION>-docker.pkg.dev/.../my-wasm-plugin  sha256:08c12...  prod  2021-11-10T23:31:27  2021-11-10T23:31:27

將 Proxy-Wasm 外掛程式與 Media CDN 部署作業建立關聯

我們準備將 Proxy-Wasm 外掛程式與您的 Media CDN 部署建立關聯。

Proxy-Wasm 外掛程式會與 EdgeCacheService 資源中的 Media CDN 路徑建立關聯。

  1. 首先,我們要為 Proxy-Wasm 外掛程式建立 Wasm-plugin 資源。
gcloud alpha service-extensions wasm-plugins create my-wasm-plugin-resource
  1. 接下來,請建立 WasmPluginVersion。
gcloud alpha service-extensions wasm-plugin-versions create my-version-1 \
    --wasm-plugin=my-wasm-plugin-resource \
    --image="$LOCATION-docker.pkg.dev/$PROJECT_ID/$REPOSITORY/my-wasm-plugin:prod"
  1. 接下來,我們要指定 Proxy-Wasm 外掛程式的主要版本。
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \
    --main-version=my-version-1

現在我們要驗證 Proxy-Wasm 外掛程式已成功與 Artifact Registry 存放區中的容器映像檔建立關聯,以下是類似的輸出內容:

gcloud alpha service-extensions wasm-plugin-versions list --wasm-plugin=my-wasm-plugin-resource

輸出:

NAME   WASM_IMAGE WASM_IMAGE_DIGEST CONFIG_SIZE  CONFIG_IMAGE CONFIG_IMAGE_DIGEST UPDATE_TIME                                            
c7cfa2 <LOCATION>-docker.pkg.dev/.../my-wasm-plugin@sha256:6d663... ... ... 
...
  1. 接下來,請建立參照 Wasm 外掛程式資源的 WasmAction 資源。
gcloud alpha service-extensions wasm-actions create my-wasm-action-resource \
    --wasm-plugin=my-wasm-plugin-resource

如果我們驗證 WasmAction 資源已成功與 Proxy-Wasm 外掛程式建立關聯,您應該會看到類似以下的輸出內容:

gcloud alpha service-extensions wasm-actions list

輸出:

NAME                                     WASMPLUGIN                                            
my-wasm-action-resource                  projects/805782461588/locations/global/wasmPlugins/myenvoyfilter-resource
...
  1. 現在,我們必須匯出 Media CDN EdgeCacheService 的設定:
gcloud edge-cache services export media-cdn --destination=my-service.yaml
  1. 接著,開啟 my-service.yaml 檔案,並將 wasmAction 新增至指定路徑的 routeAction 中,該路徑參照稍早建立的 WasmPlugin 資源。
wasmAction: "my-wasm-action-resource"
  1. 編輯之後,my-service.yaml 檔案應大致如下所示:
...

pathMatchers:
  - name: routes
    routeRules:
    - headerAction: {}
      matchRules:
      - prefixMatch: /
      origin: projects/<PROJECT_NUM>/locations/global/edgeCacheOrigins/cloud-storage-origin
      priority: '1'
      routeAction:
        cdnPolicy:
          cacheKeyPolicy: {}
          cacheMode: FORCE_CACHE_ALL
          defaultTtl: 3600s
          signedRequestMode: DISABLED
        wasmAction: "my-wasm-action-resource"
...
  1. 接著,透過 Proxy-Wasm 設定將更新過的設定儲存至 my-service-with-wasm.yaml 檔案。
  1. 最後,我們會匯入實際工作環境 Media CDN 環境的更新設定:
$ gcloud alpha edge-cache services import media-cdn --source=my-service-with-wasm.yaml

9. 驗證 Media CDN 上的 Service Extensions Proxy-Wasm 外掛程式

如要測試您的服務是否已正確設定快取內容,請使用 curl 指令列工具發出要求並檢查回應。

curl -svo /dev/null "http://IP_ADDRESS/file.txt"

這個指令應該會輸出如下的內容:

< HTTP/2 403 Forbidden
...
Access forbidden.
...

現在,以 Authorization 標頭及其 Secret 值再次發出要求

curl -svo /dev/null "http://IP_ADDRESS/file.txt" -H "Authorization: secret"

這個指令應該會輸出如下的內容:

< HTTP/2 200 OK
...
media-cdn-service-extensions-test
...

10. 選用:管理 Proxy-Wasm 外掛程式

更新 Proxy-Wasm 外掛程式

改善 Proxy-Wasm 外掛程式或新增功能時,您需要將更新後的外掛程式部署至 Media CDN。以下將逐步說明如何部署新版外掛程式。

例如,您可以修改程式碼範例,以更新範例外掛程式的程式碼,以評估 Authorization 標頭與其他值,以進行驗證。

首先,使用以下程式碼更新 src/lib.rs 來源檔案:

use log::{info, warn};
use proxy_wasm::traits::*;
use proxy_wasm::types::*;

...

struct DemoPlugin;

impl HttpContext for DemoPlugin {
    fn on_http_request_headers(&mut self, _: usize, _: bool) -> Action {
        if self.get_http_request_header("Authorization") == Some(String::from("another_secret")) {
            info!("Access granted.");
            Action::Continue
        } else {
            warn!("Access forbidden.");
            self.send_http_response(403, vec![], Some(b"Access forbidden.\n"));
            Action::Pause
        }
    }
}

impl Context for DemoPlugin {}

接著,建構、封裝及發布更新過的外掛程式:

cargo build --release --target wasm32-wasi
docker build --no-cache --platform wasm -t my-wasm-plugin .
docker tag my-wasm-plugin $LOCATION-docker.pkg.dev/$PROJECT_NUM/$REPOSITORY/my-wasm-plugin:prod
docker push $LOCATION-docker.pkg.dev/$PROJECT_NUM/$REPOSITORY>/my-wasm-plugin:prod

在 Artifact Registry 中更新容器映像檔後,我們必須建立新的 WasmPluginVersion,然後更新 WasmPlugin 的主要版本,以參照新版本。

gcloud alpha service-extensions wasm-plugin-versions create my-version-2 \
    --wasm-plugin=my-wasm-plugin-resource \
   --image="$LOCATION-docker.pkg.dev/$PROJECT_NUM/$REPOSITORY>/my-wasm-plugin:prod"
gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \
    --main-version=my-version-2

現在,您已成功更新要從 Artifact Registry 匯入並推送至 Media CDN 部署作業的容器映像檔版本。

復原至前一個版本

如要復原為舊版外掛程式,您可以更新 Wasm 外掛程式資源來參照先前的版本。

首先,我們會列出可用的版本:

gcloud alpha service-extensions wasm-plugin-versions list --wasm-plugin=my-wasm-plugin-resource

您應該會看到下列輸出內容:

NAME   WASM_IMAGE WASM_IMAGE_DIGEST CONFIG_SIZE  CONFIG_IMAGE CONFIG_IMAGE_DIGEST UPDATE_TIME                                            
c7cfa2 <LOCATION>-docker.pkg.dev/.../my-wasm-plugin@sha256:6d663... ... ... 
a2a8ce <LOCATION>-docker.pkg.dev/.../my-wasm-plugin@sha256:08c12... ... ... 

接著,我們會更新 Wasm 外掛程式資源,以參照前一個版本「a2a8ce」:

$ gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource \
    --main-version="a2a8ce"

作業成功後,您應該會看到以下輸出內容:

✓ WASM Plugin [my-wasm-plugin-resource] is now serving version "a2a8ce"

由於 Media CDN 會在每次建立新的 Wasm 外掛程式資源時,儲存 Docker 映像檔的映像檔摘要,因此復原作業會使用上次推出前執行的程式碼版本。

gcloud alpha service-extensions wasm-plugins describe my-wasm-plugin-resource \
  --expand-config

針對「a2a8ce」版本,也就是摘要含有 sha256:08c12 的版本...:

name: "my-wasm-plugin-resource"
mainVersion: "a2a8ce"
mainVersionDetails:
  image: "<LOCATION>-docker.pkg.dev/<PROJECT>/<REPOSITORY>/my-wasm-plugin"
  imageDigest: "<LOCATION>-docker.pkg.dev/<PROJECT>/<REPOSITORY>/my-wasm-plugin@sha256:08c121dd7fd1e4d3a116a28300e9fc1fa41b2e9775620ebf3d96cb7119bd9976"

刪除 WasmAction 及WasmPlugin

如要刪除 WasmAction、WasmPlugin 和相關 WasmPluginVersions,請按照下列步驟操作。

首先,請移除 Media CDN EdgeCacheService 設定中 WasmAction 的參照。

移除的參考檔案:

wasmAction: "my-wasm-action-resource"

接著,更新編輯後的 EdgeCacheService 設定。

gcloud alpha edge-cache services import prod-media-service --source=my-service.yaml

接著,將 WasmPlugin 的主要版本更新為空字串「"」。

gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource --main-version=
""

最後,請依序執行下列步驟。

gcloud alpha service-extensions wasm-actions delete my-wasm-action-resource

gcloud alpha service-extensions wasm-plugin-versions delete my-version \ --wasm-plugin=my-wasm-plugin-resource

gcloud alpha service-extensions wasm-plugins delete my-wasm-plugin-resource

11. 清除研究室環境

完成 CodeLab 後,別忘了清理研究室資源,否則這些資源會繼續運作並累積費用。

下列指令會刪除 Media CDN EdgeCache 服務、EdgeCache 設定和 Service Extensions 外掛程式。請依序執行下列刪除步驟。

gcloud edge-cache services delete media-cdn

gcloud edge-cache origins delete cloud-storage-origin

gcloud alpha service-extensions wasm-actions delete my-wasm-action-resource

gcloud alpha service-extensions wasm-plugins update my-wasm-plugin-resource --main-version=""

gcloud alpha service-extensions wasm-plugin-versions delete my-version-1 --wasm-plugin=my-wasm-plugin-resource

gcloud alpha service-extensions wasm-plugins delete my-wasm-plugin-resource

gcloud artifacts repositories delete service-extension-$PROJECT_ID --location=$LOCATION

上述每個指令都會要求您確認是否要刪除資源。

12. 恭喜!

恭喜,您已完成 Media CDN 中的 Service Extensions 程式碼研究室!

涵蓋內容

  • 如何將 Media CDN 設為「來源」的 Cloud Storage 值區
  • 如何透過自訂 HTTP 驗證建立 Service Extension 外掛程式,並將其與 Media CDN 建立關聯
  • 如何驗證 Service Extension 外掛程式是否正常運作
  • (選用) 如何管理 Service Extension 外掛程式,例如更新、參照、復原及刪除特定外掛程式版本

後續步驟

查看一些程式碼研究室…

其他資訊

參考文件