触发器是触发函数执行的方式。在事件驱动的计算模型中,事件源是事件的生产者,函数是事件的处理者,而触发器提供了一种集中、统一的方式来管理不同的事件源。在事件源中,当事件发生时,如果满足触发器定义的规则,事件源会自动调用触发器关联的函数。

什么是触发器

函数计算提供了一种事件驱动的计算模型。函数的执行是由事件驱动的。函数的执行可以通过函数计算控制台SDK触发,也可以由其他一些事件源来触发。您可以在指定函数中创建触发器,该触发器描述了一组规则,当某个事件满足这些规则,事件源就会触发关联的函数。

说明

如果您需要使用一个触发器触发多个函数,可以结合使用函数计算Serverless工作流服务。首先通过触发器触发一个函数,该函数启动Serverless工作流流程,然后在流程里您可以调用多个函数。更多信息,请参见示例

场景示例

  • 示例一 :对象存储OSS中的图片状态变更触发函数执行

    某应用使用对象存储OSS存放上传的图片,您可以通过直接调用函数的方式去下载图片进行处理,并将结果存入对象存储OSS或者其他服务。如果对象存储OSS能够帮助我们关注新上传的图片,并且自动去调用关联的函数,您无需再调用函数,从而简化了开发和使用流程。OSS触发器的作用就是关注这些事件并调用函数计算的函数。配置了OSS触发器后,当有新图片上传,OSS触发器会自动触发函数下载并处理图片。

  • 示例二:日志服务SLS中日志更新触发函数执行

    某应用使用日志服务SLS定时采集更新的日志,您可以通过直接调用函数对增量的日志进行查询和分析。如果日志服务SLS能够帮助我们关注更新的日志,并自动调用关联的函数,您无需再调用函数。SLS触发器的作用就是关注这些事件并调用函数计算的函数。配置了SLS触发器后,当有日志更新,SLS触发器会自动触发函数消费增量的日志。

  • 示例三:在指定时间触发函数执行

    某应用需要每隔1小时收集一次数据。您可以每隔1小时通过直接调用函数收集数据并处理。如果函数计算中的函数能每隔1小时自动执行,您无需再关注时间。定时触发器的作用就是关注时间事件并调用函数计算的函数。配置了定时触发器后,在指定的时间,定时触发器会自动触发函数收集和处理数据。

触发器类型

按照触发器集成方式,函数计算支持的触发器分为双向集成触发器、单向集成触发器和EventBridge触发器,三类触发器的区别如下:
  • 双向集成触发器:您既可以在函数计算又可以在事件源端配置触发器。
  • 单向集成触发器:目前只支持在事件源端配置触发器。
  • EventBridge触发器:支持在函数计算配置触发器,同时支持在事件总线EventBridge创建函数触发规则,无需在事件源端配置。
从函数调用方式的角度,触发器又可以分为同步调用触发器和异步调用触发器,两种调用方式的区别如下所示。更多信息,请参见同步调用
  • 同步调用:事件被函数处理后直接返回结果。例如,使用控制台调用函数属于同步调用。
  • 异步调用:事件在写入到函数计算内部队列后返回结果,函数计算系统会保证该消息被可靠地处理。

双向集成触发器

触发器名称 调用方式 文档链接
定时触发器 异步调用 定时触发器概述
OSS触发器 异步调用 OSS触发器概述
SLS触发器 同步调用 SLS触发器
CDN事件触发器 同步调用 CDN事件触发器概述
Tablestore触发器 同步调用 Tablestore触发器概述
MNS主题触发器 异步调用 MNS主题触发器
HTTP触发器 同步调用 HTTP触发器概述

单向集成触发器

触发器名称 调用方式 示例链接
API网关触发器 同步调用 API网关触发器概述
DataHub单向触发器 同步调用 DataHub单向触发器

EventBridge触发器

触发器名称 调用方式 示例链接
消息队列RocketMQ版触发器 同步调用 RocketMQ触发器
消息队列RabbitMQ版触发器 同步调用 RabbitMQ触发器
消息服务MNS队列触发器 同步调用 MNS队列触发器
消息队列Kafka版 同步调用 Kafka触发器
阿里云官方事件源触发器 同步调用 阿里云产品事件触发器