設定服務的要求逾時

Cloud Run 要求逾時設定可讓您定義服務傳回回應的時間上限。如果服務未在時限內回應,Cloud Run 會關閉網路連線,並傳回 HTTP 504 錯誤。

關閉連線不會終止容器執行個體。容器可能會繼續處理已取消的要求,這可能會干擾其他要求的處理。為避免逾時,請將逾時時間設為高於預期執行時間,或追蹤剩餘執行時間,以便執行清除作業並提早返回。

服務逾時期限

逾時時間預設為 5 分鐘 (300 秒),最長可延長至 60 分鐘 (3600 秒)。

從 Eventarc 事件、Pub/Sub 推送訂閱項目或 Cloud Scheduler 觸發服務時,系統會套用這些服務的逾時設定。

您可以在部署容器映像檔時變更這項設定,也可以透過更新服務設定來變更。

除了變更 Cloud Run 要求逾時設定外,您也應檢查語言架構,看看是否有專屬的要求逾時設定,並一併更新。Cloud Run 服務的某些用戶端也可能設定更嚴格的逾時限制。

必要的角色

如要取得設定及部署 Cloud Run 服務所需的權限,請要求管理員授予您下列 IAM 角色:

如果您要從原始碼部署服務或函式,您也必須在專案和 Cloud Build 服務帳戶中獲得額外角色。

如要查看與 Cloud Run 相關聯的 IAM 角色和權限清單,請參閱「Cloud Run IAM 角色」和「Cloud Run IAM 權限」。如果 Cloud Run 服務與Cloud de Confiance API (例如 Cloud 用戶端程式庫) 互動,請參閱服務身分設定指南。如要進一步瞭解如何授予角色,請參閱「部署權限」和「管理存取權」。

設定及更新要求逾時

任何設定變更都會導致系統建立新的修訂版本。除非您明確更新以變更設定,否則後續修訂版本也會自動採用這項設定。

建立新服務或部署新修訂版本時,您可以使用 Cloud de Confiance 控制台、gcloud CLI 指令列或 YAML 檔案設定要求逾時。

控制台

  1. 前往 Cloud de Confiance by S3NS 控制台的「Cloud Run」頁面:

    前往 Cloud Run。

  2. 從 Cloud Run 導覽選單中選取「Services」(服務),然後按一下「Deploy container」(部署容器),設定新服務。如要設定現有服務,請按一下該服務。

  3. 如要設定新服務,請填寫初始服務設定頁面,然後按一下「容器、網路、安全性」展開服務設定頁面。

  4. 如要設定現有服務,請按一下「Scaling」(資源調度) 分頁標籤。

  5. 在「Requests」(要求) 下方的「Request timeout」(要求逾時) 欄位中,輸入要使用的逾時值 (以秒為單位)。請使用 1 到 3600 秒之間的值。

  6. 按一下「建立」建立新服務。依序點選「查看差異並重新部署」和「部署變更」,即可更新現有服務。

gcloud

針對某個修訂版本,您可以使用下列指令,隨時更新要求逾時:

gcloud run services update SERVICE --timeout=TIMEOUT

更改下列內容:

  • SERVICE:服務名稱。
  • TIMEOUT:必須傳回回應的時間,使用整數值或絕對時間值,例如 1m20s,也就是 1 分 20 秒。如果您使用整數值,系統將假設單位是「秒」。指定的值必須小於 60 分鐘。

您也可以在部署期間,使用以下指令設定要求逾時:

gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT

更改下列內容:

  • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
  • TIMEOUT:必須傳回回應的時間,使用整數值或時間長度值,例如 1m20s,即 1 分 20 秒。如果使用整數值,系統會假設單位為秒。指定的值必須小於 60 分鐘。

YAML

  1. 如果您要建立新服務,請略過這個步驟。如要更新現有服務,請下載其 YAML 設定:

    gcloud run services describe SERVICE --format export > service.yaml
  2. 更新 timeoutSeconds 屬性:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: VALUE

    更改下列內容:

    • SERVICE:Cloud Run 服務的名稱。
    • IMAGE_URL:容器映像檔的參照,例如 us-docker.pkg.dev/cloudrun/container/hello:latest。如果使用 Artifact Registry,則必須先建立存放區 REPO_NAME。網址格式為 LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG。
    • VALUE:所選逾時時間,單位為秒。
  3. 使用下列指令建立或更新服務:

    gcloud run services replace service.yaml

    gcloud run services replace 指令預設會使用 service.yaml 檔案 (如有)。

Terraform

如要瞭解如何套用或移除 Terraform 設定,請參閱「基本 Terraform 指令」。

在 Terraform 設定中,將下列內容新增至 google_cloud_run_v2_service 資源:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-request-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    # Timeout
    timeout = "300s"
  }
}

將 300s 替換為您為服務選擇的要求逾時時間。

查看要求逾時設定

如要查看 Cloud Run 服務目前的請求逾時設定,請按照下列步驟操作:

控制台

  1. 前往 Cloud de Confiance by S3NS 控制台的 Cloud Run「Services」(服務) 頁面:

    前往 Cloud Run。

  2. 按一下感興趣的服務,開啟「服務詳細資料」頁面。

  3. 按一下「縮放」分頁標籤即可查看設定。

gcloud

  1. 使用下列指令:

    gcloud run services describe SERVICE
  2. 在傳回的設定中找出要求逾時設定。