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 範圍的要求。將格式設定如下:
在「目標類型」清單中,選取「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
或PUT
HTTP 方法,這個資料會在要求主體中以位元組形式傳送。
目標 App Engine 端點必須位於相同專案,且可使用 app.yaml
檔案中 handlers
元素上的 login: admin
確保安全性。
HTTP 目標
如果您選擇 HTTP 目標類型:指定工作會連線的端點的完整網址。
指定 HTTP 方法。預設為
POST
。或者指定要傳送至目標的資料。如果選擇
POST
或PUT
HTTP 方法,這個資料會在要求主體中以位元組形式傳送。新增所需標頭。
如要建立需要驗證的 HTTP 目標工作,請參閱「使用驗證搭配 HTTP 目標」。
指定的 HTTP 端點必須能夠公開存取。
您可以使用 Cloud Scheduler 來設定工作的排程單元 (也稱為「Cron 工作」),根據一些週期性排程 (也稱為「工作間隔」或「頻率」),將 Cron 工作定期傳送到目標。
無論何時,都只能執行一個工作的一個執行個體。在極少數情況下,系統可能會收到針對相同工作的多個要求。因此,您的要求處理常式應為冪等,而且您的程式碼應確保冪等不會產生有害的副作用。
Cloud Scheduler 適用於重複性工作。如果只需要執行一次作業,建議使用 Cloud Tasks,最多可提前 30 天排定工作。
事前準備
選擇目標類型
Cloud Scheduler 可以叫用下列類型的目標:
HTTP 端點
Pub/Sub 主題
App Engine 服務
叫用僅限內部 Ingress 的目標服務
Cloud Scheduler 可在內部叫用下列服務:
- Cloud Run 函式
- 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 工作時間表」。在「時區」清單中,選擇工作時間表要使用的時區。
按一下「繼續」。
指定「目標類型」:
Pub/Sub:您必須指定已在專案中設定的 Pub/Sub 主題名稱,工作會發布至該主題。
App Engine HTTP:您必須使用與目前專案相關聯的 App Engine 應用程式和區域。
按一下「繼續」。
如要設定任何重試行為,請按一下「設定選用設定」。如要指定時間長度,請使用一系列十進位非負整數,並加上下列單位後置字元:
- 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
或PUT
HTTP 方法,這個資料會在要求主體中以位元組形式傳送。或者設定重試值,指定作業失敗時要如何重試 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 Engine 端點可以使用 app.yaml
檔案中 handlers
元素上的 login: admin
確保安全性。
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
或PUT
HTTP 方法,這個資料會在要求主體中以位元組形式傳送。或者設定重試值,指定作業失敗時要如何重試 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 Engine 端點可以使用 app.yaml
檔案中 handlers
元素上的 login: admin
確保安全性。
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
替換為要刪除的工作名稱。