比較 Cloud Run 函式

瞭解 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 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 服務 函式是從原始碼部署
函式類型術語
  • HTTP 函式
  • 所有語言執行階段都支援 CloudEvents 函式 (也稱為事件導向函式)。
  • HTTP 函式
  • 只有 Ruby、.NET 和 PHP 執行階段支援 CloudEvents。如果是 Node.js、Go、Python 和 Java,請使用背景函式建立事件導向函式。
指派的 HTTPS 網址 run.app

使用 Cloud Functions v2 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 代)
要求逾時
  • HTTP 觸發函式最長 60 分鐘
  • 使用 Cloud Functions v2 API 建立的事件導向函式,最長可達 9 分鐘
  • 最多 9 分鐘
執行個體大小 最多 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
  • run.googleapis.com (v1 和 v2),適用於透過 Cloud Run Admin API 或 Cloud Functions API 建立的函式。
Terraform

部署使用 Cloud Functions v2 API 建立的函式

如前所述,您可以使用 Cloud Run 工具部署及管理透過 Cloud Functions v2 API 建立的函式。如需使用 Cloud Functions v2 API 部署函式 (例如為了回溯相容性),請按照下列步驟操作:

  1. 確認您具備 Cloud Functions 開發人員 IAM 角色,或包含相同權限的角色。另請參閱部署作業的其他設定。

  2. 使用 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 v2 API 建立的函式,您可以在部署函式時指定觸發條件。
您可以在函式部署期間指定觸發條件。
事件類型 支援 Eventarc 支援的任何事件類型,包括透過 Cloud 稽核記錄提供的 90 多個事件來源。 直接支援 7 個來源的事件。
重試次數 如果是使用 Cloud Run Admin API 建立的函式,請更新 Eventarc 中的重試政策,並在 Pub/Sub 中設定dead-letter 主題。

如果是透過 Cloud Functions v2 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,您可能需要執行這項操作。詳情請參閱「管理函式」。

後續步驟