触发器概述

最近更新时间:2018-11-02 17:48:29

腾讯云无服务器云函数是典型的事件触发(Event-Triggered)形态的无服务器运行环境,核心组件是 SCF 函数和事件源。其中,事件源是发布事件(Event)的腾讯云服务或用户自定义代码,SCF 函数是事件的处理者,而函数触发器就是管理函数和事件源对应关系的集合。例如以下场景:

  • 图像/视频处理:用户上传图片时将图片切割成合适的尺寸。用户使用该应用上传照片,应用将这些用户照片存储到 COS 中并且创建每个用户照片的缩略图,并在用户页面上显示这些缩略图。本场景下,您需要选择 COS 作为事件源,在文件创建时将事件(Event)发布给 SCF 函数,事件数据提供关于存储桶和文件的所有信息。
  • 数据处理:半夜 12 点,分析一天来收集的数据(比如 clickstream)并生成报告。本场景下,您需要选择 定时器 作为事件源,在一个特定时间将事件(Event)发布给 SCF 函数。
  • 自定义的应用程序:在您的某个应用程序中调用第一个图像处理 SCF 函数,作为应用程序的一个模块。本场景下,您需要该应用程序中自行调用 Invoke API 来发布事件(Event)。

这些事件源可以是以下任意之一:

  • 内部事件源:这些是经过预配置可与 SCF 一起使用的腾讯云云服务。当您配置了这些事件源触发函数时,函数将在出现事件时被自动调用。事件源和函数的关联关系(即事件源映射)将在事件源侧维护。例如,COS 提供 Bucket 通知配置 API。使用此 API,您可以将 Bucket 事件和函数绑定起来。
  • 自定义应用程序:您可以让自定义应用程序发布事件和调用 SCF 函数。

示例 1:COS发布事件并调用函数

您可以配置 COS 的事件源映射,决定 COS 在发生何种行为时触发 SCF 函数(如 PUT、DELETE 对象等)。COS 的事件源映射存储在 COS 中,使用存储桶通知功能,引导 COS 在出现特定事件类型时调用函数:

  • 创建 COS 触发器
  • 用户在存储桶中创建/删除对象
  • COS 检测到对象创建/删除事件。
  • COS 自动调用函数,将根据存储在 COS 配置中的事件源映射明确应该调用哪个函数。将 Bucket 及 Object 信息作为事件数据传递给函数。

示例 2:定时器发布时间并调用函数

定时器的事件源映射将保存在 SCF 函数配置中,决定何时自动触发函数:

  • 创建定时触发器
  • 该定时器在配置时间时自动调用函数

示例 3:自定义应用程序调用函数

如果您需要在自定义应用程序中调用某个 SCF 函数,在这种情况下您不需要配置函数触发器,也不需设置事件源映射。此时,事件源使用 Invoke API。

  • 自定义应用程序使用 Invoke API 调用函数,自行传入事件数据。
  • 函数接收到触发请求并执行
  • 如果使用了同步调用方式,函数将向应用程序返回结果

注意:
在此示例中,由于自定义应用程序和函数均为同一个用户生产的,可以指定用户凭证(APPID、SecretId 和 SecretKey)。

注意事项

  1. 目前单个云函数支持的触发器相关限制,可见 配额及限制
  2. 由于不同云服务的限制,事件源映射关系有着特定的限制。例如:对于 COS 触发器而言,同一个 COS Bucket 的相同事件(例如文件上传),不能触发多个不同的函数。