Pub/Sub 目標
如果選擇「Pub/Sub」目標類型:指定工作要發布的主題名稱。這是您已在專案中設定的 Pub/Sub 主題。
指定要傳送至主題的訊息。這項資訊會以 Pub/Sub 訊息中的
data參數形式傳送。如需範例,請參閱快速入門導覽課程。新增所需的訊息屬性。
使用
Configure optional settings區段進行其他設定。
Cloud Scheduler 會以 Google API 服務帳戶的身分,將訊息發布至這個主題。
App Engine HTTP 目標
如果選擇「App Engine HTTP」指定類型,則必須使用與目前專案相關聯的 App Engine 應用程式和區域。如要使用目前專案以外的其他 App Engine 應用程式,請選擇「HTTP」做為目標,而非「App Engine HTTP」。目標防火牆規則必須允許來自 0.1.0.2/32 IP 範圍的要求。將格式設定如下:
在「Target type」(目標類型) 清單中,選取「App Engine HTTP」。
指定 App Engine 服務的名稱,該服務會執行 Cloud Scheduler 工作的處理常式。如果省略,系統會假設使用
default服務。如要設定,請前往Google Cloud 控制台查看服務名稱。您可以視需要指定版本。如果未設定,則會使用目前提供版本。您可以在Google Cloud 控制台中查看可用版本。
您可以視需要指定執行個體。如未設定,則可使用任何可用的執行個體。您可以在Google Cloud 控制台中查看可用版本。
指定工作要聯絡的 App Engine 端點相對網址。如果使用預設值
/,工作會使用PROJECT-ID.appspot.com,其中PROJECT-ID是目前的專案 ID。設定執行工作時要使用的 HTTP 方法。預設為
POST。在要求中新增所需標頭。
您可以視需要指定要傳送至目標的主體資料。選取
POST或PUTHTTP 方法時,這項資料會以位元組形式在要求主體中傳送。
指定的 App Engine 端點必須位於相同專案,且可使用 app.yaml 檔案中 handlers 元素上的 login: admin 保護。
HTTP 目標
如果選擇「HTTP」HTTP目標類型:指定工作會連線的端點的完整網址。
指定 HTTP 方法。預設為
POST。選用:指定要傳送至目標的資料。選取
POST或PUTHTTP 方法時,這項資料會以位元組形式在要求主體中傳送。選用:視需要新增標頭。如果目標端點要求在標頭中提供 API 金鑰,請使用目標服務預期的標頭名稱,例如
x-api-key或X-Goog-Api-Key。使用api_key做為標頭名稱可能會導致驗證失敗。如要建立需要驗證的 HTTP 目標工作,請參閱「搭配使用驗證與 HTTP 目標」。
指定的 HTTP 端點必須能夠公開存取。
您可以使用 Cloud Scheduler 設定排定的工作單元 (稱為 Cron 工作),並按照週期性排程 (也稱為工作間隔或頻率) 傳送至目標。
無論何時,都只能執行一個工作的一個執行個體。在極少數情況下,系統可能會要求同一個工作的多個執行個體。因此,要求處理常式應具備冪等性,且程式碼應確保發生這種情況時不會產生有害的副作用。
如果工作仍在執行中,或正在等待目標回應,系統會略過其他排定的工作執行作業,直到目前執行作業完成或逾時為止。詳情請參閱「後續工作執行作業未啟動」。
Cloud Scheduler 適用於重複性工作。如果只需要執行工作一次,建議使用 Cloud Tasks,最多可提前 30 天排定工作。
事前準備
選擇指定類型
Cloud Scheduler 可叫用下列類型的目標:
HTTP 端點
Pub/Sub 主題
App Engine 服務
叫用僅限內部輸入的目標服務
Cloud Scheduler 可在內部叫用下列服務:
- Cloud Run functions
- Cloud Run (在
run.app網址上,而非自訂網域)
如要在內部叫用這些目標,目標必須與 Cloud Scheduler 工作位於相同的Google Cloud 專案或 VPC Service Controls 範圍。
如要進一步瞭解如何限制輸入流量來保護目標,請參閱「限制輸入流量」(適用於 Cloud Run) 和「調整網路設定」(適用於 Cloud Run functions)。
建立工作
您可以使用 Google Cloud 控制台或 Google Cloud CLI 建立工作。
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」頁面。
按一下「Create job」(建立工作)。
在「Name」(名稱) 欄位中,輸入專案專屬的工作名稱。
刪除相關聯的工作後,您可以在專案中重複使用工作名稱。
在「Region」(區域) 清單中選取區域。
如果您使用 App Engine HTTP 目標,則必須選擇與 App Engine 應用程式相同的區域。詳情請參閱「目標支援的區域」。
選用:提供工作的簡短說明,例如工作內容提醒。
這項說明會顯示在控制台的工作名稱旁。
使用設定字串指定工作執行頻率。
例如,字串
0 1 * * 0會在每週日凌晨 1 點執行工作一次。您在此提供的字串可以是任何與 unix-cron 相容的字串。詳情請參閱「設定 Cron 工作時間表」。在「Timezone」(時區) 清單中,選擇要用於工作排程的時區。
按一下「繼續」。
指定「Target type」(目標類型):
Pub/Sub:您必須指定已在專案中設定的 Pub/Sub 主題名稱,工作會發布至該主題。
App Engine HTTP:必須使用與目前專案相關聯的 App Engine 應用程式和區域。
按一下「繼續」。
選用:如要設定任何重試行為,請按一下「Configure optional settings」(設定選用設定)。如要指定時間長度,請使用一連串非負十進位整數,並加上下列單位後置字元:
- h - 小時
- m - 分鐘
- s - 秒
- ms - 毫秒
- us - 微秒
- ns - 奈秒
不得輸入負數和小數。
Max retry duration欄位僅支援h、m和s值。Min backoff duration和Max backoff duration都支援完整組合。選用:如果是 HTTP 和 App Engine HTTP 目標,請設定工作嘗試的期限。如果要求處理常式未在這個期限前回應,系統會取消要求,並將嘗試標示為失敗。Cloud Scheduler 會根據重試設定重試工作。
如要建立並儲存工作,請按一下「Create」(建立)。
工作現在會按照指定頻率執行。
gcloud
使用 gcloud CLI 建立工作時,請依目標類型使用不同的指令:
HTTP
您可以將要求傳送至任何 HTTP 或 HTTPS 端點。目標 HTTP 端點必須可公開存取。
gcloud scheduler jobs create http JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --uri=URI
更改下列內容:
JOB:: 專案內不得重複的工作名稱。請注意,即使刪除相關聯的工作,也無法在專案中重複使用工作名稱。LOCATION:執行工作的位置。SCHEDULE:工作執行頻率或工作間隔,例如every 3 hours。您在此提供的字串可以是任何與 unix-cron 相容的字串。雖然我們不再建議使用舊版 App Engine cron 語法,但現有工作仍支援此語法。詳情請參閱「設定 Cron 工作時間表」。
URI:工作會聯絡的端點完整 URI。
其他參數請參閱 gcloud 指令列參考資料:
選用:指定 HTTP 方法。預設為
POST。選用:指定要傳送至目標的資料。選取
POST或PUTHTTP 方法時,這項資料會以位元組形式在要求主體中傳送。選用:使用
--headers旗標加入 HTTP 要求標頭。如果目標端點要求標頭中包含 API 金鑰,請使用目標服務預期的標頭名稱,例如x-api-key或X-Goog-Api-Key。使用api_key做為標頭名稱可能會導致驗證失敗。選用:設定重試值,指定 App Engine 工作失敗時的重試方式。在多數情況下,預設值就足夠。
如要建立需要驗證的 HTTP 目標工作,請參閱「搭配使用驗證與 HTTP 目標」。
範例
gcloud scheduler jobs create http my-http-job \ --schedule "0 1 * * 0" \ --uri "http://myproject/my-url.com" \ --http-method GET
Pub/Sub
您必須使用已在專案中設定的 Pub/Sub 主題。Cloud Scheduler 會以 Google API 服務帳戶的身分,將訊息發布至這個主題。
gcloud scheduler jobs create pubsub JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --topic=TOPIC
更改下列內容:
JOB:: 專案內不得重複的工作名稱。請注意,即使刪除相關聯的工作,也無法在專案中重複使用工作名稱。LOCATION:執行工作的位置。SCHEDULE:工作執行頻率或工作間隔,例如every 3 hours。您在此提供的字串可以是任何與 unix-cron 相容的字串。雖然我們不再建議使用舊版 App Engine cron 語法,但現有工作仍支援此語法。詳情請參閱「設定 Cron 工作時間表」。
TOPIC:工作要發布到的主題名稱。使用--message-body或--message-body-from-file旗標,指定要傳送至主題的訊息。這項資訊會以 Pub/Sub 訊息中的data參數形式傳送。如需範例,請參閱快速入門導覽課程。
如需其他參數的說明,請參閱 gcloud 指令列參考資料。
範例
gcloud scheduler jobs create pubsub myjob \ --schedule "0 1 * * 0" \ --topic cron-topic \ --message-body "Hello"
App Engine HTTP
App Engine HTTP 目標僅適用於與目前專案相關聯的 App Engine 應用程式。如要使用目前專案以外的其他 App Engine 應用程式,請選擇 HTTP 做為目標,而非 App Engine HTTP。目標防火牆規則必須允許來自 0.1.0.2/32 IP 範圍的要求。
您可以在 app.yaml 檔案中,使用 handlers 元素上的 login: admin 保護 App Engine 端點。
gcloud scheduler jobs create app-engine \ --JOB=JOB \ --location=LOCATION \ --schedule=SCHEDULE
更改下列內容:
JOB:: 專案內不得重複的工作名稱。請注意,即使刪除相關聯的工作,也無法在專案中重複使用工作名稱。LOCATION:執行工作的位置。這個位置必須與 App Engine 應用程式的位置相同。SCHEDULE:工作執行頻率或工作間隔,例如every 3 hours。您在此提供的字串可以是任何與 unix-cron 相容的字串。雖然我們不再建議使用舊版 App Engine cron 語法,但現有工作仍支援此語法。詳情請參閱「設定 Cron 工作時間表」。
其他參數請參閱 gcloud 指令列參考資料:
指定工作要聯絡的 App Engine 端點相對網址。如果使用預設值
/,工作會使用PROJECT-ID.appspot.com,其中PROJECT-ID是目前的專案 ID。指定 App Engine 服務的名稱,該服務會執行 Cloud Scheduler 工作的處理常式。如果省略,系統會假設使用
default服務。如要設定,請前往Google Cloud 控制台查看服務名稱。選用:設定工作執行時要使用的 HTTP 方法。預設為
POST。選用:指定版本。如未設定,則會使用目前提供服務的版本。您可以在Google Cloud 控制台中查看可用版本。
選用:指定執行個體。如果未設定,則可使用任何可用的執行個體。您可以在Google Cloud 控制台中查看可用版本。
選用:指定要傳送至目標的資料。選取
POST或PUTHTTP 方法時,這項資料會以位元組形式在要求主體中傳送。選用:設定重試值,指定 App Engine 工作失敗時的重試方式。在多數情況下,預設值就足夠。
範例
gcloud scheduler jobs create app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
編輯工作
您可以編輯工作設定。
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」頁面。
選取要編輯的工作。
按一下 [編輯]。
建立工作時,請按照步驟定義時間表、設定執行作業,以及調整選用設定。
gcloud
使用 gcloud CLI 編輯工作時,請根據目標類型使用不同的指令:
HTTP
您可以將要求傳送至任何 HTTP 或 HTTPS 端點。目標 HTTP 端點必須可公開存取。
gcloud scheduler jobs update http JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --uri=URI
更改下列內容:
JOB: 專案內不得重複的工作名稱。請注意,即使刪除相關聯的工作,也無法在專案中重複使用工作名稱。LOCATION:工作執行的位置。如未指定位置,gcloud CLI 會使用預設位置。如果要編輯的工作位於其他位置,除了NAME之外,您還必須指定位置,才能識別工作。無法更新工作位置。SCHEDULE:工作執行頻率或工作間隔,例如every 3 hours。您在此提供的字串可以是任何與 unix-cron 相容的字串。雖然我們不再建議使用舊版 App Engine cron 語法,但現有工作仍支援此語法。詳情請參閱「設定 Cron 工作時間表」。
URI:工作會聯絡的端點完整 URI。
如需其他參數的說明,請參閱 gcloud 指令列參考資料。
範例
gcloud scheduler jobs update http my-http-job \ --schedule "0 1 * * 0" \ --uri "http://myproject/my-url.com" \ --http-method GET
Pub/Sub
您必須使用已在專案中設定的 Pub/Sub 主題。Cloud Scheduler 會以 Google API 服務帳戶的身分,將訊息發布至這個主題。
gcloud scheduler jobs update pubsub JOB \ --location=LOCATION \ --schedule=SCHEDULE \ --topic=TOPIC
更改下列內容:
JOB: 專案內不得重複的工作名稱。請注意,即使刪除相關聯的工作,也無法在專案中重複使用工作名稱。LOCATION:工作執行的位置。如未指定位置,gcloud CLI 會使用預設位置。如果想編輯的工作位於其他位置,除了NAME之外,您還必須指定位置,才能識別工作。無法更新工作位置。SCHEDULE:工作執行頻率或工作間隔,例如every 3 hours。您在此提供的字串可以是任何與 unix-cron 相容的字串。雖然我們不再建議使用舊版 App Engine cron 語法,但現有工作仍支援此語法。詳情請參閱「設定 Cron 工作時間表」。
TOPIC:工作要發布到的主題名稱。使用--message-body或--message-body-from-file旗標,指定要傳送至主題的訊息。這項資訊會以 Pub/Sub 訊息中的data參數形式傳送。如需範例,請參閱快速入門導覽課程。
如需其他參數的說明,請參閱 gcloud 指令列參考資料。
範例
gcloud scheduler jobs update pubsub myjob \ --schedule "0 1 * * 0" \ --topic cron-topic --message-body "Hello"
App Engine HTTP
App Engine HTTP 目標僅適用於與目前專案相關聯的 App Engine 應用程式。如要使用目前專案以外的其他 App Engine 應用程式,請選擇 HTTP 做為目標,而非 App Engine HTTP。
您可以在 app.yaml 檔案中,使用 handlers 元素上的 login: admin 保護 App Engine 端點。
gcloud scheduler jobs update app-engine JOB \ --location=LOCATION \ --schedule=SCHEDULE
更改下列內容:
JOB: 專案內不得重複的工作名稱。請注意,即使刪除相關聯的工作,也無法在專案中重複使用工作名稱。LOCATION:工作執行的位置 (與目標 App Engine 應用程式的位置相同)。如未指定位置,gcloud CLI 會使用預設位置。如果想編輯的工作位於其他位置,除了NAME之外,您還必須指定位置,才能識別工作。無法更新工作位置。SCHEDULE:工作執行頻率或工作間隔,例如every 3 hours。您在此提供的字串可以是任何與 unix-cron 相容的字串。雖然我們不再建議使用舊版 App Engine cron 語法,但現有工作仍支援此語法。詳情請參閱「設定 Cron 工作時間表」。
如需其他參數的說明,請參閱 gcloud 指令列參考資料。
範例
gcloud scheduler jobs update app-engine my-appengine-job \ --schedule "0 1 * * 0" \ --relative-url "/cron-handler"
暫停工作
您可以暫停執行工作。
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」。
選取要暫停的工作。
點選「暫停」。
gcloud
在安裝 gcloud CLI 的機器上開啟終端機視窗。
執行下列指令:
gcloud scheduler jobs pause MY_JOB將
MY_JOB替換為要暫停的工作名稱。
您也可以在工作暫停時編輯工作。編輯工作後,工作會維持暫停狀態,直到您繼續執行為止。
繼續執行工作
您可以繼續執行已暫停的工作。
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」。
選取要繼續執行的工作。
工作必須已暫停。
按一下「繼續」。
gcloud
在安裝 gcloud CLI 的機器上開啟終端機視窗。
執行下列指令:
gcloud scheduler jobs resume MY_JOB將
MY_JOB替換為要繼續執行的工作名稱。
刪除工作
您可以刪除工作。
控制台
前往 Google Cloud 控制台的「Cloud Scheduler」。
選取要刪除的工作。
點選「刪除」。
gcloud
在安裝 gcloud CLI 的機器上開啟終端機視窗。
執行下列指令:
gcloud scheduler jobs delete MY_JOB將
MY_JOB替換為要刪除的工作名稱。