- 文档首页
函数服务
用户指南
函数
管理触发器
创建 TOS 触发器
创建 TOS 触发器
函数服务支持对接火山引擎的 对象存储 TOS。通过创建 TOS 触发器,函数服务可监听指定 Bucket 下的各类型事件变动,并将事件传递给用户函数,触发函数代码逻辑。您无需关心函数服务获取事件的细节,只需编写处理事件的函数。本文为您介绍如何创建 TOS 触发器。 背景信息
- 当符合条件的 TOS 事件发生时,TOS 会将此事件发送给 veFaaS,veFaaS 会把该事件写入队列,并迅速向 TOS 返回响应,表示事件已接收。随后,一个独立的进程会从事件队列中读取事件,触发函数执行用户自定义的业务处理逻辑。
-
- 错误最大重试次数:10 次,超过会被丢弃。如果函数执行过程中返回错误(例如函数 handler 直接返回 error 或 >= 400 的状态码),veFaaS 会进行错误重试,您无需在代码中编写重试逻辑。
- 事件最长保留时间:6 小时,超过会被丢弃。请合理配置单实例多并发和实例数上限,确保函数有足够的性能和资源来处理事件通知。
- 消息重复投递:由于事件队列最终一致性的特性,可能导致同一事件被重复投递至函数。请确保函数代码能够正确处理重复事件。
- 在函数服务侧每创建一个 TOS 触发器,对应到对象存储侧,将同步生成一个同名的事件通知规则。相应地,在对象存储侧每创建一个事件通知规则,对应到函数服务侧,将在目标函数下同步生成一个同名的 TOS 触发器。
- 如果您有此类需求,请前往对象存储控制台创建事件通知规则,详细操作可参见 设置事件通知。
前提条件
- 已基于vefaas-python38-default模板或vefaas-golang-tos-trigger模板创建函数,并至少完成一次全量发布,详细操作可参见 发布函数。
- 已创建 TOS Bucket,详细操作可参见 创建存储桶。
使用限制
- 每个函数最多支持创建 20 个触发器,灰度发布暂不支持创建触发器。
- TOS 触发器创建完成后,不允许变更 Bucket。
- 如果需要将一个 TOS 事件投递至多个函数,必须前往对象存储控制台操作。
- 如果 TOS 事件通知已绑定多个投递目标,在函数服务侧仅支持查看和删除,不支持编辑。如需编辑,请前往对象存储控制台操作。
- TOS 事件通知投递至函数服务时,系统会有 30+ 秒延时。
操作步骤
- 在 函数列表 页面,选择需要创建触发器的函数,单击函数名称。
- 在函数详情页面的 触发器 页签下,单击 创建触发器。
-
注意
一个 Bucket 下创建的触发器必须保证语义唯一性,即 触发事件、前缀 和 后缀 组成的语义唯一,匹配的范围不允许重叠。
例如:已创建触发器 1, 用于监听 Bucket-A 中后缀为png的对象发生的 tos:Object:Created:Put事件。对于触发器 2,若监听事件包含触发器 1 中的tos:Object:Created:Put事件, 则匹配对象不允许与触发器 1 有重叠,即不允许包含后缀为png的对象。如果包含,触发器 2 将创建失败。
说明
- TOS 触发器创建成功后,将会在对象存储的指定 Bucket 下同步生成一条同名的事件推送规则,您可前往 对象存储控制台 查看。
- TOS 触发器创建成功后,大约需要等待 2 分钟才能生效。
后续操作
- 如果您需要修改 TOS 触发器,可参考 管理触发器。
- 如果您需要观测函数的运行状态,可参考 监控与日志。
最近更新时间:2025.09.01 14:18:52