设置函数触发器

最近更新时间:2018-08-16 13:20:25

接口描述

功能描述

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 事件到具体的触发器时,存在如下绑定限制:

  1. 如果先绑定 cos:ObjectCreated:\* 事件,后续再绑定 cos:ObjectCreated 开头的事件都会失败。
  2. 如果先绑定 cos:ObjectCreated 开头的除 cos:ObjectCreated:\* 之外的事件,后续再绑定 cos:ObjectCreated:\* 事件会失败。
  3. 如果先绑定 cos:ObjectRemove:\* 事件,后续再绑定 cos:ObjectRemove 开头的事件都会失败。
  4. 如果先绑定 cos:ObjectRemove 头的除 cos:ObjectRemove:\* 之外的事件,后续再绑定 cos:ObjectRemove:\* 事件会失败。
  5. 如果 cos 已经被绑定,执行创建 cos 触发器将失败。
  6. 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"
}