使用 Functions Emulator 執行函式
您可以使用 Google Cloud CLI Functions Emulator,透過 gcloud alpha functions local 指令管理 Cloud Run functions 的本機執行個體,藉此在本機系統上部署並測試函式,再將函式部署至Google Cloud 環境。
Functions Emulator 會使用 Google Cloud 的 Buildpacks,將函式程式碼封裝為可在本機執行的容器映像檔。然後使用 Docker 在本機執行這些映像檔。
安裝作業先決條件
請先確認已安裝下列項目,再繼續操作:
在本機部署函式
如要使用 Functions Emulator 在本機部署函式,請使用 gcloud functions 指令:
Node.js
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=nodejs22
Python
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=python314
Go
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=go121
Java
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --no-gen2 \ --runtime=java17
Ruby
gcloud alpha functions local deploy LOCAL_DEPLOYMENT_NAME \ --entry-point=ENTRY_POINT \ --runtime=ruby34
更改下列內容:
- LOCAL_DEPLOYMENT_NAME:在本機部署函式時使用的名稱。
- ENTRY_POINT:函式的進入點。
您可使用下列選用旗標可進一步設定部署指令:
| 旗標 | 說明 |
|---|---|
--port |
用於監聽要求的通訊埠 (預設:8080)。 |
--builder |
要使用的buildpack 建構工具名稱。 |
--builder 值預設為函式語言的 App Engine 建構工具,例如 Python 的預設值為 gcr.io/serverless-runtimes/google-22-full/builder/python。
首次使用 gcloud alpha 指令時,gcloud 指令會提示安裝 gcloud alpha 指令集。
呼叫本機函式
如要呼叫本機函式而不傳送資料,請使用下列指令:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME
將 LOCAL_DEPLOYMENT_NAME 替換為要在本機部署函式的名稱。
如要在呼叫本機函式時加入資料,請選擇符合函式類型的分頁:
HTTP 函式
依下列方式呼叫本機 HTTP 函式:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--data='{"message": "MESSAGE"}'
更改下列內容:
- LOCAL_DEPLOYMENT_NAME:要在本機部署的函式名稱。
- ENTRY_POINT:函式的進入點。
- MESSAGE:要作為 HTTP 要求主體傳遞的文字字串。
CloudEvent 函式
如要呼叫本機 CloudEvent 函式,您必須提供 CloudEvent JSON 物件以說明觸發事件:
gcloud alpha functions local call LOCAL_DEPLOYMENT_NAME \
--cloud-event="CLOUD_EVENT_JSON"
更改下列內容:
- LOCAL_DEPLOYMENT_NAME:要在本機部署的函式名稱。
- ENTRY_POINT:函式的進入點。
- CLOUD_EVENT_JSON:結構化內容模式中的 JSON 編碼字串,用於說明觸發事件。如需更多詳細資料和範例,請參閱「CloudEvents - JSON 事件格式」。
指令列範例如下:
gcloud alpha functions local call my-function --cloud-event='{
"specversion" : "1.0",
"type" : "com.github.pull.create",
"source" : "https://github.com/cloudevents/spec/pull",
"subject" : "123",
"id" : "ce",
"time" : "2021-01-27T18:30:00Z", "data" : "{\n \"subscription\": \"projects\/test-project\/subscriptions\/my-subscription\",\n \"message\": {\n \"attributes\": {\n \"attr1\":\"attr1-value\"\n },\n \"data\": \"d29ybGQ=\",\n \"messageId\": \"message-id\",\n \"publishTime\":\"2021-02-05T04:06:14.109Z\",\n \"orderingKey\": \"ordering-key\"\n }\n}"
}'
如要進一步瞭解 CloudEvents 的 JSON 格式定義,請參閱「CloudEvent 規格」。
刪除本機函式部署作業
使用下列指令刪除本機函式部署作業:
gcloud alpha functions local delete LOCAL_DEPLOYMENT_NAME
將 LOCAL_DEPLOYMENT_NAME 替換成要在本機部署的函式名稱。
這項指令會取消部署函式,但不會刪除函式程式碼。
後續步驟
- 瞭解如何透過 Google Cloud部署 Cloud Run 函式。