本指南會比較最新和原始的 Google Cloud 函式部署選項。如果您先前使用 Cloud Functions API 建立函式,現在要改用 Cloud Run Admin API,本頁內容可提供協助。本頁說明幾個領域的主要差異,例如概念、設定、部署作業,以及觸發條件和重試。
比較
Cloud Run functions 有兩個版本:
Cloud Run functions 是最新版函式,部署為 Cloud Run 上的服務。您可以透過下列任一方式建立這些項目:
- Cloud Run Admin API (建議使用):使用這個 API 建立的函式 (例如使用Google Cloud 控制台、
gcloud run、REST API 或 Terraform),只能透過 Cloud Run Admin API 管理。 - Cloud Functions v2 API:使用這個 API (例如使用
gcloud functions、REST API 或 Terraform) 建立的函式,可透過 Cloud Run Admin API 和 Cloud Functions v2 API 管理。使用這個 API 時,您會在部署函式時指定觸發條件。瞭解如何卸載第 2 版 API 函式,以便專門使用 Cloud Run Admin API 管理函式。
- Cloud Run Admin API (建議使用):使用這個 API 建立的函式 (例如使用Google Cloud 控制台、
Cloud Run functions (第 1 代) (舊稱 Cloud Functions 第 1 代) 是函式的原始版本,事件觸發條件、執行階段和可設定性有限。瞭解如何將第 1 代函式升級至 Cloud Run。
直接將函式部署至 Cloud Run,函式就會自動建構為容器,並部署為 Cloud Run 服務。
概念
下表摘要說明函式的概念差異。
| Cloud Run functions | Cloud Run functions (第 1 代) | |
|---|---|---|
| 舊產品名稱 | Cloud Functions (第 2 代) | Cloud Functions (第 1 代) |
| 資源模型 | 函式是從原始碼部署的 Cloud Run 服務 | 從原始碼部署函式 |
| 函式類型術語 |
|
|
| 指派的 HTTPS 網址 | run.app使用 Cloud Functions 第 2 代 API 建立的函式也有 cloudfunctions.net 端點。 |
cloudfunctions.net |
| 映像檔登錄 | 僅限 Artifact Registry | Artifact Registry 或 Container Registry (已淘汰) |
| 部署作業適用的 IAM 角色 |
|
|
| 內部基礎架構 | Cloud Run | Google 內部 |
| 定價模式 | Cloud Run 定價 | Cloud Run functions (第 1 代) 定價 |
設定
Cloud Run 會將函式建構到容器中,並以服務形式部署。將函式部署至 Cloud Run 時,您可以完整存取及控管函式的行為。例如,您可以啟用直接虛擬私有雲、設定 GPU、使用磁碟區掛接等。
下表大致列出了函式的設定差異:
| Cloud Run functions | Cloud Run functions (第 1 代) | |
|---|---|---|
| 要求逾時 |
|
|
| 執行個體大小 | 最多 16 GiB RAM,4 個 vCPU | 最多 8 GB RAM,2 個 vCPU |
| 並行 | 每個函式執行個體最多可處理 1000 項並行要求 | 每個函式執行個體 1 項並行要求 |
| 流量拆分 | 支援 | 不支援 |
部署
自 2024 年 8 月起,您可以使用 Cloud Run 部署及管理透過 Cloud Functions v2 API 建立的函式。這項異動會導致下列情況:
- 函式中繼資料 (例如執行階段 ID 和建構設定) 會儲存在 Cloud Run 服務定義中。
- 您可以使用 Cloud Run Admin API 安全地編輯函式。
- 您可以將 Cloud Run 服務定義做為函式的單一事實來源。
但請注意,使用 Cloud Run Admin API 建立的函式無法透過 Cloud Functions API 修改。
下表大致列出了函式建立、部署、編輯和管理方式的差異:
| Cloud Run functions | Cloud Run functions (第 1 代) | |
|---|---|---|
| Google Cloud 控制台 | Cloud Run | Cloud Run 函式 (第 1 代) |
| Cloud SDK |
|
|
| REST API |
|
|
| Terraform |
|
部署透過 Cloud Functions 第 2 代 API 建立的函式
如先前所述,您可以使用 Cloud Run 工具部署及管理透過 Cloud Functions v2 API 建立的函式。如需使用 Cloud Functions v2 API 部署函式 (例如為了回溯相容性),請按照下列步驟操作:
確認您具備「Cloud Functions 開發人員」IAM 角色,或包含相同權限的角色。另請參閱部署作業的其他設定。
使用
gcloud functions deploy指令來部署函式:gcloud functions deploy YOUR_FUNCTION_NAME \ --region=YOUR_REGION \ --runtime=YOUR_RUNTIME \ --source=YOUR_SOURCE_LOCATION \ --entry-point=YOUR_CODE_ENTRYPOINT \ TRIGGER_FLAGS...
更改下列內容:
YOUR_FUNCTION_NAME:要部署函式的名稱。函式名稱開頭必須為英文字母,後面最多可接 62 個英文字母、數字、連字號或底線,且結尾必須為字母或數字。為函式建立的 Cloud Run 服務名稱會將底線替換為連字號,並將大寫字母轉換為小寫字母。舉例來說,在 Cloud Run 中,
Function_1會命名為function-1。YOUR_REGION:要部署函式的 Google Cloud 區域。例如:
europe-west1。YOUR_RUNTIME:函式使用的語言。如需支援的執行階段清單,請參閱「執行階段支援」。
YOUR_SOURCE_LOCATION:函式原始碼的位置。
YOUR_CODE_ENTRYPOINT:原始碼中函式的進入點。這是函式運作時所執行的程式碼。此旗標的值必須是原始碼中既有的函式名稱或完整類別名稱。
如需 functions deploy 指令和旗標的完整參考資料,請參閱 gcloud functions deploy 說明文件。
觸發條件和重試
下表比較函式的觸發條件和重試機制:
| Cloud Run functions | Cloud Run functions (第 1 代) | |
|---|---|---|
| 觸發及叫用函式 | 如果是使用 Cloud Run Admin API 建立的函式,您可以在部署函式時指定觸發條件,也可以在 Google Cloud 控制台中或使用 gcloud CLI 部署函式後指定觸發條件。 如果是使用 Cloud Functions 第 2 代 API 建立的函式,您可以在部署函式時指定觸發條件。 |
您可以在函式部署期間指定觸發條件。 |
| 事件類型 | 支援 Eventarc 支援的任何事件類型,包括透過 Cloud 稽核記錄提供的 90 多個事件來源。 | 直接支援 7 個來源的事件。 |
| 重試 | 如果是使用 Cloud Run Admin API 建立的函式,請在 Eventarc 中更新重試政策,並在 Pub/Sub 中設定無效信件主題。 如果是使用 Cloud Functions 第 2 代 API 建立的函式,您可以在函式部署時,透過 --retry 旗標指定重試次數。
|
您可以在函式部署期間,使用 --retry 旗標指定重試次數。 |
卸載函式
使用 Cloud Functions v2 API (例如使用 gcloud functions、REST API 或 Terraform) 建立的函式,可以從現有的 API 環境卸載。函式卸載後,您只能使用 Cloud Run Admin API 管理函式。如果工作負載需要留在 run.googleapis.com API 邊界內以使用 Assured Workloads,或是為了確保工作負載使用 Cloud Run SKU,您可能需要執行這項操作。詳情請參閱「管理函式」。
後續步驟
- 請參閱部署 Cloud Run 函式的入門指南。