部署 Cloud Run 函式 (第 1 代)

本指南說明如何從原始碼部署 Cloud Run 函式。

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

部署作業基本設定

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

選取分頁,查看如何使用 gcloud CLI 或 Google Cloud 控制台部署函式。

gcloud

  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 指令部署函式:

    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

    • --region 標記會指定要部署函式的區域。如需 Cloud Run 函式支援的地區清單,請參閱「位置」一文。

    • --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 說明文件。

    如需部署指令範例,請參閱「指令列範例」。

  3. 主控台

    1. 前往 Google Cloud 控制台的 Cloud Run 函式總覽頁面:

      前往 Cloud Run functions

      請確保選取要部署 Cloud Run 函式的 Google Cloud 專案。

    2. 按一下「建立函式」

    3. 在「Environment」(環境) 欄位中,選取「1st gen」(第 1 代)

    4. 在「函式名稱」欄位中,輸入函式的名稱。函式名稱開頭必須為英文字母,後面最多可接 62 個英文字母、數字、連字號或底線,且結尾必須為字母或數字。

    5. 在「Region」(地區) 欄位中,選取要部署函式的地區。

    6. 在「觸發條件」部分,根據所選環境按照下列步驟操作:

      1. 在「HTTPS Authentication」(HTTPS 驗證) 部分中,視是否要允許未經驗證的函式叫用,選取適當的選項。預設情況下,系統會要求驗證。詳情請參閱「驗證以進行叫用」。
      2. 在「觸發條件類型」欄位中,選取觸發條件類型。詳情請參閱「Cloud Run 函式 (第 1 代) 支援的觸發條件」。
      3. 填寫所選觸發條件類型的其他欄位。
      4. 按一下 [儲存]
    7. (選用) 展開頁面底部的「執行階段、建構作業...」部分,查看其他設定安全性選項。

    8. 點選「下一步」,前往「程式碼」步驟。

    9. 在「執行階段」欄位中,選取函式使用的語言執行階段。 Cloud Run functions 支援多種執行階段,詳情請參閱「執行階段」。

    10. 在「進入點」欄位中,輸入函式在原始碼中的進入點。這是函式執行時會執行的程式碼。這個旗標的值必須是原始碼中存在的函式名稱或完整類別名稱。詳情請參閱「函式進入點」。

    11. 在「Source code」(原始碼) 欄位中,選取提供函式原始碼的適當選項。詳情請參閱下列各節:

    12. 按一下 [Deploy] (部署)

部署成功後, Google Cloud 控制台的 Cloud Run 函式總覽頁面中,函式旁會顯示綠色勾號:

Cloud 控制台中部署的函式

函式的初始部署作業可能需要幾分鐘的時間,因為系統會佈建基礎架構。重新部署現有函式速度更快,且傳入流量會自動遷移至最新版本。

從本機部署

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

gcloud

  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. 主控台

    1. 按照上述部署說明,使用Google Cloud 控制台操作,直到看到「Source code」(原始碼) 欄位為止。
    2. 在「Source code」(原始碼) 欄位中,選取「ZIP Upload」(上傳 ZIP 檔)
    3. 在「Destination bucket」(目的地值區) 欄位中,按一下「Browse」(瀏覽),選取要上傳原始碼的 Cloud Storage 值區,做為部署作業的一部分。
    4. 在「ZIP 檔案」欄位中,按一下「瀏覽」,從本機檔案系統選取要上傳的 ZIP 檔案。函式來源檔案必須位於 ZIP 檔案的根目錄,請參閱「來源目錄結構」。
    5. 按一下 [Deploy] (部署)

從 Cloud Storage 部署

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

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

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

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

gcloud

  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. 主控台

    1. 按照上述部署說明,使用Google Cloud 控制台操作,直到看到「Source code」(原始碼) 欄位為止。
    2. 在「Source code」(原始碼) 欄位中,選取「ZIP from Cloud Storage」(從 Cloud Storage 匯入 ZIP 檔)
    3. 在「Cloud Storage location」(Cloud Storage 位置) 欄位中,按一下「Browse」(瀏覽),從 Cloud Storage 選取 ZIP 檔。函式來源檔案必須位於 ZIP 檔案的根目錄,請參閱「來源目錄結構」。
    4. 按一下 [Deploy] (部署)

從 Google Cloud 控制台內嵌編輯器部署

本節說明如何使用提供的內嵌編輯器,直接從Google Cloud 主控台編寫及部署函式。

  1. 按照上述部署說明,使用Google Cloud 控制台操作,直到看到「Source code」(原始碼) 欄位為止。
  2. 在「Source code」(原始碼) 欄位中,選取「Inline Editor」(內嵌編輯器)
  3. 使用提供的編輯器建立或編輯來源檔案 (如有需要) - 請參閱「來源目錄結構」。
    • 左窗格會列出來源檔案,並讓您建立、重新命名及刪除檔案。
    • 右側窗格是文字編輯器,可供您編輯檔案內容。
  4. 按一下 [Deploy] (部署)

指令列範例

本節會顯示一些部署情境範例的部署指令。

如要進一步瞭解 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

後續步驟