排定 HTTP Cloud Run 函式

本教學課程說明如何透過 Cloud Scheduler 中的 HTTP 端點,排定 HTTP Cloud Run 函式的執行時間。如果函式需要網址端點並回應 HTTP 要求 (例如 Webhook),請使用 HTTP 函式

或者,如果您建立了 CloudEvents 函式,請使用 Eventarc 事件觸發條件,排定函式回應專案內事件的時間。Eventarc 可觸發 Pub/Sub 主題的訊息、Cloud Storage 值區的變更等。詳情請參閱Cloud Run functions 類型

排定 Cloud Run 函式的執行作業是 Cloud Scheduler 的常見用途。在這個教學課程中,您將執行下列操作:

  1. 建立簡單的 HTTP Cloud Run 函式。
  2. 建立 Cloud Scheduler 工作。
  3. 執行 Cloud Scheduler 工作。
  4. 確認 Cloud Scheduler 工作是否會觸發 Cloud Run 函式。

建立 HTTP Cloud Run 函式

建立由 Cloud Scheduler 觸發的 HTTP 函式。

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面。

    前往 Cloud Run

  2. 按一下「編寫函式」

  3. 在「設定」部分,完成下列步驟:

    1. 在「Service name」(服務名稱) 欄位中,輸入函式的名稱。
    2. 在「Region」(區域) 清單中選取區域。
    3. 請勿修改預設執行階段語言。
    4. 如要進行驗證,請選取「需要驗證」

      如果您受到網域限制組織政策限制,無法對專案進行未經驗證的呼叫,則必須按照「測試私人服務」一節的說明,存取已部署的服務。

      詳情請參閱「驗證以進行叫用」。

  4. 接受其他預設值,然後按一下「建立」

  5. 複製函式的 HTTP 網址。

如要進一步瞭解如何使用 Terraform 部署 Cloud Run 函式,請參閱「部署 Cloud Run 函式」。

建立 Cloud Scheduler 工作

建立 Cloud Scheduler 工作,透過 HTTP 觸發動作。

  1. 前往 Google Cloud 控制台的「Cloud Scheduler」頁面。

    前往 Cloud Scheduler

  2. 按一下「建立工作」

  3. 輸入工作名稱。

  4. 在「Region」(區域) 清單中選取區域。

  5. 使用 unix-cron 格式指定工作的頻率

    30 16 * * 7
    

    詳情請參閱「Cron 工作格式和時區」。

  6. 在「時區」清單中選取時區。

  7. 按一下「繼續」

  8. 在「Target type」(目標類型) 清單中,選取「HTTP」

  9. 在「URL」欄位中,輸入您先前複製的函式 HTTP 網址。

  10. 在「Auth header」(授權標頭) 清單中,選取「Add OIDC token」(新增 OIDC 權杖)

  11. 在「Service account」(服務帳戶) 清單中,選取您先前建立的服務帳戶。

  12. 在「對象」欄位中,輸入您先前複製的函式 HTTP 網址。

  13. 點選「建立」

您已建立 Cron 工作,會在星期日 16:30 執行 Cloud Run 函式。

執行 Cloud Scheduler 工作

現在可以執行您建立的工作。

  1. 前往 Google Cloud 控制台的 Cloud Scheduler 頁面。

    前往 Cloud Scheduler

  2. 選取您建立的工作核取方塊,然後按一下「強制執行」

    首次叫用時,專案中建立的第一項工作可能需要幾分鐘的時間才能設定及執行。

  3. 工作執行後,「上次執行狀態」應會顯示 Success

在 Cloud Run 函式中驗證結果

您可以確認 Cron 工作是否成功觸發及執行 Cloud Run 函式。

  1. 前往 Google Cloud 控制台的「Cloud Run」頁面。

    前往 Cloud Run

  2. 依序選取「篩選服務」>「部署類型」>「函式」。這項操作會篩選服務清單,只顯示函式。

  3. 按一下函式名稱。

    「服務詳細資料」頁面隨即開啟,並顯示服務指標。

  4. 按一下 [Logs] (記錄) 分頁標籤。

    您應該會看到類似以下的記錄項目: POST 200 146 B 5 ms Google-Cloud-Scheduler https://FUNCTION_NAME