部署 Cloud Run 函式 (第 1 代)
本指南說明如何從原始碼部署舊版第 1 代 Cloud Run 函式。如要建立新函式,請參閱 Cloud Run 的控制台快速入門導覽課程。
部署程序會使用原始碼與配置設定建構可執行的映像檔,並交由 Cloud Run functions 自動管理,用於處理函式收到的要求。
部署作業基本設定
使用者部署 Cloud Run functions 時,必須具備 Cloud Run 函式開發人員 IAM 或包含相同權限的角色。另請參閱「部署作業的其他設定」。
使用 gcloud CLI 部署函式,步驟如下:
使用
gcloud functions deploy指令來部署函式:gcloud functions deploy YOUR_FUNCTION_NAME \ [--gen2] \ --region=YOUR_REGION \ --runtime=YOUR_RUNTIME \ --source=YOUR_SOURCE_LOCATION \ --entry-point=YOUR_CODE_ENTRYPOINT \ TRIGGER_FLAGS
第一個引數
YOUR_FUNCTION_NAME即是所要部署函式的名稱。函式名稱開頭必須為英文字母,後面最多可接 62 個英文字母、數字、連字號或底線,且結尾必須為字母或數字--gen2旗標表示您要部署到 Cloud Run functions。此設定從 2024 年 9 月起成為預設值。如要部署至第 1 代,請使用--no-gen2。--region旗標指定部署函式的所在區域。如需 Cloud Run functions 支援的區域清單,請參閱「地區」一文。--runtime旗標指定函式所使用的語言執行階段。Cloud Run functions 支援多種執行階段,詳情請參閱「執行階段」。--source旗標指定函式原始碼的位置。詳情請參閱下列各節:--entry-point旗標指定原始碼中函式的進入點。這是函式運作時所執行的程式碼。此旗標的值必須是原始碼中既有的函式名稱或完整類別名稱。詳情請參閱「函式進入點」。如要為函式指定觸發條件,需依所要使用的觸發條件類型,額外指定其他旗標 (即上方所示的
TRIGGER_FLAGS)。觸發條件旗標 觸發條件說明 --trigger-http透過 HTTP(S) 要求觸發函式。詳情請參閱「HTTP 觸發條件」。 --trigger-topic=YOUR_PUBSUB_TOPIC在訊息發布至指定 Pub/Sub 主題時觸發函式。詳情請參閱「Pub/Sub 觸發條件」。 --trigger-bucket=YOUR_STORAGE_BUCKET在指定的 Cloud Storage bucket 中建立或覆寫物件時觸發函式。詳情請參閱「Cloud Storage 觸發條件」。 --trigger-event=EVENT_TYPE
[--trigger-resource=RESOURCE]在發生指定事件時觸發函式。有些事件類型會需要您指定資源。詳情請參閱「Cloud Run functions (第 1 代) 支援的觸發條件」。 有關部署指令及其旗標的完整參考資料請參閱
gcloud functions deploy說明文件。如需指令部署作業的範例,請參閱「指令列範例」。
從本機電腦部署
本節說明如何使用 gcloud CLI,將本機電腦上的原始碼部署為函式。
-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
請按照上述部署作業操作說明,使用
gcloud functions deploy指令進行部署。對於
--source旗標,請指定函式原始碼根目錄的本機檔案系統路徑,詳見「來源目錄結構」。如果省略這個旗標,系統會使用目前的工作目錄。您也可以選擇使用
--stage-bucket旗標,指定部署作業要將原始碼上傳至哪個 Cloud Storage bucket。上傳原始碼時,Cloud Run functions 會透過
.gcloudignore檔案排除不必要的檔案。-
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
請按照上述部署作業操作說明,使用
gcloud functions deploy指令進行部署。針對
--source旗標,請指定以gs://開頭的 Cloud Storage 路徑。路徑下的物件必須是包含函式原始碼的 ZIP 檔案。函式來源檔案必須位於 ZIP 檔案的根目錄中,請參閱「來源目錄結構」。- 這個函式使用 Node.js 22。
- 原始碼位於目前工作目錄 (
.)。 - 程式碼中的進入點名稱為
myHttpFunction。 - 這個函式負責處理 Pub/Sub 訊息發布事件。
- 該函式使用 Python 3.12。
- 原始碼位於 Cloud Storage 的
gs://my-bucket/my_function_source.zip路徑。 - 程式碼中的進入點名稱為
pubsub_handler。 - 這個函式負責處理 Cloud Storage 物件刪除事件。
- 該函式使用 Java 17。
- 原始碼位於本機路徑
./functions/storage-function。 - 程式碼中的進入點名稱為
myproject.StorageFunction。 - 參閱 Cloud Run functions 觸發條件的詳細資料。
- 瞭解 Cloud Run functions 建構程序。
- 探索其他 Cloud Run functions 設定選項。
- 瞭解如何保護 Cloud Run functions。
從 Cloud Storage 部署
本節說明如何使用 gcloud CLI,將 Cloud Storage bucket 中的原始碼部署為函式。原始碼必須封裝為 ZIP 檔案。
您必須為執行部署作業的帳戶授予 storage.objects.get 權限,Cloud Run functions 才能從 Cloud Storage bucket 讀取資料。
如要瞭解如何控管 bucket 存取權限,請參閱 Cloud Storage 說明文件中的「使用 IAM 權限」。
取得這項權限後,即可從 Cloud Storage 部署函式:
指令列範例
本節舉例說明一些部署作業情境適用的部署指令。
如要進一步瞭解 Cloud Run 函式支援的不同觸發條件,請參閱「Cloud Run functions 觸發條件」。
將本機原始碼部署為 HTTP 函式
假設您有下列 HTTP 函式:
如要將函式部署至 Cloud Run functions,並在 us-central1 區域中命名為 my-http-function,請使用下列指令:
gcloud functions deploy my-http-function \
--no-gen2 \
--region=us-central1 \
--runtime=nodejs22 \
--source=. \
--entry-point=myHttpFunction \
--trigger-http
將 Cloud Storage 中的原始碼部署為 Pub/Sub 函式
假設您有下列事件導向函式:
如要將函式部署至 Cloud Run functions、在 europe-west1 區域中命名為 my-pubsub-function,並設定由 Pub/Sub 主題 my-topic 上的訊息來觸發,請使用下列指令:
gcloud functions deploy my-pubsub-function \
--no-gen2 \
--region=europe-west1 \
--runtime=python312 \
--source=gs://my-bucket/my_function_source.zip \
--entry-point=pubsub_handler \
--trigger-topic=my-topic
將本機原始碼部署為 Cloud Storage 函式
假設您有下列事件導向函式:
如要將函式部署至 Cloud Run functions、在 asia-northeast1 區域中命名為 my-storage-function,並設定由 Cloud Storage bucket my-bucket 中的事件來觸發,請使用下列指令:
gcloud functions deploy my-storage-function \
--no-gen2 \
--region=asia-northeast1 \
--runtime=java17 \
--source=./functions/storage-function \
--entry-point=myproject.StorageFunction \
--trigger-resource=gs://my-bucket \
--trigger-event=google.storage.object.delete