1. Введение
Последнее обновление: 01.05.2024
Сети доставки контента (CDN) повышают производительность для пользователей за счет кэширования часто используемого контента ближе к конечным пользователям, завершения соединений ближе к клиентам, повторного использования соединений с источником, а также за счет внедрения современных сетевых протоколов и пользовательских настроек.
Media CDN, глобальная периферийная сеть GCP для потоковой передачи мультимедиа, предоставляет множество встроенных или «базовых» возможностей. Эти базовые возможности предназначены для решения наиболее распространенных задач, но у вас могут быть и другие требования, которые не охватываются этим набором основных функций.
Расширения сервисов для Media CDN, иногда также называемые программируемостью на периферии сети, позволяют запускать собственный код на периферии сети для настройки поведения Media CDN. Это открывает дополнительные возможности, такие как нормализация ключа кэша, пользовательская аутентификация и отзыв токенов, дополнительные пользовательские поля журналов, A/B-тестирование и пользовательская страница ошибки.
Что вы построите
В этом практическом занятии мы рассмотрим шаги по развертыванию среды доставки CDN с поддержкой граничных вычислений (Edge Compute), включающей Media CDN (CDN) + Service Extensions (программируемость на граничных вычислениях) + Cloud Storage (источник CDN).

Что вы узнаете
- Как настроить CDN для медиаконтента с использованием облачного хранилища в качестве источника.
- Как создать плагин расширения сервиса с пользовательской HTTP-аутентификацией и связать его с Media CDN
- Как проверить, что плагин расширения сервиса работает должным образом?
- (необязательно) Как управлять плагином расширения сервиса, например, обновлять, ссылаться на него, откатывать изменения и удалять определенную версию плагина.
Что вам понадобится
- Базовые знания сетевых технологий и протокола HTTP.
- Базовые знания командной строки Unix/Linux.
2. Прежде чем начать
Запрос на добавление в список разрешенных CDN-серверов для медиаконтента и расширений сервисов.
Прежде чем начать, необходимо убедиться, что ваш проект добавлен в список разрешенных для частного предварительного просмотра сервисов Media CDN и Service Extensions for Media CDN.
- Чтобы запросить доступ к Media CDN и расширениям сервисов для Media CDN, свяжитесь со своей командой Google Account Team, чтобы они создали запрос на доступ от вашего имени к Media CDN и расширениям сервисов.
3. Настройка и требования
Запустить Cloud Shell
Хотя Google Cloud можно управлять удаленно с ноутбука, в этом практическом занятии вы будете использовать Google Cloud Shell — среду командной строки, работающую в облаке.
В консоли GCP щелкните значок Cloud Shell на панели инструментов в правом верхнем углу:

Подготовка и подключение к среде займут всего несколько минут. После завершения вы должны увидеть примерно следующее:

Эта виртуальная машина оснащена всеми необходимыми инструментами разработки. Она предоставляет постоянный домашний каталог размером 5 ГБ и работает в облаке Google, что значительно повышает производительность сети и аутентификацию. Всю работу в этой лаборатории можно выполнять с помощью обычного браузера.
Прежде чем начать
Роли и доступ IAM
Для создания ресурсов Media CDN и Artifact Registry требуются следующие разрешения в рамках системы управления идентификацией и доступом (IAM):
- roles/networkservices.edgeCacheAdmin
- roles/networkservices.edgeCacheUser
- roles/networkservices.edgeCacheViewer
- roles/artifactregistry.repoAdmin
Внутри Cloud Shell убедитесь, что настроены переменные среды project_id , project_num , location и repository .
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
Включите API Media CDN и расширений служб с помощью команд, приведенных ниже.
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. Создайте сегмент облачного хранилища.
Контент, распространяемый через CDN-сети для мультимедиа, может поступать из таких мест, как хранилище Cloud Storage, сторонние хранилища или любые общедоступные HTTP-терминалы (HTTPS).
В этом практическом задании мы будем хранить контент в хранилище Cloud Storage.
Для создания корзины мы воспользуемся командой gsutil mb.
gsutil mb gs://mediacdn-bucket-$PROJECT_ID
При желании вы можете создать сегмент облачного хранилища, используя графический интерфейс пользователя, следующим образом:
- В консоли Google Cloud перейдите на страницу «Облачное хранилище» .
- Нажмите кнопку СОЗДАТЬ .
- Введите имя для корзины. Например: "mediacdn-bucket-$PROJECT_ID".
- Остальные настройки оставьте по умолчанию.
- Нажмите кнопку СОЗДАТЬ .

