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