Media CDN menawarkan pengiriman konten, pengalihan cache, perlindungan server asal, otorisasi permintaan, dan integrasi dengan Google Cloud Load Balancer Aplikasi eksternal, platform Logging, dan Monitoring.
Media CDN menyediakan beberapa resource REST API:
EdgeCacheService, yang bertanggung jawab atas konfigurasi yang terlihat oleh klien (TLS, pengalamatan IP), perutean, konfigurasi CDN (mode cache, TTL, penandatanganan), dan kebijakan keamanan.EdgeCacheOrigin, yang bertanggung jawab atas konfigurasi per-server asal untuk server asal berbasis HTTP, serta kondisi percobaan ulang saat konten tidak tersedia atau tidak dapat dijangkau. Misalnya, sebagai bagian dari konfigurasi pengemasan video redundan.- (Opsional)
EdgeCacheKeyset, yang berisi sekumpulan kunci publik yang digunakan untuk memvalidasi bahwa permintaan klien ditandatangani oleh infrastruktur / CMS Anda.EdgeCacheKeysetsdikaitkan denganEdgeCacheService, dan dapat digunakan di beberapa layanan.
Resource ini direpresentasikan dalam contoh berikut, yang menunjukkan EdgeCacheService menghentikan traffic, dan merutekan ke EdgeCacheOrigins yang berbeda.
EdgeCacheService
yang menghentikan traffic, memeriksa permintaan yang ditandatangani dengan
EdgeCacheKeyset opsional, dan merutekan permintaan ke tiga
EdgeCacheOrigins yang berbeda.Izin
Anda harus memiliki izin Identity and Access Management yang diperlukan untuk membuat resource Media CDN. Media CDN memiliki peran IAM yang telah ditetapkan berikut:
roles/networkservices.edgeCacheAdminroles/networkservices.edgeCacheUserroles/networkservices.edgeCacheViewer
Mengaktifkan layanan yang diperlukan
Untuk mengonfigurasi dan men-deploy layanan Media CDN, Anda harus mengaktifkan baik Network Services API maupun Certificate Manager API untuk project Anda.
Konsol
Aktifkan Network Services API.
Aktifkan Certificate Manager API.
gcloud
Aktifkan Network Services API:
gcloud services enable networkservices.googleapis.comAktifkan Certificate Manager API:
gcloud services enable certificatemanager.googleapis.com
Untuk mengetahui informasi selengkapnya tentang cara mengaktifkan dan menonaktifkan layanan, lihat dokumentasi Service Usage.
Contoh konfigurasi
Daftar resource berikut menjelaskan konfigurasi Media CDN representatif:
An
EdgeCacheOrigin:- Server asal berbasis Cloud Storage yang mencoba kembali pengambilan cache terhadap server asal alternatif (AWS S3) jika objek tidak ada di Cloud Storage (misalnya, HTTP 404) atau terjadi error 5xx.
Satu
EdgeCacheKeyset, yang berisi:- Dua kunci publik Ed25519, yang digunakan untuk memvalidasi permintaan yang ditandatangani.
- Dalam contoh konfigurasi, Anda dapat merotasi kunci setiap bulan, dengan menyimpan dua kunci dalam produksi.
Satu
EdgeCacheServicedengan dua rute, termasuk:- Rute untuk manifes, yang terkait dengan server asal Cloud Storage, dengan TTL cache singkat.
- Rute untuk segmen video, yang dilindungi oleh permintaan yang ditandatangani, dan terkait dengan server asal Cloud Storage, yang dikonfigurasi untuk menyimpan cache semua respons.
IPv4, IPv6, logging diaktifkan (default), dan sertifikat SSL terkelola dikonfigurasi
Contoh berikut menunjukkan output gcloud untuk konfigurasi ini:
gcloud edge-cache origins describe prod-media-origin
id: "2295067926314745283" creationTimestamp: "2019-11-13T09:53:48.757-08:00" name: "prod-media-origin" description: "" originAddress: "gs://bucket_name/" failoverOrigin: "s3-origin" retryConditions: [HTTP_5XX, NOT_FOUND] originProtocol: HTTP2 timeouts: connectTimeout: 5s maxAttemptsTimeout: 10 responseTimeout: 6s
id: "2295067926314745283" creationTimestamp: "2019-11-13T09:53:48.757-08:00" name: "s3-origin" description: "" originAddress: "media.example.com.s3.amazonaws.com" retryConditions: [HTTP_5XX, NOT_FOUND] originProtocol: HTTP2
gcloud edge-cache keysets describe prod-keyset
id: "2295067926314745283"
creationTimestamp: "2019-11-13T09:53:48.757-08:00"
name: "prod-keyset"
publicKeys:
- name: "sept-2020-key"
value: "DThVLjhAKm3VYOvLBAwFZ5XbjVyF98Ias8NZU0WEM9w="
- name: "aug-2020-key"
value: "3nQa82ScYgDDAxJrKCqumSEg60VNODGR5dGAveJWsw4="
gcloud edge-cache services describe prod-media-service
name: "prod-media-service"
edgeSslCertificates:
- "media-example-com-cert"
- "video-serving-example-com-cert"
requireTls: true
routing:
hostRules:
- description: "prod hostnames"
hosts:
- "media.example.com"
- "video-serving.example.net"
pathMatcher: "routes"
pathMatchers:
- name: "routes"
routeRules:
- priority: 1
description: "prod video segments"
origin: "prod-media-origin"
matchRules:
- pathTemplateMatch: "/**.ts" # HLS segments
- pathTemplateMatch: "/**.m4s" # DASH / CMAF segments
routeAction:
cdnPolicy:
cacheMode: "FORCE_CACHE_ALL"
clientTtl: 3600s
defaultTtl: 86400s
signedRequestMode: REQUIRE_SIGNATURES
signedRequestKeySet: "prod-keyset"
headerAction:
responseHeadersToAdd:
- headerName: cache-status
headerValue: "{cdn_cache_status}"
- headerName: proxy-status
headerValue: "{proxy_status}"
- priority: 2
description: "prod manifest endpoints"
origin: "prod-media-origin"
matchRules:
- pathTemplateMatch: "/**.m3u8" # HLS playlists
- pathTemplateMatch: "/**.mpd" # DASH manifests
routeAction:
urlRewrite:
pathPrefixRewrite: "/output/manifests"
cdnPolicy:
cacheMode: "CACHE_ALL_STATIC"
clientTtl: 10s
defaultTtl: 30s
maxTtl: 120s
headerAction:
responseHeadersToAdd:
- headerName: cache-status
headerValue: "{cdn_cache_status}"
- headerName: proxy-status
headerValue: "{proxy_status}"
- priority: 3 # catch all routes should be the lowest priority route
description: "catch all route"
origin: "prod-media-origin"
matchRules:
- prefixMatch: /
headerAction:
responseHeadersToAdd:
- headerName: cache-status
headerValue: "{cdn_cache_status}"
- headerName: proxy-status
headerValue: "{proxy_status}"
Opsi konfigurasi untuk Media CDN
Untuk mengonfigurasi Media CDN, Anda dapat menggunakan alat berikut:
- Google Cloud Konsol
- File YAML atau JSON yang diimpor
- API secara langsung
Menggunakan Google Cloud konsol
Untuk mengetahui petunjuk yang menjelaskan cara mengonfigurasi Media CDN di Google Cloud konsol, lihat panduan memulai.
Mengimpor dan mengekspor konfigurasi
Google Cloud CLI memungkinkan Anda mengekspor dan mengimpor konfigurasi dari file YAML atau JSON, sehingga memungkinkan integrasi dengan sistem pengiriman berkelanjutan atau menggunakan alat infrastruktur sebagai kode. Anda dapat menduplikasi konfigurasi, menguji layanan terisolasi di lingkungan staging sebelum memperbarui lingkungan produksi, dan membuat snapshot konfigurasi ke dalam kontrol versi.
Kolom output saja tidak diimpor, dan secara implisit dikecualikan saat mengimpor konfigurasi. Secara khusus:
- Alamat IP tidak diimpor, karena didedikasikan untuk setiap layanan. Layanan tidak dapat berbagi alamat IP.
selfLinkresource, yang didasarkan pada nama resource.idresource, yang dibuat secara otomatis.
Untuk mengekspor layanan, EdgeCacheOrigin, atau EdgeCacheKeyset, gunakan sub-perintah export untuk setiap resource. Misalnya, untuk mengekspor konfigurasi layanan:
gcloud edge-cache services export SERVICE_NAME \
--destination=my-service.yaml
Exported [projects/my-project/locations/global/edgeCacheServices/SERVICE_NAME] to 'my-service.yaml'.
Demikian pula, Anda dapat mengimpor konfigurasi layanan yang ada, baik sebagai layanan baru atau sebagai update di tempat untuk layanan yang ada:
gcloud edge-cache services import new-staging-service \
--source=my-service.yaml
Menggunakan operasi API asinkron
Secara default, perintah gcloud yang membuat, memperbarui, atau menghapus resource akan memblokir, dan hanya ditampilkan setelah tugas selesai (untuk keberhasilan dan kegagalan). REST API bersifat asinkron secara default.
Dalam beberapa kasus, Anda mungkin ingin membuat permintaan ini secara asinkron. Anda dapat memberikan flag --async, yang menyebabkan perintah segera ditampilkan dengan ID operasi. Anda dapat menggunakan ID ini untuk memeriksa dan melakukan polling guna mengonfirmasi apakah tugas berhasil, apakah tugas menampilkan error, dan apa pesan errornya.
Anda dapat memeriksa operasi satu per satu (berdasarkan ID-nya) untuk memahami error secara mendetail. Misalnya, jika Anda mengonfigurasi logConfig.sampleRate tanpa menetapkan logConfig.enable = true, Anda dapat mengharapkan error berikut ditampilkan:
gcloud edge-cache operations describe operation-1611525680496-5b9ac8fbb7f58-90a7a822-f0c1e8c6
done: true error: message: "Logs sample rate must not be specified without enabling logging." name: projects/my-project/locations/global/operations/operation-1611525680496-5b9ac8fbb7f58-90a7a822-f0c1e8c6
Untuk melihat semua operasi terbaru, status, dan penyelesaiannya, Anda dapat menjalankan perintah berikut:
gcloud edge-cache operations list
END_TIME ID TARGET DONE
operation-1611095421009-5b9486244bf21-cc6b5924-628b8e2a True
operation-1611096056610-5b94888273fe6-2da85286-8c810f8e True
operation-1611095551517-5b9486a0c251e-c2e1bbbb-de4aa8a5 True