5. Загрузите тестовый объект в хранилище Cloud Storage.
Теперь мы загрузим объект в хранилище Cloud Storage.
- Создайте файл в CloudShell, а затем загрузите его в хранилище с помощью gsutil.
echo media-cdn-service-extensions-test > file.txt gsutil cp file.txt gs://mediacdn-bucket-$PROJECT_ID
- Grant Media предоставляет доступ к CDN-хранилищу.
gsutil iam ch \ serviceAccount:service-$PROJECT_NUM@gcp-sa-mediaedgefill.iam.gserviceaccount.com:objectViewer gs://mediacdn-bucket-$PROJECT_ID
6. Настройка CDN для медиаконтента
Далее мы создадим конфигурацию CDN для медиаконтента.
Каждая конфигурация CDN для медиаконтента состоит из двух основных ресурсов:
- EdgeCacheService отвечает за конфигурацию, доступную для клиентов (TLS, IP-адресация), маршрутизацию, конфигурацию CDN (режимы кэширования, TTL, подпись) и политики безопасности.
- EdgeCacheOrigin отвечает за настройку параметров для каждого источника HTTP, а также за условия повторной попытки, когда контент недоступен или не работает.
Настройка источника кэширования Edge
Теперь давайте создадим источник, указывающий на только что созданный вами сегмент Cloud Storage.
- В консоли Google Cloud перейдите на страницу Media CDN .
- Нажмите вкладку «ПРОИСХОЖДЕНИЕ» .
- Нажмите «СОЗДАТЬ ИСТОЧНИК» .
- Введите 'cloud-storage-origin' в качестве имени для источника кэша на границе сети.
- В исходном адресе:
- Выберите «Выберите сегмент Google Cloud Storage».
- Перейдите к сегменту облачного хранилища с именем 'mediacdn-bucket-$PROJECT_ID'.
- Нажмите ВЫБРАТЬ.
- Остальные настройки оставьте по умолчанию.
- Нажмите «СОЗДАТЬ ИСТОЧНИК» .

Вновь созданный ресурс EdgeCacheOrigin отображается в списке источников вашего проекта на странице «Источники».
Настройка службы кэширования Edge
- В консоли Google Cloud перейдите на страницу Media CDN .
- Нажмите вкладку «УСЛУГИ» .
- Нажмите «СОЗДАТЬ СЕРВИС» .
- Введите уникальное имя для вашей службы, например, «media-cdn», а затем нажмите «Далее».

- В разделе «Маршрутизация» нажмите «Добавить правило хоста» .
- В поле Hosts введите символ подстановки "*".

- Нажмите «ДОБАВИТЬ ПРАВИЛО МАРШРУТА» .
- Для параметра «Приоритет» укажите «1».
- Нажмите «ДОБАВИТЬ УСЛОВИЕ СООТВЕТСТВИЯ» , для параметра «Соответствие по пути» выберите тип соответствия «Соответствие по префиксу», укажите «/» в поле «Соответствие по пути», а затем нажмите «Готово».
- В разделе «Основное действие» выберите «Получить данные из источника» , а затем в раскрывающемся списке выберите указанный вами источник.

- Нажмите «РАСШИРЕННЫЕ НАСТРОЙКИ» , чтобы открыть дополнительные параметры конфигурации.
- В разделе «Действия с маршрутом» нажмите «ДОБАВИТЬ ЭЛЕМЕНТ» . Затем выполните следующие действия:
- В поле «Тип» выберите «Политика CDN».
- Для режима кэширования выберите "Принудительно кэшировать все".
- Остальные параметры оставьте по умолчанию.
- Нажмите «Готово».
- Нажмите « Сохранить ».

