部署 Cloud Run 函式 (第 1 代)

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

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

部署作業基本設定

部署 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 函式支援多個執行階段,詳情請參閱「執行階段」。

    • --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 值區中建立或覆寫物件時觸發函式。詳情請參閱「 Cloud Storage 觸發事件」。
    --trigger-event=EVENT_TYPE
    [--trigger-resource=RESOURCE]
    在發生指定事件時觸發函式。某些事件類型需要指定資源。詳情請參閱「 Cloud Run 函式 (第 1 代) 支援的觸發事件」。

    部署函式時,您可以視需要指定其他設定網路安全性選項。

    如需部署指令及其標記的完整參考資料,請參閱 gcloud functions deploy 說明文件。

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

主控台

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

    前往 Cloud Run 函式

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

  2. 按一下「建立函式」

  3. 在「Environment」欄位中選取「1st gen」

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

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

  6. 在「觸發條件」部分,根據所選環境依序執行下列步驟:

    1. 在「HTTPS Authentication」部分中,視您是否要允許未經驗證的函式叫用,選取適當的選項。根據預設,您必須進行驗證。詳情請參閱「驗證呼叫」。
    2. 在「觸發條件類型」欄位中選取觸發條件類型。詳情請參閱「Cloud Run 函式 (第 1 代) 支援的觸發條件」。
    3. 為所選觸發條件類型填寫其他欄位。
    4. 按一下 [儲存]
  7. 您可以選擇展開頁面結尾處的「Runtime, build...」專區,查看其他設定安全性選項。

  8. 點選「下一步」前往「Code」步驟。

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

  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 值區,以便在部署時上傳原始碼。

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

主控台

  1. 使用Google Cloud 主控台,按照上述部署操作說明操作,直到看到「Source code」欄位為止。
  2. 在「Source code」欄位中,選取「ZIP Upload」
  3. 在「目的地值區」欄位中,按一下「瀏覽」,選取要上傳原始碼的 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 檔案的根目錄,請參閱「來源目錄結構」。

主控台

  1. 使用Google Cloud 主控台,按照上述部署操作說明操作,直到看到「Source code」欄位為止。
  2. 在「Source code」(原始碼) 欄位中,選取「Cloud Storage 中的 ZIP 檔案」
  3. 在「Cloud Storage 位置」欄位中,按一下「瀏覽」,從 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

如要將函式部署至區域 us-central1 中的 Cloud Run 函式,名稱為 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 中的 Cloud Run 函式,並讓函式由 Pub/Sub 主題 my-topic 上的訊息觸發,請使用下列指令:my-pubsub-function

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

如要將函式部署至區域 asia-northeast1 中的 Cloud Run 函式,並讓函式由 Cloud Storage bucket my-bucket 中的事件觸發,請使用下列指令:my-storage-function

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

後續步驟