本快速入門導覽課程說明如何在 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/globalORIGIN_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/globalSERVICE_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 查看要求記錄。
- 設定已簽署的要求,保護內容安全。
- 對快取金鑰和存留時間進行最佳化調整,並提高快取命中率。
- 設定進階路徑比對,並建立其他來源。