- Нажмите «СОЗДАТЬ СЕРВИС» .
Вновь созданный ресурс EdgeCacheService отображается на странице «Сервисы» в списке сервисов вашего проекта.
Получите IP-адрес MediaCDN и проведите тестирование.
- В консоли Google Cloud перейдите на страницу Media CDN .
- Перейти на Media CDN
- Перейдите во вкладку «Услуги» .
- Информацию о вашей услуге см. в столбце «Адреса» .

Чтобы проверить правильность настройки кэширования контента в вашем сервисе, используйте инструмент командной строки curl для отправки запросов и проверки ответов.
curl -svo /dev/null "http://MEDIA_CDN_IP_ADDRESS/file.txt"
Результат выполнения команды должен выглядеть примерно так:
< HTTP/2 200 OK ... media-cdn-service-extensions-test ...
Теперь вы успешно создали развертывание MediaCDN с Cloud Storage в качестве источника.
7. Настройка реестра артефактов для расширений служб.
Перед созданием расширений сервисов необходимо настроить реестр артефактов. Реестр артефактов — это универсальный менеджер пакетов Google Cloud для управления артефактами сборки. Плагины расширений сервисов (Proxy-Wasm) публикуются в реестре артефактов. После публикации в реестре артефактов плагины Proxy-Wasm можно развернуть в вашей сети CDN для медиаконтента.
Для создания репозитория мы воспользуемся командой ` gcloud artifacts repositories create`.
gcloud artifacts repositories create service-extension-$PROJECT_ID \
--repository-format=docker \
--location=$LOCATION \
--description="Repo for Service Extension" \
--async
При желании вы можете создать репозиторий с помощью графического интерфейса следующим образом:
- В консоли Google Cloud перейдите на страницу «Реестр артефактов» .
- Нажмите кнопку + СОЗДАТЬ РЕПОЗИТОРИЙ .
- Введите имя для репозитория, например, 'service-extension-$PROJECT_ID'.
- Формат - 'Docker', режим - 'Стандартный', тип местоположения - 'Регион', и выберите 'us-central1 (Айова)'.
- Нажмите кнопку СОЗДАТЬ .

Вновь созданный ресурс «Репозиторий реестра артефактов» должен отобразиться на странице «Репозитории».
После создания ресурса «Репозиторий» выполните следующую команду в Cloud Shell, чтобы настроить клиент Docker в Cloud Shell для отправки и получения пакетов из этого репозитория.
gcloud auth configure-docker $LOCATION-docker.pkg.dev
Выход:
... Adding credentials for: us-central1-docker.pkg.dev Docker configuration file updated.
8. Настройка расширений служб на CDN для медиаконтента
Теперь мы продемонстрируем, как написать и создать плагин расширения сервиса (Proxy-Wasm), который можно развернуть в Media CDN, используя язык программирования Rust .
В этом примере мы создадим плагин Proxy-Wasm, который проверяет, содержит ли каждый HTTP-запрос заголовок Authorization со значением "secret". Если запрос не содержит этот заголовок, плагин сгенерирует ответ HTTP 403 Forbidden.
Краткое напоминание о расширениях сервисов: существует три ключевых ресурса: WasmAction, WasmPlugin и WasmPluginVersion.
- Ресурс WasmAction — это то, что подключается к вашему CDN-серверу Media EdgeCacheService. WasmAction ссылается на ресурс WasmPlugin.
- Ресурс WasmPlugin имеет параметр main-version, который соответствует текущей активной версии WasmPluginVersion.
- Объект WasmPluginVersions ссылается на образ контейнера из реестра артефактов. При внесении изменений в плагины proxy-wasm создаются разные объекты WasmPluginVersions.
Для лучшего понимания взаимосвязи между этими ресурсами, пожалуйста, обратитесь к приведенной ниже диаграмме.

