函数支持的事件源
本节列出了FunctionGraph函数支持的云服务,可以将这些服务配置为FunctionGraph函数的事件源。在预配置事件源映射后,这些事件源检测事件时将自动调用FunctionGraph函数。
消息通知服务SMN
可以编写FunctionGraph函数来处理SMN的通知,在将消息发布到SMN主题时,服务可以通过将消息负载作为参数传递(SMN示例事件)来调用FunctionGraph函数,FunctionGraph函数代码可以处理事件,比如将消息发布到其他SMN主题或将消息发送到其他云服务。SMN消息触发的使用过程请参考使用SMN触发器。
API Gateway
可以通过HTTPS调用FunctionGraph函数,使用API Gateway自定义REST API和终端节点来实现。可以将各个API操作(如GET和PUT)映射到特定的FunctionGraph函数,当向该API终端节点发送HTTPS请求时(APIG示例事件),API Gateway会调用相应的FunctionGraph函数。HTTPS调用触发函数的使用过程请参考使用APIG触发器。
数据接入服务DIS
可以将FunctionGraph函数配置为自动轮询流并处理任何新记录,例如网站点击流、财务交易记录、社交媒体源、IT日志和位置跟踪事件等(DIS示例事件)。FunctionGraph会定期轮询DIS数据流中的新记录。DIS数据流触发函数的过程请参考使用DIS触发器。
定时触发器TIMER
可以使用TIMER的计划事件功能定期调用您的代码,可以指定固定频率(分钟、小时、天数)或指定 cron 表达式定期调用函数(TIMER示例事件)。定时触发器的使用请参考使用定时触发器。
日志触发器LTS
可以编写FunctionGraph函数来处理云日志服务订阅的日志,当云日志服务采集到订阅的日志后,可以通过将采集到的日志作为参数传递(LTS示例事件)来调用FunctionGraph函数,FunctionGraph函数代码可以对其进行自定义处理、分析或将其加载到其他系统。LTS日志触发的使用过程请参考使用LTS触发器。
云审计服务触发器CTS
可以编写FunctionGraph函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,当CTS云审计服务获取已订阅的操作记录后,通过CTS触发器将采集到的操作记录作为参数传递(CTS示例事件)来调用FunctionGraph函数。经由函数对日志中的关键信息进行分析和处理,对系统、网络等业务模块进行自动修复,或通过短信、邮件等形式产生告警,通知业务人员进行处理。CTS触发器的使用请参考使用CTS触发器。
文档数据库服务DDS
使用DDS触发器,每次更新数据库中的表时,都可以触发Functiongraph函数以执行额外的工作。DDS触发器的使用请参考使用DDS触发器。
分布式消息服务Kafka版
使用Kafka触发器,当向Kafka实例的Topic生产消息时,FunctionGraph会消费消息,触发函数以执行额外的工作,关于Kafka触发器的使用请参见使用Kafka触发器。
云监控服务CES
FunctionGraph函数实现了与云监控服务对接,函数上报云监控服务的监控指标,用户可以通过云监控服务来查看函数产生的监控指标和告警信息。查看监控指标请参考查看监控图表。
分布式消息服务RabbitMQ版
使用RabbitMQ触发器,FunctionGraph会定期轮询RabbitMQ实例指定Exchange绑定的队列下的新消息,FunctionGraph将轮询得到的消息作为参数传递来调用函数。
事件网格服务EventGrid
可以编写FunctionGraph函数来处理EventGrid的通知,在将消息发布到EG事件源时,服务可以通过将消息负载作为参数传递(EG示例事件)来调用FunctionGraph函数,FunctionGraph函数代码可以处理事件,比如将消息发送到其他云服务。EG消息触发的使用过程请参考使用EG触发器。
设备接入服务IoTDA
使用IoTDA触发器,对于设备上报到平台的数据,FunctionGraph可跟踪设备的设备属性、消息上报,状态变更,分析、整理和计量数据流(IoTDA示例事件)。关于IoTDA触发器的使用请参见使用IoTDA触发器。
IoTDA触发器当前仅支持华南-广州、华北-北京四、中国-香港、亚太-曼谷。
示例事件
- SMN示例事件
{ "record": [ { "event_version": "1.0", "smn": { "topic_urn": "urn:smn:{region}:0162c0f220284698b77a3d264376343a:{function_name}", "timestamp": "2018-01-09T07:11:40Z", "message_attributes": null, "message": "this is smn message content", "type": "notification", "message_id": "a51671f77d4a479cacb09e2cd591a983", "subject": "this is smn message subject" }, "event_subscription_urn": "urn:fss:{region}:0162c0f220284698b77a3d264376343a:function:default:read-smn-message:latest", "event_source": "smn" } ], "functionname": "test", "requestId": "7c307f6a-cf68-4e65-8be0-4c77405a1b2c", "timestamp": "Wed Nov 15 2017 12:00:00 GMT+0800 (CST)" }
表1 参数说明 参数
类型
示例值
描述
event_version
String
1.0
事件协议的版本。
topic_urn
String
参考示例
SMN事件唯一编号
type
String
notification
事件的类型
RequestID
String
7c307f6a-cf68-4e65-8be0-4c77405a1b2c
请求ID。每个请求的ID取值唯一。
message_id
String
a51671f77d4a479cacb09e2cd591a983
消息ID。每条消息的ID取值唯一。
Message
String
this is smn message content
消息内容
event_source
String
smn
事件源
event_subscription_urn
String
参考示例
添加的订阅唯一编号
timestamp
String
Wed Nov 15 2017 12:00:00 GMT+0800 (CST)
事件发生的时间
- APIG示例事件
{ "body": "{\"test\":\"body\"}", "requestContext": { "apiId": "bc1dcffd-aa35-474d-897c-d53425a4c08e", "requestId": "11cdcdcf33949dc6d722640a13091c77", "stage": "RELEASE" }, "queryStringParameters": { "responseType": "html" }, "httpMethod": "GET", "pathParameters": { "path":"value" }, "headers": { "accept-language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "accept-encoding": "gzip, deflate, br", "x-forwarded-port": "443", "x-forwarded-for": "103.218.216.98", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "upgrade-insecure-requests": "1", "host": "50eedf92-c9ad-4ac0-827e-d7c11415d4f1.apigw.region.cloud.com", "x-forwarded-proto": "https", "pragma": "no-cache", "cache-control": "no-cache", "x-real-ip": "103.218.216.98", "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" }, "path": "/apig-event-template", "isBase64Encoded": true }
表2 参数说明 参数
类型
示例值
描述
body
String
"{\"test\":\"body\"}"
记录实际请求转换为String字符串后的内容。
requestContext
Map
参考示例
请求来源的API网关的配置信息、请求标识、认证信息、来源信息。
httpMethod
String
GET
记录实际请求的HTTP方法
queryStringParameters
Map
参考示例
记录在API网关中配置过的Query参数以及实际取值。
pathParameters
Map
参考示例
记录在API网关中配置过的Path参数以及实际取值。
headers
Map
参考示例
记录实际请求的完整Header内容
path
String
/apig-event-template
记录实际请求的完整的Path信息
isBase64Encoded
Boolean
True
默认为true
- DIS示例事件
{ "ShardID": "shardId-0000000000", "Message": { "next_partition_cursor": "eyJnZXRJdGVyYXRvclBhcmFtIjp7InN0cmVhbS1uYW1lIjoiZGlzLXN3dGVzdCIsInBhcnRpdGlvbi1pZCI6InNoYXJkSWQtMDAwMDAwMDAwMCIsImN1cnNvci10eXBlIjoiVFJJTV9IT1JJWk9OIiwic3RhcnRpbmctc2VxdWVuY2UtbnVtYmVyIjoiNCJ9LCJnZW5lcmF0ZVRpbWVzdGFtcCI6MTUwOTYwNjM5MjE5MX0", "records": [ { "partition_key": "shardId_0000000000", "data": "d2VsY29tZQ==", "sequence_number": "0" }, { "partition_key": "shardId_0000000000", "data": "dXNpbmc=", "sequence_number": "1" }, { "partition_key": "shardId_0000000000", "data": "RnVuY3Rpb25TdGFnZQ==", "sequence_number": "2" }, { "partition_key": "shardId_0000000000", "data": "c2VydmljZQ==", "sequence_number": "3" } ], "millis_behind_latest": "" }, "Tag": "latest", "StreamName": "dis-swtest" }
表3 参数说明 参数
类型
示例值
描述
ShardID
String
shardId-0000000000
数据下载分区的ID
next_partition_cursor
String
参考示例
下一个分区的游标
Records
Map
参考示例
存储在DIS通道中的数据单元
partition_key
String
参考示例
分区键
data
String
参考示例
数据块,由数据生产者添加到数据通道
sequence_number
Int
参考示例
每个记录的唯一标识符,由DIS服务自动分配
Tag
String
latest
通道的标签
StreamName
String
dis-swtest
通道名称
- TIMER示例事件
{ "version": "v1.0", "time": "2018-06-01T08:30:00+08:00", "trigger_type": "TIMER", "trigger_name": "Timer_001", "user_event": "User Event" }
表4 参数说明 参数
类型
示例值
描述
version
String
V1.0
事件协议的版本
time
String
2018-06-01T08:30:00+08:00
事件产生的时间
trigger_type
String
TIMER
触发器的类型
trigger_name
String
Timer_001
触发器的名字
user_event
String
User Event
在创建触发器时配置的附加信息
- LTS示例事件
{ "lts": { "data": "ICB7CiAgICAibG9ncyI6W3sKICAgICAgICAgIm1lc3NhZ2UiOiIyMDE4LTA4LTA4LzA4OjA4OjA4IFtXUk5dIFt0ZXN0LmdvOjA4XVRoaXMgaXMgYSB0ZXN0IG1lc3NhZ2UuIiwKICAgICAgICAgInRpbWUiOjE1MzAwMDk2NTMwNTksCiAgICAgICAgICJob3N0X25hbWUiOiJlY3MtdGVzdCIsCiAgICAgICAgICJpcCI6IjE5Mi4xNjguMS4xIiwKICAgICAgICAgInBhdGgiOiJ2YXIvbG9nL3Rlc3QubG9nIiwKICAgICAgICAgImxvZ191aWQiOiI2NjNkNjkzMC03OTJkLTExZTgtOGIwOC0yODZlZDQ4OGNlNzAiLAogICAgICAgICAibGluZV9ubyI6MQogICAgIH1dLAogICAgIm93bmVyIjogIjYyODBlMTcwYmQ5MzRmNjBhNGQ4NTFjZjVjYTA1MTI5IiwKICAgICJsb2dfZ3JvdXBfaWQiOiAiOTdhOWQyODQtNDQ0OC0xMWU4LThmYTQtMjg2ZWQ0ODhjZTcwIiwKICAgICJsb2dfdG9waWNfaWQiOiAiMWE5Njc1YTctNzg0ZC0xMWU4LTlmNzAtMjg2ZWQ0ODhjZTcwIgogfQ==" } }
表5 Event中涉及的参数解释 参数
类型
示例值
描述
data
Sting
参考示例
Base64编码后的数据
- CTS示例事件
{ "cts": { "time": "2018/06/26 08:54:07 GMT+08:00", "user": { "name": "userName", "id": "5b726c4fbfd84821ba866bafaaf56aax", "domain": { "name": "domainName", "id": "b2b3853af40448fcb9e40dxj89505ba" } }, "request": {}, "response": {}, "code": 204, "service_type": "vpc", "resource_type": "VPC", "resource_name": "workflow-2be1", "resource_id": "urn:fgs:{region}:2d1d891d93054bbaa69b9e866c0971ac:graph:workflow-2be1", "trace_name": "deleteGraph", "trace_type": "ConsoleAction", "record_time": "2018/06/26 08:54:07 GMT+08:00", "trace_id": "69be64a7-0233-11e8-82e4-e5d37911193e", "trace_status": "normal" } }
表6 参数说明 参数
类型
示例值
描述
User
Map
参考示例
本次请求的发起用户信息
Request
Map
参考示例
事件请求内容
Response
Map
参考示例
事件响应内容
Code
Int
204
事件响应码,例如200、400
service_type
String
vpc
发送方的简写,比如vpc,ecs等等
resource_type
String
VPC
发送方资源类型,比如vm,vpn等等
resource_name
String
workflow-2be1
资源名称,例如ecs服务中某个虚拟机的名称
trace_name
String
deleteGraph
事件名称,比如:startServer, shutDown等
trace_type
String
ConsoleAction
事件发生源头类型,例如ApiCall
record_time
string
2018/06/26 08:54:07 GMT+08:00
cts服务接受到这条trace的时间
trace_id
String
69be64a7-0233-11e8-82e4-e5d37911193e
事件的唯一标识符
trace_status
String
normal
事件的状态
- DDS示例事件
{ "records": [ { "event_source": "dds", "event_name": "insert", "region": "{region}", "event_version": "1.0", "dds": { "size_bytes": "100", "token": "{\"_data\": \"825D8C2F4D0000001529295A100474039A3412A64BA89041DC952357FB4446645F696400645D8C2F8E5BECCB6CF5370D6A0004\"}", "full_document": "{\"_id\": {\"$oid\": \"5d8c2f8e5beccb6cf5370d6a\"},\"name\": \"dds\",\"age\": {\"$numberDouble\": \"52.0\"}}", "ns": "{\"db\": \"functiongraph\",\"coll\": \"person\"}" }, "event_source_id": "e6065860-f7b8-4cca-80bd-24ef2a3bb748" } ] }
表7 参数说明 参数
类型
示例值
描述
region
String
cn-north-1
DDS实例所在的地域
event_version
String
1.0
事件协议的版本
event_source
String
dds
事件的来源
event_name
String
insert
事件的名字
size_bytes
Int
100
消息的字节数
token
String
参考示例
Base64编码后的数据
full_document
String
参考示例
完整的文件信息
ns
String
参考示例
列名
event_source_id
e6065860-f7b8-4cca-80bd-24ef2a3bb748
参考示例
事件源唯一标识符
- Kafka示例事件
{ "event_version": "v1.0", "event_time": 1576737962, "trigger_type": "KAFKA", "region": "{region}", "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b", "records": [ { "messages": [ "kafka message1", "kafka message2", "kafka message3", "kafka message4", "kafka message5" ], "topic_id": "topic-test" } ] }
表8 参数说明 参数
类型
示例值
描述
event_version
String
v1.0
事件协议的版本
event_time
String
2018-01-09T07:50:50.028Z
事件发生的时间
trigger_type
String
KAFKA
事件类型
region
String
cn-north-1
Kafka实例所在的地域
instance_id
String
81335d56-b9fe-4679-ba95-7030949cc76b
创建的Kafka实例的唯一标识符。
messages
String
参考示例
消息内容
topic_id
String
topic-test
消息的唯一标识符
- GeminiDB示例事件
{ "records": [ { "event_name": "\"insert\"", "event_version": "1.0", "event_source": "gemini_mongo", "region": "{region}", "gemini_mongo": { "full_document": "{\"_id\": {\"$oid\":\"5f61de944778db5fcded3f87\"},\"zhangsan\": \"zhangsan\"}", "ns": "{\"db\": \"zhangsan\",\"coll\": \"zhangsan\"}", "size_bytes": "100", "token": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}" }, "event_source_id": "51153d19-2b7d-402c-9a79-757163258a36" } ], "vernier": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}" }
表9 参数说明 参数
类型
示例值
描述
region
String
cn-north-1
GeminiDB实例所在的地域
event_source
String
gemini_mongo
事件的来源
event_version
String
1.0
事件协议的版本
full_document
String
参考示例
完整的文件信息
size_bytes
Int
100
消息的字节数
token
String
参考示例
Base64编码后的数据
vernier
String
参考示例
游标
- RabbitMQ示例事件
{ "event_version": "v1.0", "event_time": 1576737962, "trigger_type": "RABBITMQ", "region": "{region}", "records": [ { "messages": [ "rabbitmq message1", "rabbitmq message2", "rabbitmq message3", "rabbitmq message4", "rabbitmq message5" ], "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b", "exchange": "exchange-test" } ] }
表10 参数说明 参数
类型
示例值
描述
event_version
String
v1.0
事件协议的版本
Region
String
cn-north-1
RabbitMQ实例所在的地域
instance_id
String
81335d56-b9fe-4679-ba95-7030949cc76b
创建的RabbitMQ实例的唯一标识符。
- EG示例事件
{ "datacontenttype": "application/json", "data": { "context": "yyyyy" }, "subject": "ROCKETMQ:region:domainId/projectId:ROCKETMQ:eventSourceName", "specversion": "1.0", "id": "016d5bd3-6231-4e9e-86ef-e451a070d598", "source": "eventSourceName", "time": "2023-04-07T11:51:10Z", "type": "ROCKETMQ:CloudTrace:RocketmqCall" }
OBS应用事件源{ "channel_id":"b65779ed-d9d0-4a6c-b312-c767226964cf", "description":"", "name":"subscription-xeak", "sources":[ { "id":null, "name":"HC.OBS.DWR", "detail":{ "bucket":"eventbucket", "objectKeyEncode":true }, "filter":{ "source":[ { "op":"StringIn", "values":[ "HC.OBS.DWR" ] } ], "type":[ { "op":"StringIn", "values":[ "OBS:DWR:ObjectCreated:PUT", "OBS:DWR:ObjectCreated:POST" ] } ], "subject":{ "and":[ { "op":"StringStartsWith", "values":[ "/ddd" ] } ] }, "data":{ "obs":{ "bucket":{ "name":[ { "op":"StringIn", "values":[ "output-your" ] } ] } } } }, "provider_type":"OFFICIAL" } ], "targets":[ { "id":null, "name":"HC.FunctionGraph", "detail":{ "urn":"urn:fss:cn-north-7:c53626012ba84727b938ca8bf03108ef:function:A-nodejs-lqz:pylog:latest", "agency_name":"EG_AGENCY" }, "dead_letter_queue":null, "provider_type":"OFFICIAL", "transform":{ "type":"ORIGINAL", "value":"" } } ] }
云服务事件源:{ "specversion":"1.0", "id":"eaf3b6a6-d525-11ed-a4ca-1baaeb906770", "source":"HC.OBS", "type":"OBS:CloudTrace:Others", "datacontenttype":"application/json", "subject":"OBS:cn-north-5:1d60cc02b9814b9e8cab1ff36886cacb/a5b94f2084a14e3eb8273dd224b89d9a:OBJECT", "time":"2023-04-07T09:21:53.271Z", "data":{ "code":"200", "source_ip":"10.62.9.176", "trace_type":"Others", "event_type":"data", "project_id":"a5b94f2084a14e3eb8273dd224b89d9a", "total_time":"138", "content_length":"6887848", "trace_id":"eaf3b6a6-d525-11ed-a4ca-1baaeb906770", "trace_name":"GET.OBJECT", "resource_type":"OBJECT", "trace_rating":"normal", "service_type":"OBS", "tracker_name":"obs-eg", "time":"1680859313271", "resource_name":"fangxin-sdk:SDK/nodejs-sdk.zip", "record_time":"1680859313271", "request_id":"000001875B05B4AB8411EF94DDE202C0", "user":{ "domain":{ "id":"1d60cc02b9814b9e8cab1ff36886cacb", "name":"hwstaff_pub_fcspaasw3" }, "name":"devuser", "id":"0d8880584b0090271f7cc00857a7c7b9" } } }
更多云服务事件源,请参见云服务事件源。
表11 参数说明 参数
类型
示例值
描述
datacontenttype
String
application/json
数据类型
data
Map
见示例
数据
subject
String
见示例
目标值
specversion
String
1.0
版本
id
String
见示例
唯一键值
source
String
eventSourceName
来源名称
time
String
见示例
发布订阅时间
type
String
ROCKETMQ:CloudTrace:RocketmqCall
订阅类型
- IoTDA示例事件
{ "resource" : "device", "event" : "create", "event_time" : "20240919T011335Z", "event_time_ms" : "2024-09-19T01:13:35.854Z", "request_id" : "75127474-1a26-4578-8847-3128d6101954", "notify_data" : { "body" : { "app_id" : "3d40caf3ddfc4e83815b54b50f13aad7", "app_name" : "DefaultApp_6439vdv2", "device_id" : "66eb7a0ffa8d9c36870c6892_ttytytytytytyt", "node_id" : "ttytytytytytyt", "gateway_id" : "66eb7a0ffa8d9c36870c6892_ttytytytytytyt", "node_type" : "GATEWAY", "auth_info" : { "auth_type" : "SECRET", "secure_access" : false, "timeout" : 0 }, "product_id" : "66eb7a0ffa8d9c36870c6892", "product_name" : "test", "status" : "INACTIVE", "create_time" : "20240919T011335Z" } } }
表12 参数说明 参数
类型
示例值
描述
resource
string
device
数据来源,包括:设备、设置属性、设备消息、设备消息状态、设备状态、产品、设备异步命令状态、运行日志、批量任务。
event
string
create
触发事件。
event_time
string
20240919T011335Z
字符串格式的事件触发时间。
event_time_ms
string
2024-09-19T01:13:35.854Z
datetime格式的事件触发时间。
request_id
string
75127474-1a26-4578-8847-3128d6101954
请求id。
notify_data
object 参见表13
-
推送消息。
表14 NotifyDataBody 参数
类型
示例值
描述
app_id
string
3d40caf3ddfc4e83815b54b50f13aad7
资源空间ID。
app_name
string
DefaultApp_6439vdv2
资源空间名称。
device_id
string
66eb7a0ffa8d9c36870c6892_ttytytytytytyt
设备ID,用于唯一标识一个设备。在注册设备时直接指定,或者由物联网平台分配获得。由物联网平台分配时,生成规则为"product_id" + "_" + "node_id"拼接而成。
最大长度:256
node_id
string
ttytytytytytyt
设备标识码,通常使用IMEI、MAC地址或Serial No作为nodeId。
最大长度:64
gateway_id
string
66eb7a0ffa8d9c36870c6892_ttytytytytytyt
网关ID,用于标识设备所属的父设备,即父设备的设备ID。当设备是直连设备时,gateway_id与设备的device_id一致。当设备是非直连设备时,gateway_id为设备所关联的父设备的device_id。
node_type
string
GATEWAY
设备节点类型。
product_id
string
66eb7a0ffa8d9c36870c6892
设备关联的产品ID,用于唯一标识一个产品模型。
product_name
string
test
设备关联的产品名称。
status
string
INACTIVE
设备的状态。
ONLINE:设备在线。
OFFLINE:设备离线。
ABNORMAL:设备异常。
INACTIVE:设备未激活。
FREEZED:设备冻结。
create_time
string
20240919T011335Z
在物联网平台注册设备的时间。格式:yyyyMMdd'T'HHmmss'Z',如20151212T121212Z。
auth_info
Object参见表15
-
设备的接入认证信息。
表15 AuthInfo 参数
类型
示例值
描述
auth_type
string
SECRET
鉴权类型。支持密钥认证接入(SECRET)和证书认证接入(CERTIFICATES)两种方式。使用密钥认证接入方式(SECRET)填写secret字段,使用证书认证接入方式(CERTIFICATES)填写fingerprint字段,不填写auth_type默认为密钥认证接入方式(SECRET)。
secure_access
Boolean
false
指设备是否通过安全协议方式接入,默认值为true。
true:通过安全协议方式接入。
false:通过非安全协议方式接入。
timeout
Integer
0
设备验证码的有效时间,单位:秒,默认值:0。若设备在有效时间内未接入物联网平台并激活,则平台会删除该设备的注册信息。若设置为“0”,则表示设备验证码不会失效(建议填写为“0”)。注意:只有注册设备接口或者修改设备接口修改timeout时返回该参数。
最小值:0
最大值:2147483647
缺省值:0
具体的设备相关消息请以IoTDA官网为准,例如设备添加:设备添加通知。