You need to enable JavaScript to run this app.
导航
创建 TOS 触发器
最近更新时间:2024.06.28 15:56:50首次发布时间:2022.08.26 16:54:48

函数服务支持对接火山引擎的 对象存储 TOS。通过创建 TOS 触发器,函数服务可监听指定 Bucket 下的各类型事件变动,并将事件传递给用户函数,触发函数代码逻辑。您无需关心函数服务获取事件的细节,只需编写处理事件的函数。本文为您介绍如何创建 TOS 触发器。

背景信息

  • TOS 触发器工作机制及注意事项
    当符合条件的 TOS 事件发生时,TOS 会将此事件发送给 veFaaS,veFaaS 会把该事件写入队列,并迅速向 TOS 返回响应,表示事件已接收。随后,一个独立的进程会从事件队列中读取事件,触发函数执行用户自定义的业务处理逻辑。
    alt

    • 错误最大重试次数:10 次,超过会被丢弃。如果函数执行过程中返回错误(例如函数 handler 直接返回 error 或 >= 400 的状态码),veFaaS 会进行错误重试,您无需在代码中编写重试逻辑。
    • 事件最长保留时间:6 小时,超过会被丢弃。请合理配置单实例多并发和实例数上限,确保函数有足够的性能和资源来处理事件通知。
    • 消息重复投递:由于事件队列最终一致性的特性,可能导致同一事件被重复投递至函数。请确保函数代码能够正确处理重复事件。
  • TOS 触发器为双向集成触发器
    在函数服务侧每创建一个 TOS 触发器,对应到对象存储侧,将同步生成一个同名的事件通知规则。相应地,在对象存储侧每创建一个事件通知规则,对应到函数服务侧,将在目标函数下同步生成一个同名的 TOS 触发器。

  • 一个 TOS 事件支持投递至多个函数
    如果您有此类需求,请前往对象存储控制台创建事件通知规则,详细操作可参见 设置事件通知

前提条件

  • 已基于vefaas-python38-default模板或vefaas-golang-tos-trigger模板创建函数,并至少完成一次全量发布,详细操作可参见 发布函数
  • 已创建 TOS Bucket,详细操作可参见 创建存储桶

使用限制

  • 每个函数最多支持创建 20 个触发器,灰度发布暂不支持创建触发器。
  • 删除函数前,需要先删除 TOS 触发器。
  • TOS 触发器创建完成后,不允许变更 Bucket。
  • 如果需要将一个 TOS 事件投递至多个函数,必须前往对象存储控制台操作。
  • 如果 TOS 事件通知已绑定多个投递目标,在函数服务侧仅支持查看和删除,不支持编辑。如需编辑,请前往对象存储控制台操作。

操作步骤

  1. 登录 函数服务控制台
  2. 在顶部导航栏,选择目标地域。
  3. 在 函数列表 页面,选择需要创建触发器的函数,单击函数名称。
  4. 在函数详情页面的 触发器 页签下,单击 创建触发器
  5. 在 创建触发器 面板,按要求设置参数。
    alt
    配置项说明
    触发器类型本场景选择 TOS 触发器。
    TOS BucketTOS Bucket 是用于存储对象(Object)的空间。选择函数服务需要监听的 TOS Bucket,支持模糊搜索。
    触发事件选择函数服务需要监听的事件,支持多选。支持监听的 TOS 事件及含义,请参见 事件列表

    过滤条件

    通过设置过滤条件,可精确匹配需要监听的事件所包含的对象范围,有效降低触发频率,减少成本。

    • 前缀:根据需要,设置需要匹配对象的前缀信息。
    • 后缀:根据需要,设置需要匹配对象的后缀信息。
      例如:触发事件为tos:Object:Created:*,前缀为test/,后缀为.png,则test目录下检测到png格式的对象上传时,都会触发函数执行。

    说明

    • 前缀和后缀为“且”的关系,匹配规则均为精确匹配。
    • 如果前后缀均未设置,则会匹配存储桶内所有对象。

    注意

    一个 Bucket 下创建的触发器必须保证语义唯一性,即 触发事件前缀后缀 组成的语义唯一,匹配的范围不允许重叠。
    例如:已创建触发器 1, 用于监听 Bucket-A 中后缀为png的对象发生的 tos:Object:Created:Put事件。对于触发器 2,若监听事件包含触发器 1 中的tos:Object:Created:Put事件, 则匹配对象不允许与触发器 1 有重叠,即不允许包含后缀为png的对象。如果包含,触发器 2 将创建失败。

  6. 单击 确定,完成 TOS 触发器创建。

说明

  • TOS 触发器创建成功后,将会在对象存储的指定 Bucket 下同步生成一条同名的事件推送规则,您可前往 对象存储控制台 查看。
  • TOS 触发器创建成功后,大约需要等待 2 分钟才能生效。

后续操作