時間トリガーは、指定された時間または間隔で関数を自動的に実行します。この機能は、定期的な実行を必要とするシナリオに柔軟なタスクスケジューリングを提供します。
シナリオ
時間トリガーは、幅広いシナリオで使用できます。一般的なシナリオは次のとおりです。
毎時の完全データ収集やレポート生成など、データの定期的なバッチ処理。
毎時正時のクーポン送信など、毎日のアクションのスケジューリング。
毎日 00:00 のデータクリーニングなど、ビジネスロジックから切り離された非同期タスクの実行。
前提条件
ステップ 1: 時間トリガーの作成
Function Compute コンソールにログインします。左側のナビゲーションウィンドウで、 を選択します。
上部のナビゲーションバーでリージョンを選択します。[関数] ページで、対象の関数をクリックします。
関数の詳細ページで、[トリガー] タブをクリックし、[トリガーの作成] をクリックします。
[トリガーの作成] パネルでパラメーターを設定し、[OK] をクリックします。
パラメーター
手順
例
トリガータイプ
[時間トリガー] を選択します。
時間トリガー
名前
トリガーのカスタム名を入力します。
my_trigger
バージョンまたはエイリアス
デフォルト値は [LATEST] です。別のバージョンまたはエイリアスのトリガーを作成する場合は、まず関数詳細ページの右上隅でそのバージョンまたはエイリアスに切り替えます。バージョンとエイリアスの詳細については、「バージョンの管理」および「エイリアスの管理」をご参照ください。
LATEST
トリガーメソッド
必要に応じてトリガーメソッドを選択します:
[間隔]: [間隔] テキストボックスに正の整数 n を入力します。関数は n 分ごとにトリガーされます。
[指定時刻]: タイムゾーンを選択し、日付、曜日、時刻を指定します。関数は、そのタイムゾーンの指定された時刻にトリガーされます。
[カスタム]: [CRON 式] テキストボックスに cron 式を入力します。関数は cron 式で指定された時刻にトリガーされます。
間隔
トリガーメッセージ
カスタムメッセージを入力します。トリガーメッセージは、イベントの payload の値として使用されます。
トリガーメッセージのサイズは 128 KB に制限されており、これは非同期呼び出しのペイロード制限と同じです。
awesome-fc
特定のタイムゾーン要件があり、カスタムの [CRON 式] を使用する必要がある場合は、次の時間式の説明をご参照ください。
Cron 式 (UTC)
デフォルトでは、cron 式は協定世界時 (UTC) に基づいています。UTC は UTC+8 タイムゾーンより 8 時間遅れています。たとえば、毎日 12:00 (UTC+8) に関数を実行するようにスケジュールするには、この時刻を 04:00 (UTC) に変換する必要があります。対応する cron 式は
0 0 4 * * *です。Cron 式 (UTC+8)
タスクを特定のタイムゾーンで実行する必要がある場合は、CRON_TZ を使用して指定できます。たとえば、UTC+8 タイムゾーンで毎月 1 日の 04:00 に関数をトリガーするには、式
CRON_TZ=Asia/Shanghai 0 0 4 1 * *を使用します。タイムゾーン式はリージョンによって異なります。お使いのリージョンに適用される式を使用してください。説明お使いのタイムゾーンで夏時間 (DST) が採用されている場合、移行中にトリガーが 2 回実行されたり、スキップされたりすることがあります。これを避けるため、DST が変更される時間帯にタスクをスケジュールしないでください。
トリガーが作成されると、[トリガー名] リストに表示されます。トリガーを変更または削除するには、「トリガーの管理」をご参照ください。
ステップ 2: 関数の入力パラメーターの設定
関数詳細ページの[コード] タブで、[テスト関数] の横にある
アイコンをクリックし、ドロップダウンリストから [テストパラメーターの設定] を選択します。[テストパラメーターの設定] パネルで、[新しいテストイベントの作成] または [既存のテストイベントの編集] を選択し、イベント名とイベント内容を入力して、[OK] をクリックします。
時間トリガーは、次のフォーマットを使用するイベントで関数を呼び出します。
{ "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
トリガー設定で [トリガーメッセージ] パラメーターに入力したカスタムメッセージ。
ステップ 3: 関数コードの記述とテスト
時間トリガーを作成したら、関数コードを記述してテストし、正しく動作することを確認します。時間トリガーは、指定された時刻に関数を自動的に実行します。
関数詳細ページの [コード] タブで、コードエディタにコードを記述し、[コードのデプロイ] をクリックします。
このトピックでは Python を例として使用します。次のサンプルコードをご参照ください。
import json import logging logger = logging.getLogger() def handler(event, context): logger.info('event: %s', event) # 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 式] で指定する cron 式は UTC を使用することに注意してください。詳細については、「トリガーが関数実行をトリガーできない場合はどうすればよいですか?」をご参照ください。