本快速入門導覽課程說明如何在 Cloud Storage bucket 前方設定 Media CDN 服務。您可以將這項設定用於測試,或做為正式版環境的基礎。
如要直接在 Google Cloud 控制台按照逐步指南操作,請按一下「Guide me」(逐步引導):
本頁面將逐步說明下列程序:
- 建立 Cloud Storage bucket 來儲存內容。
- 啟用必要服務。
- 建立
EdgeCacheOrigin
資源,將 Media CDN 連結至 bucket。 - 建立
EdgeCacheService
資源,設定來源中內容的要求路徑和快取。 - 測試是否已快取回應。
事前準備
請確認您已備妥以下項目:
目前專案的 Media CDN 存取權。
已安裝 Google Cloud CLI。使用 345.0.0 以上版本。
如有需要,請使用
gcloud version
檢查版本,並使用gcloud components update
更新已安裝的 gcloud CLI。gcloud CLI 提供
gcloud edge-cache
子指令群組,可管理新舊 Media CDN 設定。建立 Media CDN 資源所需的身分與存取權管理 (IAM) 權限。
建立 Cloud Storage 值區
Media CDN 內容可產生自 Cloud Storage 值區、第三方儲存空間位置或負載平衡器等位置。
在本快速入門導覽課程中,我們會將內容儲存在 Cloud Storage 值區中。
建立可公開存取的 Cloud Storage bucket,並命名為
my-bucket
。如果您不想讓 Cloud Storage bucket 可公開存取,就必須授予 Media CDN 存取 bucket 的權限。詳情請參閱「使用私有 Cloud Storage 值區」。
將檔案上傳至 bucket。
啟用必要服務
如要設定及部署 Media CDN 服務,您需要為專案啟用 Network Services API 和 Certificate Manager API。
控制台
gcloud
啟用 Network Services API:
gcloud services enable networkservices.googleapis.com
啟用 Certificate Manager API:
gcloud services enable certificatemanager.googleapis.com
如要進一步瞭解如何啟用及停用服務,請參閱服務使用情形說明文件。
建立 EdgeCacheOrigin
資源
建立指向 Cloud Storage bucket 的來源。
主控台
前往 Google Cloud 控制台的「Media CDN」頁面。
按一下「來源」Origins分頁標籤。
按一下「Create origin」(建立來源)。
輸入來源名稱,例如
cloud-storage-origin
。選用:輸入來源說明。
針對「Origin address」(來源位址),選擇「Select a Google Cloud Storage bucket」(選取 Google Cloud Storage 值區),再前往名為
my-bucket
的 Cloud Storage 值區,然後按一下「Select」(選取)。如果使用外部來源,請選擇「指定 FQDN 或 IP 位址」,然後輸入 FQDN 或 IP 位址。
按一下「Create origin」(建立來源)。
大約 10 分鐘後,新建立的 EdgeCacheOrigin
資源會顯示在「來源」Origins頁面的專案來源清單中。
如要更新出發地址,請按一下出發地,然後點選「編輯」
。gcloud
使用 gcloud edge-cache origins create
指令:
gcloud edge-cache origins create ORIGIN \
--origin-address="ADDRESS"
更改下列內容:
ORIGIN
:新來源的名稱ADDRESS
:bucket 名稱,gs://my-bucket
如果您有外部來源,請將
ADDRESS
替換為 FQDN 或 IP 位址。
如要查看新建立的來源,請使用 gcloud edge-cache origins list
指令。
如要更新來源地址,請使用 gcloud edge-cache origins update
指令。
API
使用 edgeCacheOrigins.create
方法:
POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheOrigins?edgeCacheOriginId=ORIGIN_ID { "name": "ORIGIN_ID", "originAddress: "ADDRESS" }
更改下列內容:
PARENT
:父項資源,格式為projects/PROJECT/locations/global
ORIGIN_ID
:新來源的簡短名稱ADDRESS
:bucket 名稱,gs://my-bucket
如果您有外部來源,請將
ADDRESS
替換為 FQDN 或 IP 位址。
如要查看新建立的來源,請使用 edgeCacheOrigins.list
方法。
如要更新出發地址,請使用 edgeCacheOrigins.patch
方法。
Terraform
建立 EdgeCacheService
資源
EdgeCacheService
資源會設定路由、憑證和快取設定,並可指向 EdgeCacheOrigin
資源。
建立基本 EdgeCacheService
資源,執行下列操作:
- 將設定來源的所有回應快取一小時
- 設定
x-cache-status
回應標頭,傳回快取狀態 (例如HIT
或MISS
)
(選用) 為這項服務註冊網域名稱。
主控台
前往 Google Cloud 控制台的「Media CDN」頁面。
按一下 [Services] (服務) 標籤。
按一下「Create service」(建立服務)。
輸入服務的專屬名稱 (例如
my-service
),然後點選「Next」(下一步)。在「Routing」(轉送) 區段,按一下「Add host rule」(新增主機規則),然後輸入一或多個主機網域名稱。
在「Hosts」(主機) 區段,輸入主機網域名稱,例如
web.example.com
。按一下「Add route rule」(新增轉送規則)。
- 在「Priority」(優先順序) 中指定
1
。 - 按一下「Add match condition」(新增比對條件),針對「Path match」(路徑比對) 指定
/
,然後按一下「Done」(完成)。 - 選取「Fetch from an Origin」(從來源擷取),然後選取您設定的來源。
- 按一下「Add-on actions」(外掛程式動作)。
- 在「Header action」(標頭動作) 部分,按一下「Add an item」(新增項目)。接著,按照下列步驟操作:
- 在「Type」(類型) 部分,選取「Response headers to add」(要新增的回應標頭)。
- 按一下「Add header」(新增標頭)。
- 將「Name」(名稱) 指定為
x-cache-status
,並將「Value」(值) 指定為{cdn_cache_status}
。 - 按一下 [完成]。
- 在「Route action」(轉送動作) 部分,「Add an item」(新增項目)。接著,按照下列步驟操作:
- 在「Type」(類型) 部分,選取「CDN policy」(CDN 政策)。
- 在「Cache mode」(快取模式) 部分選取 FORCE_CACHE_ALL。
- 點選「Done」(完成)。
- 點選「Save」(儲存)。
- 在「Priority」(優先順序) 中指定
按一下「Create service」(建立服務)。
新建立的 EdgeCacheService
資源會顯示在專案的服務清單中,也就是「服務」頁面。
gcloud
在 Cloud Shell 中,使用文字編輯器建立名為
my-service.yaml
的本機檔案。這類檔案表示:
- 轉送運作方式:先比對主機,再比對路徑
- 快取運作方式 - 根據快取模式和存留時間
- 如何修改要求和回應,例如將
cdn_cache_status
變數插入回應標頭
將下列範例內容貼到檔案中,然後儲存:
name: SERVICE routing: hostRules: - hosts: - DOMAIN pathMatcher: routes pathMatchers: - name: routes routeRules: - priority: 1 matchRules: - prefixMatch: / origin: ORIGIN routeAction: cdnPolicy: cacheMode: CACHE_ALL_STATIC defaultTtl: 3600s headerAction: responseHeadersToAdd: - headerName: "x-cache-status" headerValue: "{cdn_cache_status}"
更改下列內容:
SERVICE
:服務名稱DOMAIN
:新服務的網域如果您指定網域名稱,Media CDN 會針對其他主機傳回
404
錯誤。ORIGIN
:相關來源的名稱
使用 YAML 檔案執行
gcloud edge-cache services import
指令:gcloud edge-cache services import SERVICE \ --source=my-service.yaml
如要在專案的
EdgeCacheService
資源清單中查看新建立的服務,請使用gcloud edge-cache services list
指令。
API
使用 edgeCacheServices.create
方法:
POST https://networkservices.googleapis.com/v1/PARENT/edgeCacheServices?edgeCacheServiceId=SERVICE_ID { "name": "SERVICE_ID", "routing": { "hostRules": [ { "hosts": ["DOMAIN"], "pathMatcher": "routes" } ], "pathMatchers": [ { "name": "routes", "routeRules": [ { "priority": "1", "matchRules": [ { "prefixMatch": "/" } ], "origin": "ORIGIN", "routeAction": { "cdnPolicy": { "cacheMode": "CACHE_ALL_STATIC", "defaultTtl": "3600s" } } "headerAction": { "responseHeadersToAdd": [ { "headerName": "x-cache-status", "headerValue": "{cdn_cache_status}" } ] }, } ] } ] } }
更改下列內容:
PARENT
:父項資源,格式為projects/PROJECT/locations/global
SERVICE_ID
:服務名稱DOMAIN
:新服務的網域如果您指定網域名稱,Media CDN 會針對其他主機傳回
404
錯誤。ORIGIN_NAME
:相關來源的名稱
如要在專案的 EdgeCacheService
資源清單中查看新建立的服務,請使用 edgeCacheServices.list
方法。
Terraform
建立第一個服務可能需要幾分鐘的時間。 Media CDN 會佈建專屬 IP 位址,並將設定推送至數千個邊緣位置。後續更新服務 (例如變更路徑設定或比對參數) 時,速度會更快。
擷取 IP 位址
如要查看新建立服務的 IP 位址,請按照下列步驟操作:
主控台
前往 Google Cloud 控制台的「Media CDN」頁面。
按一下 [Services] (服務) 標籤。
如要查看服務的 IP 位址,請參閱「Addresses」儲存格。
如果儲存格空白,請重新整理瀏覽器。
gcloud
使用 gcloud edge-cache services describe
指令:
gcloud edge-cache services describe SERVICE
將 SERVICE 改為服務名稱。
輸出內容會顯示指派給服務的 IP 位址:
ipv4Addresses:
IPV4_ADDRESS
ipv6Addresses:
IPV6_ADDRESS
name: projects/my-project/locations/global/edgeCacheServices/SERVICE
...
API
GET https://networkservices.googleapis.com/v1/SERVICE_NAME
將 SERVICE_NAME
改為服務全名。請使用下列格式:
projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
將 SERVICE_ID
改為服務的簡短名稱。
擷取的詳細資料包括指派給服務的 IP 位址:
ipv4Addresses:
IPV4_ADDRESS
ipv6Addresses:
IPV6_ADDRESS
測試是否已快取回應
測試服務前,請確認來源已儲存可快取的內容,以便 Media CDN 擷取。
如要測試服務是否已正確設定為快取內容,請使用 curl
指令列工具發出要求並檢查回應。您也可以在 Google Cloud 控制台的 Cloud Shell 中使用 curl
。
如要在網域中使用 EdgeCacheService
,可以將 EdgeCacheService
的 IP 位址指派給網域記錄。如需操作說明,請參閱「使用 Cloud DNS 設定網域」。設定網域後,請使用下列curl
指令存取內容:
curl -svo /dev/null "http://DOMAIN_NAME/FILE_NAME"
如果沒有設定 DNS 指向佈建的 IP 位址,請使用 resolve
選項覆寫 curl
使用的位址。
curl -svo /dev/null --resolve DOMAIN_NAME:80:IP_ADDRESS "http://DOMAIN_NAME/FILE_NAME"
更改下列內容:
DOMAIN_NAME
:建立服務時指定的主機網域IP_ADDRESS
:服務的 IP 位址,如服務清單中「Addresses」(位址) 欄所示FILE_NAME
:您上傳至 bucket 的檔案名稱
範例:
curl -svo /dev/null --resolve web.example.com:80:34.104.37.129 "http://web.example.com/file.mp4"
這個指令一開始會產生類似以下的輸出內容,狀態為 miss
,因為 Media CDN 尚未從來源擷取要求的資料:
< HTTP/2 200 OK
...
< x-cache-status: den;miss
...
當您多次再次提交相同的要求時,系統會產生類似下列內容的輸出結果,狀態為 hit
:
< HTTP/2 200 OK
...
< x-cache-status: den;hit
...
如果狀態不是 hit
,請檢查下列事項:
- 回應可快取。
- 設定的快取模式允許快取內容。
- 來源未設定禁止快取的快取指令。詳情請參閱「快取設定」。
您已測試基本的 EdgeCacheService
資源,這項資源可在全球放送內容。生產環境等級的服務可能需要 SSL (TLS) 憑證、多個來源和 Google Cloud Armor 安全性政策。
選用:清除
刪除不再使用的資源。
主控台
前往 Google Cloud 控制台的「Media CDN」頁面。
按一下 [Services] (服務) 標籤。
選取服務,然後點選「Delete」(刪除)。
按一下「來源」Origins分頁標籤。
選取來源,然後點選「Delete」(刪除)。
gcloud
如要列出您建立的資源,請使用
gcloud edge-cache origins list
指令和gcloud edge-cache services list
指令。如要刪除服務,請使用
gcloud edge-cache services delete
指令:gcloud edge-cache services delete SERVICE
將
SERVICE
改為服務名稱。如要刪除來源,請使用
gcloud edge-cache origins delete
指令:gcloud edge-cache origins delete ORIGIN
將
ORIGIN
替換為來源名稱。
API
如要列出您建立的資源,請使用
edgeCacheServices.list
方法和edgeCacheOrigins.list
方法。如要刪除服務,請使用
edgeCacheServices.delete
方法:DELETE https://networkservices.googleapis.com/v1/SERVICE_NAME
將
SERVICE_NAME
改為服務全名。請使用下列格式:projects/PROJECT/locations/global/edgeCacheServices/SERVICE_ID
將
SERVICE_ID
改為服務的簡短名稱。如要刪除來源,請使用
edgeCacheOrigins.delete
方法:DELETE https://networkservices.googleapis.com/v1/ORIGIN
將
ORIGIN
替換為來源的完整名稱。請使用下列格式:projects/PROJECT/locations/global/edgeCacheOrigins/ORIGIN_ID
將
ORIGIN_ID
替換為來源的簡短名稱。
針對您建立且不打算再次使用的任何其他資源 (例如 Cloud Storage bucket),重複這個程序。
後續步驟
- 核發並附加 SSL (TLS) 憑證至
EdgeCacheService
。 - 使用 Cloud Logging 查看要求記錄。
- 設定已簽署的要求,保護內容安全。
- 對快取金鑰和存留時間進行最佳化調整,並提高快取命中率。
- 設定進階路徑比對,並建立其他來源。