Написать и разработать плагин расширения сервиса.
- Установите набор инструментов Rust, следуя инструкциям по адресу https://www.rust-lang.org/tools/install .
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
- Далее добавьте поддержку Wasm в свой набор инструментов Rust, выполнив следующую команду:
rustup target add wasm32-wasi
- Создайте пакет Rust с именем my-wasm-plugin :
cargo new --lib my-wasm-plugin
Выход:
Created library `my-wasm-plugin` package
- Перейдите в каталог my-wasm-plugin , и вы увидите файл
Cargo.tomlи каталогsrc.
cd my-wasm-plugin ls
Выход:
Cargo.toml src
- Далее настройте свой пакет Rust, отредактировав файл
Cargo.toml. После строки[dependencies]в файле Cargo.toml добавьте следующее:
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"
- После внесения изменений файл
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"
- После внесения изменений файл
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 {}
- Теперь, когда мы настроили файл манифеста
Cargo.tomlи написали код Proxy-Wasm в файлеlib.rs, мы можем собрать наш плагин 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 в реестре артефактов.
Теперь мы опубликуем наш плагин Proxy-Wasm в созданном вами ранее репозитории Artifact Registry, чтобы его можно было развернуть в Media CDN.
Сначала мы упаковываем плагины Proxy-Wasm в образ контейнера.
- Создайте в той же директории файл
Dockerfileсо следующим содержимым:
FROM scratch
COPY target/wasm32-wasi/release/my_wasm_plugin.wasm plugin.wasm
- Далее, соберите образ контейнера:
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 ...
- Далее опубликуйте или "отправьте" свой плагин Proxy-Wasm в реестр артефактов. Мы пометим образ контейнера тегом '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 был загружен в реестр артефактов. Вы должны увидеть аналогичный вывод:
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 с вашей сетью CDN для медиаконтента.
Плагины Proxy-Wasm связаны с маршрутами Media CDN в ресурсе EdgeCacheService.
- Сначала мы создаём ресурс Wasm-plugin для нашего плагина Proxy-Wasm.
gcloud alpha service-extensions wasm-plugins create my-wasm-plugin-resource
- Далее мы создаём объект 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"
- Далее мы указываем основную версию нашего плагина 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... ... ... ...
- Далее мы создаём ресурс WasmAction, ссылающийся на ресурс нашего плагина Wasm.
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 ...
- Теперь нам нужно экспортировать конфигурацию нашего CDN-сервера Media EdgeCacheService:
gcloud edge-cache services export media-cdn --destination=my-service.yaml
- Затем откройте файл my-service.yaml и добавьте wasmAction к routeAction для указанного маршрута, который будет ссылаться на ресурс WasmPlugin, созданный ранее.
wasmAction: "my-wasm-action-resource"
- После внесения изменений файл 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"
...
- Затем мы сохраняем обновленную конфигурацию с настройками Proxy-Wasm в файл
my-service-with-wasm.yaml.
- Наконец, мы импортируем обновленную конфигурацию для производственной среды Media CDN:
$ gcloud alpha edge-cache services import media-cdn --source=my-service-with-wasm.yaml
9. Проверка плагина Service Extensions Proxy-Wasm на Media CDN.
Чтобы проверить правильность настройки кэширования контента в вашем сервисе, используйте инструмент командной строки 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
После обновления образа контейнера в реестре артефактов необходимо создать новую версию WasmPluginVersion, а затем обновить параметр –main-version плагина 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 и загрузили его в свою сеть 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 сохраняет дайджест образа вашего Docker-образа каждый раз, когда создается новый ресурс Wasm-plugin, при откате будет использоваться версия вашего кода, которая работала до последнего развертывания.
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, выполните следующие действия.
Во-первых, удалите ссылку на WasmAction в конфигурации CDN Media EdgeCacheService.
Строка ссылки, которую необходимо удалить :
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 и плагин расширений службы. Выполните указанные ниже шаги удаления в указанном порядке.
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!
Что мы рассмотрели
- Как настроить CDN для медиаконтента с использованием облачного хранилища в качестве источника.
- Как создать плагин расширения сервиса с пользовательской HTTP-аутентификацией и связать его с Media CDN
- Как проверить, что плагин расширения сервиса работает должным образом?
- (необязательно) Как управлять плагином расширения сервиса, например, обновлять, ссылаться на него, откатывать изменения и удалять определенную версию плагина.
Что дальше?
Посмотрите некоторые из этих практических занятий по программированию...
Дополнительная информация
- Загрузка высокоэффективных работников сферы услуг
- Стратегии кэширования Service Worker в зависимости от типов запросов