接口描述
功能描述
SetTrigger 创建和修改函数触发器。目前支持 COS 、CMQ、Timer 三种类型的触发器,每个函数最大支持4个触发器。
接口域名
接口请求域名为:scf.api.qcloud.com
请求
请求示例:
GET https://scf.api.qcloud.com/v2/index.php?Action=SetTrigger
&<公共请求参数>
&functionName=hell
&triggerName=test1
&type=timer
&triggerDesc=*/2 * * * *
请求参数
以下请求参数为本接口接口请求参数,正式调用时需要加上公共请求参数,详见 公共请求参数 页面。其中,此接口的 Action 字段为 SetTrigger。
参数名称 | 描述 | 类型 | 必选 |
---|---|---|---|
functionName | 新建触发器绑定的函数名称 | String | 是 |
triggerName | 新建触发器名称。如果是定时触发器,名称支持英文字母、数字、连接符和下划线,最长100个字符;如果是其他触发器,见具体触发器绑定参数的说明 | String | 是 |
type | 触发器类型,目前支持 COS 、CMQ、Timer 类型 | String | 是 |
triggerDesc | 触发器对应的参数,如果是 Timer 类型的触发器其内容是 Linux cron 表达式,如果是其他触发器,见具体触发器说明 | String | 是 |
newTriggerName | 更新定时触发器名称时使用该参数,新名称支持英文字母、数字、连接符和下划线,最长100个字符 | String | 否 |
注意事项:
- 一个帐号在一个区域最多支持20个函数,每个函数最多拥有4个触发器。
- 一个区域的 COS Bucket 只能绑定该区域的函数,不允许 Bucket 和函数之间建立跨区域绑定
- COS 触发器不支持更新操作。
- 一个区域的 CMQ Topic 队列只能绑定该区域的函数,不允许 CMQ Topic 队列和函数之间建立跨区域绑定。
- CMQ 触发器不支持更新操作。
COS 绑定参数
在绑定 COS Bucket 事件时,触发器的 triggerName 格式是固定,格式如下:<bucketName>-<UID>.<Region>.myqcloud.com
。
triggerDesc 中需要传入 json 格式的数据内容示例如下:
{"event":"cos:ObjectCreated:*"}
目前支持的 event 值如下表所示,绑定 COS 事件到具体的触发器时,存在如下绑定限制:
- 如果先绑定
cos:ObjectCreated:\*
事件,后续再绑定cos:ObjectCreated
开头的事件都会失败。 - 如果先绑定
cos:ObjectCreated
开头的除cos:ObjectCreated:\*
之外的事件,后续再绑定cos:ObjectCreated:\*
事件会失败。 - 如果先绑定
cos:ObjectRemove:\*
事件,后续再绑定cos:ObjectRemove
开头的事件都会失败。 - 如果先绑定
cos:ObjectRemove
头的除cos:ObjectRemove:\*
之外的事件,后续再绑定cos:ObjectRemove:\*
事件会失败。 - 如果 COS 已经被绑定,执行创建 COS 触发器将失败。
- COS 触发器不支持名称更新操作。
事件 | 描述 |
---|---|
cos:ObjectCreated:Put |
使用 Put Object 接口创建文件 |
cos:ObjectCreated:Post |
使用 Post Object 接口创建文件 |
cos:ObjectCreated:Copy |
使用 Put Object - Copy 接口创建文件 |
cos:ObjectCreated:Append |
使用 Append Object 接口创建文件 |
cos:ObjectCreated:CompleteMultipartUpload |
使用 CompleteMultipartUploadt 接口创建文件 |
cos:ObjectCreated:* |
使用以上提到的 "ObjectCreated" 类型接口创建文件 |
cos:ObjectRemove:Delete |
在未开启版本管理的 Bucket 下使用 Delete Object 接口删除的 Object,或者使用 VersionID 删除指定版本的 Object |
cos:ObjectRemove:DeleteMarkerCreated |
在开启或者暂停版本管理的 Bucket 下使用 Delete Object 接口删除的 Object |
cos:ObjectRemove:* |
使用以上提到的 "ObjectRemove" 类型接口删除文件 |
注意:使用 COS 触发器时如果函数的执行结果需要保存到 bucket 上,需要将触发源的 bucket 和输出结果的 bucket 设置为两个不同的 bucket,避免出现循环依赖导致函数持续运行。
CMQ 绑定参数
在绑定 CMQ Topic 队列时,触发器的 triggerName 写为 CMQ Topic 队列的主题名即可,例如 triggerName=test-topic
。
triggerDesc 无需填写。
响应
响应示例:
{
"code": 0,
"message": "",
"codeDesc": "Success"
}
响应参数
参数名称 | 描述 | 类型 |
---|---|---|
code | 公共错误码, 0表示成功,其他值表示失败 | Int |
message | 模块错误信息描述,与接口相关 | String |
codeDesc | 英文错误码,成功返回 Success,失败有相应的英文说明 | String |
实际案例
设置定时触发器
请求
GET https://scf.api.qcloud.com/v2/index.php?
Action=SetTrigger
&SecretId=AKIDutrojKl3CKQZNAr763UXks05898Lmciu
&Nonce=23569
&Timestamp=1505787511
&Region=gz
&Signature=5%2Bz3gBf7HrTevF0VoxO8iQViPl8%3D
&functionName=test5
&triggerName=time1
&type=timer
&triggerDesc=%2A%2F2+%2A+%2A+%2A+%2A
响应
{
"code": 0,
"message": "",
"codeDesc": "Success"
}
设置 COS 触发器
请求
GET https://scf.api.qcloud.com/v2/index.php?
Action=SetTrigger
&SecretId=AKIDutrojKl3CKQZNAr763UXks05898Lmciu
&Nonce=35339
&Timestamp=1505788030
&Region=gz
&Signature=xBqiia%2FWIA1ar7wyidagaoI5yZs%3D
&functionName=test5
&triggerName=scfdest-1251762227.cn-south.myqcloud.com
&type=cos
&triggerDesc=%7B%22event%22%3A%22cos%3AObjectCreated%3A%2A%22%7D
响应
{
"code": 0,
"message": "",
"codeDesc": "Success"
}
设置 CMQ Topic 触发器
请求
GET https://scf.api.qcloud.com/v2/index.php?
Action=SetTrigger
&SecretId=AKIDutrojKl3CKQZNAr763UXks05898Lmciu
&Nonce=65137
&Timestamp=1505792960
&Region=gz
&Signature=6RWWnuBZSIEHoRxNQy6qUMB%2F6ss%3D
&functionName=test5
&triggerName=test-topic
&type=cmq
响应
{
"code": 0,
"message": "",
"codeDesc": "Success"
}