部署 Cloud Run 函式 (第 1 代)
本指南說明如何從原始碼部署舊版第 1 代 Cloud Run 函式。如要建立新函式,請參閱 Cloud Run 的控制台快速入門導覽課程。
部署程序會使用您的原始碼和配置設定建構可執行的映像檔,Cloud Run functions 會自動管理該映像檔,用於處理函式收到的要求。
部署作業基本設定
部署 Cloud Run 函式的使用者必須具備「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 函式。自 2024 年 9 月起,這將成為預設值。如要部署至第 1 代,請使用- --no-gen2。
- --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 函式 (第 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 函式觸發條件的詳細資料。
- 瞭解 Cloud Run 函式建構程序。
- 探索其他 Cloud Run 函式設定選項。
- 瞭解如何保護 Cloud Run 函式。
從 Cloud Storage 部署
本節說明如何使用 gcloud CLI,從 Cloud Storage 值區中的原始碼部署函式。來源程式碼必須封裝為 ZIP 檔案。
如要讓 Cloud Run 函式從 Cloud Storage 值區讀取資料,您必須授予執行部署作業的帳戶 storage.objects.get 權限。
如要瞭解如何控管值區存取權,請參閱 Cloud Storage 說明文件中的「使用 IAM 權限」。
有了這項權限,您現在可以從 Cloud Storage 部署函式:
指令列範例
本節會針對幾個部署情境提供部署指令範例。
如要進一步瞭解 Cloud Run 函式支援的不同觸發條件,請參閱 Cloud Run 函式觸發條件。
透過本機原始碼建立 HTTP 函式
假設您有下列 HTTP 函式:
如要將函式部署至 Cloud Run 函式,並在 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 函式
假設您有下列事件導向的函式:
如要將函式部署至區域 europe-west1 中名為 my-pubsub-function 的 Cloud Run 函式,並讓函式由 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 函式,並在 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