部署 Cloud Run 函式 (第 1 代)

本指南說明如何從原始碼部署舊版第 1 代 Cloud Run 函式。如要建立新函式,請參閱 Cloud Run 的控制台快速入門導覽課程

部署程序會使用您的原始碼和配置設定建構可執行的映像檔,Cloud Run functions 會自動管理該映像檔,用於處理函式收到的要求。

部署作業基本設定

部署 Cloud Run 函式的使用者必須具備「Cloud Run 函式開發人員」IAM 角色,或包含相同權限的角色。另請參閱部署作業的其他設定

使用 gcloud CLI 部署函式,如下所示:

  1. 使用 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 個英文字母、數字、連字號或底線,且結尾必須為字母或數字。

從本機部署

本節說明如何使用 gcloud CLI,從本機電腦上的原始碼部署函式。

  1. In the Google Cloud console, activate Cloud Shell.

    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.

  2. 使用 gcloud functions deploy 指令,按照上述部署說明操作。

    針對 --source 旗標,請指定函式原始碼根目錄的本機檔案系統路徑,請參閱「來源目錄結構」。如果省略這個旗標,系統會使用目前的工作目錄。

    您也可以選擇使用 --stage-bucket 旗標,指定要將原始碼上傳至哪個 Cloud Storage bucket,做為部署作業的一部分。

    上傳原始碼時,Cloud Run functions 會透過 .gcloudignore 檔案排除不必要的檔案。

  3. 從 Cloud Storage 部署

    本節說明如何使用 gcloud CLI,從 Cloud Storage 值區中的原始碼部署函式。來源程式碼必須封裝為 ZIP 檔案。

    如要讓 Cloud Run 函式從 Cloud Storage 值區讀取資料,您必須授予執行部署作業的帳戶 storage.objects.get 權限。

    如要瞭解如何控管值區存取權,請參閱 Cloud Storage 說明文件中的「使用 IAM 權限」。

    有了這項權限,您現在可以從 Cloud Storage 部署函式:

    1. In the Google Cloud console, activate Cloud Shell.

      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.

    2. 使用 gcloud functions deploy 指令,按照上述部署說明操作。

      針對 --source 旗標,請指定以 gs:// 開頭的 Cloud Storage 路徑。路徑中的物件必須是包含函式原始碼的 ZIP 檔案。函式來源檔案必須位於 ZIP 檔案的根目錄中,請參閱「來源目錄結構」。

    3. 指令列範例

      本節會針對幾個部署情境提供部署指令範例。

      如要進一步瞭解 Cloud Run 函式支援的不同觸發條件,請參閱 Cloud Run 函式觸發條件

      透過本機原始碼建立 HTTP 函式

      假設您有下列 HTTP 函式:

      • 這個函式使用 Node.js 20。
      • 原始碼位於目前工作目錄 (.)。
      • 程式碼中的進入點名為 myHttpFunction

      如要將函式部署至 Cloud Run 函式,並在 us-central1 區域中命名為 my-http-function,請使用下列指令:

      gcloud functions deploy my-http-function \
        --no-gen2 \
        --region=us-central1 \
        --runtime=nodejs20 \
        --source=. \
        --entry-point=myHttpFunction \
        --trigger-http
      

      從 Cloud Storage 中的原始碼建立 Pub/Sub 函式

      假設您有下列事件導向的函式:

      • 函式會處理 Pub/Sub 訊息發布事件。
      • 該函式使用 Python 3.12。
      • 原始碼位於 Cloud Storage 的 gs://my-bucket/my_function_source.zip 路徑。
      • 程式碼中的進入點名為 pubsub_handler

      如要將函式部署至 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 Storage 物件刪除事件。
      • 這個函式使用 Java 17。
      • 原始碼位於本機路徑 ./functions/storage-function
      • 程式碼中的進入點名為 myproject.StorageFunction

      如要將函式部署至 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
      

      後續步驟