edit-icon download-icon

タイムトリガーの例

最終更新日: Nov 30, 2018

関数を呼び出すためにトリガーが使用できます。イベントによって関数が自動的にトリガーされる場合、このイベントはイベントソースと呼ばれます。トリガーを設定することでイベントソースを設置し、関数の実行を発火させます。

例えば、タイムトリガーを設定することで、特定な時点で関数を実行させます。

内容

このチュートリアルでは、タイムトリガーが、Function Compute コンソール、およびコマンドラインツール fcli、 または SDK を使用して関数を呼び出す方法について説明します。トリガーは、 Hello World の例testHelloWorld 関数を 5 分ごとに呼び出します。タイムトリガーを設定するには、次のいずれかの方法を選択します。

Function Compute コンソールでタイムトリガーを作成する

タイムトリガーの作成を開始する前に、「コンソールの使用方法」および「タイムトリガー」を読むことをお勧めします。関数の作成中または作成後に、タイムトリガーを設定できます。「トリガー操作」をご参照ください。この例では、関数を作成した後にタイムトリガーを設定する方法について説明します。

  1. 関数実行ページで、[トリガー] - > [トリガーの設定] - > [タイムトリガー] をクリックします。このページでは、タイムトリガーの名前と間隔、または cron 式を設定できます。イベント Payload は、関数がタイマートリガーに呼び出されたときの入力パラメータです。console screenshot

  2. 設定が完了したら、指定した時刻に関数が呼び出されることを確認するために、関数ログをチェックします。Log Service コンソールで、または fcli ツールを使用して、関数ログを確認できます。詳細は、「関数ログ」をご参照ください。

fcli ツールを使用してタイムトリガーを作成する

Hello World の例が完了したら、新しくタイムトリガーを作成します。サービス名は demo 、関数名は testTHelloWorld 、タイムトリガー名は time-trigger とします。

  1. fcli の対話モードに入ります。

    1. # get into service
    2. >>> cd demo
    3. # get into function
    4. >>> cd testHelloWorld
  2. トリガーを作成します。

    1. >>> mkt time-trigger -t timer -c timeTriggerConfig.yaml
    • -t はトリガーのタイプを指定します。
    • -c は設定ファイルを指定します。

mkt --help を使用して、トリガーに関する詳細情報を得ることができます。logs testHelloWorld を使用して、関数ログをチェックし、関数が指定どおりに呼び出されたことを確認できます。

SDK を使用してタイムトリガーを作成する

複数言語の SDK の詳細については、「SDK リスト」をご参照ください。

Python SDK の例

  1. import fc2
  2. client = fc2.Client(
  3. endpoint = '<Your Endpoint>',
  4. accessKeyID = '<Your AccessKeyID>',
  5. accessKeySecret = '<Your AccessKeySecret>')
  6. service_name = '<service_name>'
  7. function_name = '<function_name>'
  8. trigger_name = '<trigger_name>'
  9. trigger_type = 'timer'
  10. trigger_config = {
  11. 'payload': 'awesome-fc',
  12. 'cronExpression': '0 0 0/5 * * ?',
  13. 'enable': True
  14. }
  15. client.create_trigger(service_name, function_name,
  16. trigger_name, trigger_type, trigger_config, None, None)

Nodejs SDK の例

  1. 'use strict';
  2. var fs =require('fs')
  3. var FCClient = require('@alicloud/fc2');
  4. var client = new FCClient('<accountId>', {
  5. accessKeyID: '<accessKeyID>',
  6. accessKeySecret: '<accessKeySecret>',
  7. region: 'cn-shanghai',
  8. timeout: 10000 // Request timeout in milliseconds, default is 10s
  9. });
  10. var serviceName = '<serviceName>';
  11. var funcName = '<fuctionName>';
  12. var triggerName = '<triggerName>'
  13. var timeTriggerConfig = {
  14. payload: 'awesome-fc',
  15. cronExpression: '0 0 0/5 * * ?',
  16. enable: true
  17. }
  18. client.createTrigger(serviceName, funcName,{
  19. triggerName: triggerName,
  20. triggerType: 'timer',
  21. triggerConfig: timeTriggerConfig
  22. } ).then(function(res) {
  23. console.log('create trigger: %j', res)
  24. }).catch(function(err){
  25. console.error(err)
  26. })

Java SDK の例

  1. import com.aliyuncs.fc.client.FunctionComputeClient;
  2. import com.aliyuncs.fc.model.TimeTriggerConfig;
  3. import com.aliyuncs.fc.request.*;
  4. import com.aliyuncs.fc.response.*;
  5. import java.io.IOException;
  6. public class testTimeTrigger {
  7. private static final String REGION = "cn-shanghai";
  8. private static final String SERVICE_NAME = "<service_name>";
  9. private static final String FUNCTION_NAME = "<function_name>";
  10. public static void main(final String[] args) throws IOException {
  11. String accountId = "<accountId>";
  12. String accessKey = "<accessKey";
  13. String accessSecretKey = "accessSecretKey";
  14. // Initialize FC client
  15. FunctionComputeClient fcClient = new FunctionComputeClient(REGION, accountId, accessKey, accessSecretKey);
  16. String cronEvery = "@every 5m";
  17. String payload = "awesome-fc";
  18. String triggerName = "time-trigger";
  19. CreateTriggerRequest createTReq = new CreateTriggerRequest(SERVICE_NAME, FUNCTION_NAME);
  20. TimeTriggerConfig timeTriggerConfig = new TimeTriggerConfig(cronEvery, payload, true);
  21. createTReq.setTriggerName(triggerName);
  22. createTReq.setTriggerType("timer");
  23. createTReq.setTriggerConfig(timeTriggerConfig);
  24. CreateTriggerResponse createTriggerResponse = fcClient.createTrigger(createTReq);
  25. }
  26. }

関連記事