Media CDN menawarkan pengiriman konten, cache off-load, perlindungan origin, otorisasi permintaan, dan integrasi dengan platform Load Balancer Aplikasi, Logging, dan Monitoring eksternal Google Cloud.
Media CDN menyediakan beberapa resource REST API:
EdgeCacheService
, yang bertanggung jawab atas konfigurasi untuk klien (TLS, penentuan alamat IP), perutean, konfigurasi CDN (mode cache, TTL, penandatanganan), dan kebijakan keamanan.EdgeCacheOrigin
, yang bertanggung jawab atas konfigurasi per origin untuk origin berbasis HTTP, serta kondisi percobaan ulang saat konten tidak tersedia atau tidak dapat dijangkau. Misalnya, sebagai bagian dari konfigurasi pemaket video redundan.- (Opsional)
EdgeCacheKeyset
, yang berisi kumpulan kunci publik yang digunakan untuk memvalidasi bahwa permintaan klien ditandatangani oleh infrastruktur / CMS Anda.EdgeCacheKeysets
dikaitkan denganEdgeCacheService
, dan dapat digunakan di beberapa layanan.
Resource ini ditunjukkan dalam contoh berikut, yang menunjukkan
EdgeCacheService
penghentian traffic, dan perutean ke
EdgeCacheOrigins
yang berbeda.
EdgeCacheService
yang menghentikan traffic, memeriksa permintaan bertanda tangan 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 bawaan berikut:
roles/networkservices.edgeCacheAdmin
roles/networkservices.edgeCacheUser
roles/networkservices.edgeCacheViewer
Aktifkan layanan yang diperlukan
Untuk mengonfigurasi dan men-deploy layanan Media CDN, Anda harus mengaktifkan Network Services API dan Certificate Manager API untuk project Anda.
Konsol
Mengaktifkan Network Services API.
Mengaktifkan Certificate Manager API.
gcloud
Aktifkan Network Services API:
gcloud services enable networkservices.googleapis.com
Aktifkan Certificate Manager API:
gcloud services enable certificatemanager.googleapis.com
Untuk mengetahui informasi lebih lanjut tentang cara mengaktifkan dan menonaktifkan layanan, lihat dokumentasi Penggunaan Layanan.
Contoh konfigurasi
Daftar resource berikut menjelaskan konfigurasi Media CDN yang representatif:
EdgeCacheOrigin
:- Origin berbasis Cloud Storage yang mencoba kembali pengambilan cache terhadap 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 mempertahankan dua kunci dalam produksi.
Satu
EdgeCacheService
dengan dua rute, termasuk:- Rute untuk manifes, yang terkait dengan asal Cloud Storage, dengan TTL cache singkat.
- Rute untuk segmen video, yang dilindungi oleh permintaan yang ditandatangani, dan terkait dengan asal Cloud Storage, yang dikonfigurasi untuk menyimpan semua respons ke dalam cache.
IPv4, IPv6, logging diaktifkan (default), dan sertifikat SSL terkelola yang 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:
- Konsol Google Cloud
- File YAML atau JSON yang diimpor
- API secara langsung
Menggunakan konsol Google Cloud
Untuk petunjuk yang menjelaskan cara mengonfigurasi Media CDN di Konsol Google Cloud, lihat quickstart.
Mengimpor dan mengekspor konfigurasi
gcloud CLI memungkinkan Anda mengekspor dan mengimpor konfigurasi dari file YAML atau JSON, yang memungkinkan integrasi dengan sistem continuous delivery, atau dengan menggunakan alat infrastructure-as-code. Anda dapat menduplikasi konfigurasi, menguji layanan yang terisolasi di lingkungan staging sebelum mengupdate lingkungan production, dan konfigurasi snapshot ke kontrol versi.
Kolom output saja tidak diimpor, dan secara implisit dikecualikan saat mengimpor konfigurasi. Secara khusus:
- Alamat IP tidak diimpor, karena dikhususkan untuk setiap layanan. Layanan tidak dapat berbagi alamat IP.
selfLink
resource, yang didasarkan pada nama resource.id
resource, 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 (baik berhasil maupun gagal). Secara default, REST API asinkron.
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 error-nya.
Anda memeriksa setiap operasi (berdasarkan ID-nya) untuk memahami error secara mendetail. Misalnya, jika Anda mengonfigurasi logConfig.sampleRate
tanpa
menetapkan logConfig.enable = true
juga, error berikut mungkin
akan 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