COS 触发器(对象存储)
COS 是腾讯云用于存储一些资源文件的服务。
使用方式
import {
Provide,
Inject,
ServerlessTrigger,
ServerlessTriggerType,
} from '@midwayjs/decorator';
import { Context, SCF } from '@midwayjs/faas';
@Provide()
export class HelloTencentService {
@Inject()
ctx: Context;
@ServerlessTrigger(ServerlessTriggerType.OS, {
bucket: 'cli-appid.cos.ap-beijing.myqcloud.com',
events: 'cos:ObjectCreated:*,
filter: {
prefix: 'filterdir/',
suffix: '.jpg',
},
})
async handleCOSEvent(event: SCF.COSEvent) {
// xxx
}
}
在 npm run deploy
后,即可。
OSS 触发器配置
属性名 | 类型 | 描述 |
---|---|---|
bucket | string | 对象存储的 bucket 地址 |
events | string | 触发函数执行的事件名 |
filter | {prefix: string;suffix: string;} | 对象过滤参数,满足过滤条件的 对象才可以触发函数,包含一个配置属性 key,表示过滤器支持过滤的对象键 (key)。 |
示例 :
监听对象创建事件
@ServerlessTrigger(ServerlessTriggerType.OS, {
bucket: 'cli-appid.cos.ap-beijing.myqcloud.com',
events: 'cos:ObjectCreated:*,
filter: {
prefix: 'filterdir/',
suffix: '.jpg',
},
})
事件结构
COS 消息返回的结构如下,在 SCF.COSEvent
类型中有描述。
{
"Records": [
{
"cos": {
"cosSchemaVersion": "1.0",
"cosObject": {
"url": "http://testpic-1253970026.cos.ap-chengdu.myqcloud.com/testfile",
"meta": {
"x-cos-request-id": "NWMxOWY4MGFfMjViMjU4NjRfMTUyMV8yNzhhZjM=",
"Content-Type": ""
},
"vid": "",
"key": "",
"size": 1029
},
"cosBucket": {
"region": "cd",
"name": "testpic",
"appid": "1253970026"
},
"cosNotificationId": "unkown"
},
"event": {
"eventName": "cos:ObjectCreated:*",
"eventVersion": "1.0",
"eventTime": 1545205770,
"eventSource": "qcs::cos",
"requestParameters": {
"requestSourceIP": "192.168.15.101",
"requestHeaders": {
"Authorization": "****************"
}
},
"eventQueue": "qcs:0:lambda:cd:appid/1253970026:default.printevent.$LATEST",
"reservedInfo": "",
"reqid": 179398952
}
}
]
}