本指南會簡要說明其他 Google Cloud 服務如何參與 Cloud Run 函式部署程序。
事前準備
請參閱 Cloud Run 部署選項和資源模型指南,熟悉 Cloud Run 函式和原始碼部署概念。
架構總覽
將函式原始碼部署至 Cloud Run 函式時,該原始碼會儲存在 Cloud Storage 值區中。接著,Cloud Build 會自動將您的程式碼建構為容器映像檔,並將該映像檔推送至 Artifact Registry 映像檔登錄庫。Cloud Run 函式需要執行容器來執行函式時,就會存取這個映像檔。
在下圖中,Cloud Run 函式方塊代表使用 Cloud Run Admin API 或 Cloud Functions API 在 Cloud Run 中部署的函式。一般來說,較新的函式會使用 Cloud Run Admin API 部署,較舊的函式則會使用 Cloud Functions API 部署。
根據部署函式時使用的 API,會發生下列情況:
如果您使用 Cloud Run Admin API 部署函式,會發生以下情況:
原始碼會上傳至沒有保留期限的 Cloud Storage 值區。
- 如果您使用預設加密機制,系統會自動產生值區名稱,並命名為
run-sources-PROJECT_ID-REGION
。 - 如果您使用客戶自行管理的加密金鑰 (CMEK) 保護資料,系統不會自動產生資料夾名稱,您必須提供資料夾名稱。
- 如果您使用預設加密機制,系統會自動產生值區名稱,並命名為
原始碼會提交至 Cloud Build,Google Cloud 的 Buildpack 和 Functions Framework 會在該處建立容器映像檔。請注意,Cloud Build 服務帳戶會建構容器映像檔。
接著,容器映像檔會透過自動建立的
REGION-docker.pkg.dev/PROJECT_ID/cloud-run-source-deploy
桶,上傳至 Artifact Registry。映像檔會以服務的形式部署至 Cloud Run。
您可以使用 Eventarc、Pub/Sub 或其他 HTTP 觸發條件觸發或叫用函式。
如果您使用 Cloud Functions API (第 2 版) 部署函式,會發生以下情況:
原始碼會上傳至沒有保留期限的 Cloud Storage 值區。
系統會自動產生值區名稱,格式如下:
- 如果您使用預設加密功能,這個值區的名稱會是
gcf-v2-sources-PROJECT_NUMBER-REGION
。 - 如果您使用 CMEK 保護資料,值區名稱會是
gcf-sources-PROJECT_NUMBER-REGION-CMEK_KEY_HASH
。
- 如果您使用預設加密功能,這個值區的名稱會是
原始碼會提交至 Cloud Build,Google Cloud 的 Buildpack 和 Functions Framework 會在該處建立容器映像檔。請注意,Cloud Build 服務帳戶會建構容器映像檔。
接著,容器映像檔會透過自動建立的
REGION-docker.pkg.dev/PROJECT_ID/gcf-artifacts
桶,上傳至 Artifact Registry。映像檔會以服務的形式部署至 Cloud Run。
您可以使用 Eventarc、Pub/Sub 或其他 HTTP 觸發條件觸發或叫用函式。
後續步驟
- 瞭解不同類型的函式,以及觸發函式的選項。
- 如果您先前曾使用 Cloud Functions API 建立函式,請參閱 Cloud Run 函式比較指南,瞭解兩個版本的 Cloud Run 函式之間的差異。