定時觸發器會根據您設置的特定時間點或周期性規則自動觸發函數執行,為您提供靈活的任務調度能力,適合需要定期執行任務的應用場景。
使用場景
定時觸發器的使用場景非常廣泛,包括但不限于以下場景:
批量數據的定時處理,例如每1小時收集全量數據并生成報表。
日常行為的調度,例如整點發送優惠券。
與業務解耦的異步任務,例如每天0點清理數據。
前提條件
步驟一:創建定時觸發器
登錄函數計算控制臺,在左側導航欄,單擊服務及函數。
在頂部菜單欄,選擇地域,然后在服務列表頁面,單擊目標服務操作列的函數管理。
在函數管理頁面,單擊目標函數名稱。
在函數詳情頁面,單擊觸發器管理頁簽,從版本或別名下拉列表選擇要創建觸發器的版本或別名,然后單擊創建觸發器。
在創建觸發器面板,填寫相關信息。然后單擊確定。
參數
操作
本文示例
觸發器類型
選擇定時觸發器。
定時觸發器
名稱
填寫自定義的觸發器名稱。
timer-trigger
版本或別名
默認值為LATEST,如果您需要創建其他版本或別名的觸發器,需先在函數詳情頁的右上角切換到該版本或別名。關于版本和別名的簡介,請參見管理版本和管理別名。
LATEST
觸發方式
根據需要選擇觸發方式:
時間間隔:在時間間隔文本框輸入正整數n,表示每n分鐘觸發一次函數執行。
指定時間:選擇時區,并指定日期、星期和時間,表示在某時區的指定時間觸發一次函數執行。
自定義:在CRON 表達式文本框中輸入Cron表達式,表示按照Cron表達式指定的時間點觸發函數執行。
時間間隔
觸發消息
輸入自定義的參數。該觸發消息將會作為event中payload的值。
awesome-fc
如果您對時區有特殊要求,需要自定義CRON 表達式,請參見如下時間表達式的說明。
Cron表達式(UTC時間)
Cron表達式默認以UTC時間運行,即北京時間減去8個小時。例如北京時間每天12:00調度函數,那么轉化為UTC時間就是每天4:00調度函數,則可以使用
0 0 4 * * *
。Cron表達式(北京時間)
如果您的任務需要按照特定時區運行,可以通過CRON_TZ指定,例如在北京時間每個月一號的04:00觸發函數執行,則可以使用
CRON_TZ=Asia/Shanghai 0 0 4 1 * *
。不同地域的時區表達式存在差異,請以實際情況為準。說明如果您使用的時區存在夏令時和冬令時的區分,在夏令時和冬令時切換的過程中可能會出現重復執行或少執行的情況,建議將執行時間設置在夏令時和冬令時切換的時間段外。
創建完成后,在觸發器名稱列表中顯示已創建的觸發器。如需對創建的觸發器進行修改或刪除,具體操作,請參見觸發器管理。
步驟二:配置函數的入口參數
在函數詳情頁面,單擊函數代碼頁簽,然后單擊測試函數右側圖標,從下拉列表中,選擇配置測試參數。
在配置測試參數面板,選擇創建新測試事件或編輯已有測試事件頁簽,填寫事件名稱和事件內容。然后單擊確定。
定時觸發器會按照以下event格式來觸發函數。
{ "triggerTime":"2023-12-26T07:49:00Z", "triggerName":"timer-trigger", "payload":"awesome-fc" }
參數
類型
示例值
描述
triggerTime
String
2023-12-26T07:49:00Z
函數被觸發的時間。
triggerName
String
timer-trigger
定時觸發器的名稱。
payload
String
awesome-fc
您在觸發器配置里輸入的自定義參數,即觸發消息的值。
步驟三:編寫函數代碼并測試
完成創建定時觸發器后,您可以編寫函數代碼并測試以驗證代碼的正確性。在實際操作過程中當到達指定的時間時,定時觸發器會自動觸發函數執行。
在函數詳情頁面,單擊函數代碼頁簽,在代碼編輯器中編寫代碼,然后單擊部署代碼。
本文以Python函數代碼為例,示例代碼如下。
import json import logging logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # Parse the json evt = json.loads(event) triggerName = evt["triggerName"] triggerTime = evt["triggerTime"] payload = evt["payload"] logger.info('triggerName: %s', triggerName) logger.info("triggerTime: %s", triggerTime) logger.info("payload: %s", payload) return 'Timer Payload: ' + payload
單擊函數代碼頁簽的測試函數。
執行完成后,您可以在函數代碼頁簽的上方查看執行結果。
相關文檔
如果您配置的定時觸發器不能觸發函數執行,請先排查設置的觸發方式及對應的時間。如果您設置的為自定義CRON 表達式,默認是UTC時間。具體排查方法請參見觸發器不能正常觸發函數執行怎么辦?。
如果您已經在當前函數創建了一個HTTP觸發器,則不支持再創建其他類型的觸發器。您可以重新創建一個事件函數設置對應的觸發器,在代碼中訪問HTTP函數。具體請參見使用SDK執行HTTP函數。
如果您使用定時觸發器,執行時長則會根據實例是按量模式還是預留模式進行統計。具體的統計方式請參見基本概念。