函数触发器概述
函数触发器介绍
触发器是FunctionGraph中用于启动函数执行的重要机制。当其他云服务作为事件源检测到特定事件时,触发器会根据预定义的规则自动调用关联的函数,从而实现事件的实时处理。FunctionGraph支持的触发事件请参见FunctionGraph支持的触发事件。
每个事件传递到函数时,仅包含与该触发器相关的事件数据,事件数据以结构化的JSON格式传递,FunctionGraph会将事件数据转换为函数处理程序可以使用的对象。根据具体业务需求,一个函数可以配置一个或多个触发器,每个触发器都可以独立地调用函数。
函数触发器的调用方式
根据函数调用方式,函数的触发器可分为同步调用和异步调用。关于函数调用的更多说明请参见调用函数。
- 同步调用:客户端调用函数后,FunctionGraph会立即执行函数,等函数执行完成后再向客户端返回响应和执行结果。
- 异步调用:客户端调用函数后,FunctionGraph会将请求排队,不等待函数的执行结果,直接向客户端返回响应,FunctionGraph会在系统空闲的情况下逐个处理排队的请求。
触发器 |
调用方式 |
---|---|
API网关服务(APIG专享版)触发器 |
默认为同步调用,但可以修改为异步调用,具体配置方式请参考配置异步调用。 |
API Connect(APIC)触发器 |
默认为同步调用,但可以修改为异步调用,具体配置方式请参考配置异步调用。 |
定时触发器(TIMER)触发器 |
默认为同步调用,且不可修改。 |
云数据库 GeminiDB DynamoDB触发器 |
默认为同步调用,且不可修改。 |
云审计服务(CTS)触发器 |
默认为异步调用,且不可修改。 |
文档数据库服务(DDS)触发器 |
默认为异步调用,且不可修改。 |
数据接入服务(DIS)触发器 |
默认为异步调用,且不可修改。 |
分布式消息服务 Kafka版(KAFKA)触发器 |
默认为异步调用,且不可修改。 |
开源Kafka(OPENSOURCEKAFKA)触发器 |
默认为异步调用,且不可修改。 |
分布式消息服务 RabbitMQ版(RABBITMQ)触发器 |
默认为异步调用,且不可修改。 |
云数据库 GeminiDB Mongo触发器 |
默认为异步调用,且不可修改。 |
设备接入(IoTDA)触发器 |
默认为异步调用,且不可修改。 |
云日志服务(LTS)触发器 |
默认为异步调用,且不可修改。 |
消息通知服务(SMN)触发器 |
默认为异步调用,且不可修改。 |
EventGrid触发器 |
默认为异步调用,且不可修改。 |
FunctionGraph支持的触发事件
表2为支持触发FunctionGraph函数的云服务,这些云服务可配置为FunctionGraph函数的事件源,即配置函数的触发器。配置事件源触发器后,只要检测到相应事件,将自动调用FunctionGraph函数。
云服务/功能 |
触发事件 |
---|---|
计划事件功能 TIMER |
使用TIMER的计划事件功能定期调用函数代码,可以指定固定频率(分钟、小时、天数)或指定 Cron 表达式定期调用函数(TIMER示例事件)。 TIMER定时触发器的使用过程请参考使用定时触发器。 |
API网关服务 APIG |
通过HTTPS或者HTTP调用FunctionGraph函数,使用API Gateway自定义REST API和终端节点来实现。可以将各个API操作(如GET和PUT)映射到特定的FunctionGraph函数,当向该API终端节点发送HTTPS请求时(APIG示例事件),APIG会调用相应的FunctionGraph函数。 APIG的触发使用过程请参考:使用APIG专享版触发器 |
API Connect APIC |
通过HTTPS或者HTTP调用FunctionGraph函数,将各个API操作(如GET和PUT)映射到特定的FunctionGraph函数,当向该API发送HTTPS或者HTTP请求时,APIC 会调用相应的FunctionGraph函数。 APIC的触发使用过程请参考使用APIC触发器。 |
云审计服务 CTS |
编写FunctionGraph函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,当CTS云审计服务获取已订阅的操作记录后,通过CTS触发器将采集到的操作记录作为参数传递(CTS示例事件)来调用FunctionGraph函数。经由函数对日志中的关键信息进行分析和处理,对系统、网络等业务模块进行自动修复,或通过短信、邮件等形式产生告警,通知业务人员进行处理。 CTS的触发使用过程请参考使用CTS触发器。 |
文档数据库服务 DDS |
使用DDS触发器,每次更新数据库中的表时,都可以触发Functiongraph函数以执行额外的工作(DDS示例事件)。 DDS的触发使用过程请参考使用DDS触发器。 |
数据接入服务 DIS |
将FunctionGraph函数配置为自动轮询流并处理任何新记录,例如网站点击流、财务交易记录、社交媒体源、IT日志和数据位置跟踪事件等(DIS示例事件)。FunctionGraph会定期轮询DIS数据流中的新记录。 DIS的触发使用过程请参考使用DIS触发器。 |
分布式消息服务 Kafka版 |
当向Kafka实例的Topic生产消息时,FunctionGraph会消费消息,触发函数以执行额外的工作(Kafka示例事件)。 分布式消息Kafka的触发使用过程请参见: |
分布式消息服务 RabbitMQ版 |
FunctionGraph可以定期轮询RabbitMQ实例指定Exchange绑定的队列下的新消息,FunctionGraph将轮询得到的消息作为参数传递来调用函数(分布式消息服务RabbitMQ示例事件)。 分布式消息RabbitMQ的触发使用过程请参见使用RabbitMQ触发器。 |
云数据库 GeminiDB MongoDB |
使用GeminiDB MongoDB(MONGODB)触发器,每次更新数据库中的表时,都可以触发FunctionGraph函数以执行额外的工作(GeminiDB MongoDB示例事件)。 GeminiDB MongoDB触发器使用请参见使用云数据库GeminiDB MongoDB触发器。 |
云数据库 GeminiDB DynamoDB |
使用GeminiDB DynamoDB(DYNAMODB)触发器,实现定时拉取DynamoDB数据库流表中的信息,并触发函数执行(云数据库GeminiDBDynamoDB示例)。 GeminiDB DynamoDB触发器使用请参见使用云数据库GeminiDB DynamoDB触发器。 |
设备接入服务 IoTDA |
使用IoTDA触发器,对于设备上报到平台的数据,FunctionGraph可跟踪设备的设备属性、消息上报,状态变更,分析、整理和计量数据流(IoTDA示例事件)。 IoTDA触发器的使用请参见使用IoTDA触发器。 |
云日志服务 LTS |
编写FunctionGraph函数来处理云日志服务订阅的日志,当云日志服务采集到订阅的日志后,可以通过将采集到的日志作为参数传递(LTS示例事件)来调用FunctionGraph函数,FunctionGraph函数代码可以对其进行自定义处理、分析或将其加载到其他系统。 LTS的触发使用过程请参考使用LTS触发器。 |
消息通知服务 SMN |
编写FunctionGraph函数来处理SMN的通知,在将消息发布到SMN主题时,服务可以通过将消息负载作为参数传递(SMN示例事件)来调用FunctionGraph函数,FunctionGraph函数代码可以处理事件,比如将消息发布到其他SMN主题或将消息发送到其他云服务。 SMN消息触发的使用过程请参考使用SMN触发器。 |
对象存储服务 OBS |
可以编写FunctionGraph函数来处理OBS存储桶事件,例如对象创建事件或对象删除事件(OBS示例事件)。当用户将一张照片上传到存储桶时,OBS存储桶调用FunctionGraph函数,实现读取图像和创建照片缩略图。 OBS对象操作触发函数的过程请参考: |
事件网格服务 EventGrid |
可以编写FunctionGraph函数来处理EventGrid的通知,在将消息发布到EG事件源时,服务可以通过将消息负载作为参数传递(EG示例事件)来调用FunctionGraph函数。FunctionGraph函数代码可以处理事件,比如将消息发送到其他云服务。 EventGrid的触发使用支持以下事件源: |