触发器操作
更新时间:2024-07-05
各接口的请求参数和响应参数说明请参考触发器操作。
触发器为函数BRN级别,函数不同的版本、别名函数均可关联触发器。因此在以下的增删改查示例中,函数相关的标识符均使用函数BRN而非函数名。
根据后端实现的不同,函数计算触发器可以分成relation
和eventSourceMapping
两种类型,对应两种API和SDK调用方法,具体分类如下表格所示。在使用SDK时需要根据触发器的类型调用不同的方法。
类型 | 触发器种类 |
---|---|
relation | DuerOS、BOS、HTTP、定时任务、CDN、DuEdge |
eventSourceMapping | 百度消息服务 |
获取触发器列表
如下代码用于获取函数relation触发器列表:
Javascript
1var options = {
2 'FunctionBrn': 'brn:bce:cfc:su:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST'
3}
4
5cfcClient.listRelations(options).then(response => {
6 console.log(response.body)
7})
如下代码用于获取函数eventsourceMapping触发器列表:
Javascript
1var options = {
2 'FunctionName': 'brn:bce:cfc:su:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST'
3}
4
5cfcClient.listEventSourceMappings(options).then(response => {
6 console.log(response.data)
7})
创建触发器
如下代码用于创建HTTP触发器:
Javascript
1// 不同触发器的Source和Data字值不同,具体请参考接口文档。
2var body = {
3 'Target': 'brn:bce:cfc:su:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST', // 函数 BRN
4 'Source': 'cfc-http-trigger/v1/CFCAPI', // 触发源类型为http
5 'Data': { // http触发器的配置参数
6 'AuthType': 'anonymous',
7 'Method': 'GET,POST',
8 'ResourcePath': '/helloworld'
9 }
10}
11
12cfcClient.createRelation(body).then(response => {
13 console.log(response.data)
14}).catch(err => {
15 console.error(err)
16})
如下代码用于创建百度消息服务触发器:
Javascript
1var body = {
2 'BatchSize': 100,
3 'Enabled': true,
4 'EventSourceBrn': '7c54a6e14823a11c9f9f5345952ac336__test_topic',
5 'FunctionName': 'brn:bce:cfc:bj:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST',
6 'Source': 'kafka',
7 'StartingPosition': 'TRIM_HORIZON'
8}
9
10cfcClient.createEventSourceMapping(body).then(response => {
11 console.log(response.body)
12}).catch(err => {
13 console.error(err)
14})
更新触发器
如下代码用于更新HTTP触发器:
Javascript
1var updateBody = {
2 // RelationId 触发器的唯一标识,从 listRelations 的返回结果中获取
3 'RelationId': 'brn:bce:cfc-http-trigger:su:7c54a6e14823a11c9f9f5345952ac336:8b1ddba7fec6f3e1506cad8e5a5512fb/cfc/GET,POST/test/helloworld',
4 'Target': 'brn:bce:cfc:su:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST', // 函数 BRN
5 'Source': 'cfc-http-trigger/v1/CFCAPI', // 触发源类型为http
6 'Data': { // http触发器的配置参数
7 'AuthType': 'anonymous',
8 'Method': 'GET,POST,PUT',
9 'ResourcePath': '/hellocfc'
10 }
11};
12
13cfcClient.updateRelation(updateBody).then(response => {
14 console.log(response.body)
15}).catch(err => {
16 console.log(err)
17})
如下代码用于更新百度消息服务触发器:
Javascript
1var updateBody = {
2 'BatchSize': 150,
3 'FunctionName': 'brn:bce:cfc:su:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST'
4}
5
6// esmId 为触发器唯一标识,从listEventSourceMappings的返回结果中获取
7cfcClient.updateEventSourceMapping(esmId, updateBody).then(response => {
8 console.log(response.body)
9}).catch(err => {
10 console.error(err)
11})
删除触发器
如下代码用于删除HTTP触发器:
Javascript
1var deleteOptions = {
2 'Target': 'brn:bce:cfc:su:7c54a6e14823a11c9f9f5345952ac336:function:test:$LATEST',
3 'Source':'cfc-http-trigger/v1/CFCAPI',
4 'RelationId':'brn:bce:cfc-http-trigger:su:7c54a6e14823a11c9f9f5345952ac336:8b1ddba7fec6f3e1506cad8e5a5512fb/cfc/GET,POST/test/helloworld'
5}
6
7cfcClient.deleteRelation(deleteOptions).catch(err => {
8 console.error(err)
9})
如下代码用于删除百度消息服务触发器:
Javascript
1// esmId 为列表接口返回的触发器 id
2cfcClient.deleteEventSourceMapping(esmId).catch(err => {
3 console.error(err)
4})