本頁說明如何使用 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 模組。主要檔案也可以定義多個函式進入點,以便分別部署。
Python
Python 函式的基本目錄結構如下:
. ├── main.py └── requirements.txt
Cloud Run 會從函式目錄根層級中名為