触发器是触发函数执行的方式。在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器提供了一种集中、统一的方式来管理不同的事件源。在事件源中,当事件发生时,如果满足触发器定义的规则,事件源会自动调用触发器关联的函数。
什么是触发器
函数计算提供了一种事件驱动的计算模型。函数的执行是由事件驱动的。函数的执行可以通过函数计算控制台或SDK触发,也可以由其他一些事件源来触发。您可以在指定函数中创建触发器,该触发器描述了一组规则,当某个事件满足这些规则,事件源就会触发关联的函数。
如果您需要使用一个触发器触发多个函数,可以结合使用函数计算和Serverless 工作流服务。首先通过触发器触发一个函数,该函数启动Serverless 工作流流程,然后在流程里您可以调用多个函数。更多信息,请参见示例。
场景示例
示例一 :对象存储OSS中的图片状态变更触发函数执行
某应用使用对象存储OSS存放上传的图片,您可以通过直接调用函数的方式去下载图片进行处理,并将结果存入对象存储OSS或者其他服务。如果对象存储OSS能够帮助我们关注新上传的图片,并且自动去调用关联的函数,您无需再调用函数,从而简化了开发和使用流程。OSS触发器的作用就是关注这些事件并调用函数计算的函数。配置了OSS触发器后,当有新图片上传,OSS触发器会自动触发函数下载并处理图片。
示例二:日志服务SLS中日志更新触发函数执行
某应用使用日志服务SLS定时采集更新的日志,您可以通过直接调用函数对增量的日志进行查询和分析。如果日志服务SLS能够帮助我们关注更新的日志,并自动调用关联的函数,您无需再调用函数。SLS触发器的作用就是关注这些事件并调用函数计算的函数。配置了SLS触发器后,当有日志更新,SLS触发器会自动触发函数消费增量的日志。
示例三:在指定时间触发函数执行
某应用需要每隔1小时收集一次数据。您可以每隔1小时通过直接调用函数收集数据并处理。如果函数计算中的函数能每隔1小时自动执行,您无需再关注时间。定时触发器的作用就是关注时间事件并调用函数计算的函数。配置了定时触发器后,在指定的时间,定时触发器会自动触发函数收集和处理数据。
触发器类型
按照触发器集成方式,函数计算支持的触发器分为以下两类:
双向集成触发器:您既可以在函数计算,又可以在事件源端配置触发器。
云产品事件触发器:支持在函数计算配置触发器,同时支持在事件总线EventBridge创建函数触发规则,无需在事件源端配置。
从函数调用方式的角度,触发器又可以分为同步调用触发器和异步调用触发器,两种调用方式的区别如下所示。更多信息,请参见同步调用。
同步调用:事件被函数处理后直接返回结果。例如,使用控制台调用函数属于同步调用。
异步调用:事件在写入到函数计算内部队列后返回结果,函数计算系统会保证该消息被可靠地处理。
双向集成触发器
触发器名称 | 调用方式 | 文档链接 | |
定时触发器 | 异步调用 | ||
对象存储OSS触发器 | 异步调用 | ||
日志服务SLS触发器 | 同步调用 | ||
CDN触发器 | 同步调用 | ||
表格存储Tablestore触发器 | 同步调用 | ||
轻量消息队列(原 MNS)topic触发器 | 异步调用 | ||
自建Apache RocketMQ触发器 | 同步/异步调用 | ||
HTTP触发器 | 同步/异步调用 | ||
通过事件总线EventBridge实现的触发器 | 轻量消息队列(原 MNS)queue触发器 | 同步/异步调用 | |
消息队列RocketMQ版触发器 | 同步/异步调用 | ||
消息队列RabbitMQ版触发器 | 同步/异步调用 | ||
消息队列Kafka版触发器 | 同步/异步调用 | ||
消息队列MQTT版触发器 | 同步/异步调用 | ||
数据传输服务DTS触发器 | 同步/异步调用 |
云产品事件触发器
触发器名称 | 调用方式 | 示例链接 |
阿里云官方事件源触发器 | 同步/异步调用 |