編寫 Cloud Run 函式

本頁說明如何使用 Functions Framework 編寫 HTTP 和事件驅動型 Cloud Run 函式。

Functions Framework 總覽

編寫函式原始碼時,您必須使用 Functions Framework,這是用於編寫 Cloud Run functions 的開放原始碼程式庫。透過 Functions Framework,您可以編寫簡易函式,並在 Cloud Run 和其他環境中執行,包括本機開發電腦和以 Knative 為基礎的環境。

Functions Framework 可讓您:

  • 叫用 Cloud Run 函式以回應要求。
  • 自動將符合 CloudEvents 規格的事件解除封送。CloudEvents 是業界標準規格,用於以通用方式描述事件資料。
  • 啟動本機開發伺服器以進行測試。

Functions Framework 提供介面,用於建構模組化服務。如要在原始碼中使用 Functions Framework,請指定下列項目:

函式進入點

原始碼必須定義函式進入點,也就是 Cloud Run 叫用函式時執行的程式碼。部署函式時,您會指定這個進入點。

定義進入點的方式取決於您使用的語言執行階段。有些語言會使用函式做為進入點,有些則會使用類別。

簽名類型

使用 Functions Framework 編寫函式的原始碼時,您必須指定下列其中一種簽章類型:

  • HTTP 函式:註冊 HTTP 處理常式函式。如果函式需要網址端點並回應 HTTP 要求 (例如 Webhook),請使用 HTTP 函式。
  • 事件導向函式,又稱 CloudEvents 函式:註冊 CloudEvents 處理常式函式。如果函式應直接回應 Google Cloud 專案中的事件 (例如 Pub/Sub 主題上的訊息或 Cloud Storage bucket 中的變更),請使用事件驅動函式。

來源目錄結構

Functions Framework 支援多種程式設計語言。您選擇的語言執行階段和要撰寫的函式類型,會決定程式碼的結構和函式的實作方式。

為使 Cloud Run 能夠找到函式定義,每個語言執行階段都對原始碼結構有所要求。

Node.js

Node.js 函式的基本目錄結構如下:

.
├── index.js
└── package.json

根據預設,Cloud Run 會嘗試從函式目錄根層級中名為 index.js 的檔案載入原始碼。如要指定其他主要來源檔案,請使用 package.json 檔案中的 main 欄位。

package.json 檔案也必須將 Node.js 適用的 Functions Framework 做為依附元件:

{
  "main": "index.js",
  "dependencies": {
    "@google-cloud/functions-framework": "^3.0.0"
  },
  "type": "module"
}

主要檔案中的程式碼必須定義函式進入點,並可匯入其他程式碼和 Node.js 模組。主要檔案也可以定義多個函式進入點,以便分別部署。

詳情請參閱 Node.js 執行階段總覽Node.js 適用的 Functions Framework

Python

Python 函式的基本目錄結構如下:

.
├── main.py
└── requirements.txt

Cloud Run 會從函式目錄根層級中名為