使用 Functions Emulator 執行函式
您可以使用 Google Cloud CLI Functions Emulator,透過 gcloud alpha functions local 指令管理 Cloud Run 函式的本機執行個體。這樣您就能在本機系統上部署及測試函式,再將函式部署至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=python313
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 |
要使用的建構包建構工具名稱。 |
--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 函式。