函数计算的正确使用姿势——OSS 触发器

本文涉及的产品
简介: 前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动只需编写代码并上传。函数计算准备计算资源,并以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。

前言

首先介绍下在本文出现的几个比较重要的概念:

函数计算(Function Compute): 函数计算是一个事件驱动只需编写代码并上传。函数计算准备计算资源,以弹性伸缩的方式运行用户代码,而用户只需根据实际代码运行所消耗的资源进行付费。函数计算更多信息 参考

Fun: 是一个用于支持 Serverless 部署工具,能帮助您便捷地管理函数计算、API 网关、日志服务等资源。它通过一个资源配置文件(template.yml),协助您进行开发、构建、部署操作。Fun 的更多文档 参考

通过本文的示例,你将了解:Fun 如何使用 OSS 触发器连接 OSS 和函数计算。

事件源服务

image

事件源服务是可以触发函数服务集合,例如对象存储 OSS,日志服务,API 网关,定时器(Timer)和 HTTP 请求等。事件发生时,承载触发器的事件源服务决定是否运行您的函数。例如,当您创建一个 OSS PutObject 触发器后,上传对象到指定的 OSS Bucket 就是一次事件,继而触发对应函数,这个过程中 OSS 就是事件源服务。函数计算具有丰富的事件源来实现您的各种自定义化的需求。如需了解更多,请参照链接

Fun 配置并部署 OSS 触发器

函数计算触发器描述了一组规则,当某个事件满足这些规则,事件源就会触发相应的函数。阿里云对象存储和函数计算无缝集成。您可以为各种类型的事件设置处理函数,当OSS系统捕获到指定类型的事件后,会自动调用函数处理
Fun 通过一个资源配置文件(template.yml),协助您进行开发、构建、部署。所以我们在 yml 中按照规范去描述 OSS 触发器:

Events:
  oss-trigger-name:
    Type: OSS # trigger type
    Properties:
      BucketName: coco-superme # oss bucket name
      Events:
        - oss:ObjectCreated:*
        - oss:ObjectRemoved:DeleteObject        
      Filter: 
        Key:
          Prefix: source/
          Suffix: .png
  • oss-trigger-name:为用户自定义的 触发器(trigger)名称,名称不允许重复.
  • Type:为事件源集合中的一种,表示事件源类型。Fun 支持的类型请参阅。本 yml 为 OSS。
  • BucketName: oss bucket name,创建 OSS bucket,参考
  • Events:为 OSS 事件类型。
  • Filter:filter为 OSS 对象过滤参数,满足过滤条件的 OSS 对象才可以触发函数,包含如下属性:

    • Key:过滤器支持过滤对象键(Key),包含如下属性:

      • Prefix:匹配前缀
      • Suffix:匹配后缀

一个被存入OSS的文件,如果它是以 source/ 为前缀,并且后缀是 .png 的文件,并且由用户自定义的事件(evens)触发后,OSS 就会自动的调用相应的函数进行处理。示例完整代码

执行 fun deploy,即可创建、配置并部署好相关服务:

using region: cn-shanghai
using accountId: ***********8320
using accessKeyId: ***********mTN4
using timeout: 10

Waiting for service oss-test-service to be deployed...
        Waiting for function oss-test-function to be deployed...
                Waiting for packaging function oss-test-function code...
                package function oss-test-function code done
                Waiting for OSS trigger oss-trigger-name to be deployed...
                function oss-trigger-name deploy success
        function oss-test-function deploy success
service oss-test-service deploy success

PS D:\fun\examples\oss-trigger>

然后我们去函数计算控制台查看我们刚刚定义的 OSS 触发器:

image

可见,名为 oss-trigger-name 的 OSS 触发器已经创建成功,是不是既简单又方便。

注意事项

配置混淆

当我们部署时,出现如下日志:

image

说明在 fc 控制台中配置的触发器 oss 触发器名称与本地配置不匹配。即:FC 控制台配置的触发器集合不在本地配置的触发器之内。fun 不会修改这个触发器。你可以通过控制台删除这个必要时通过 FC 控制台手动触发

循环触发

使用 OSS 触发器一定要避免 循环触发。一个典型的循环触发场景是 OSS 的某个 Bucket 上传文件触发函数执行,这个函数又生成了一个或多个文件,又写回到 OSS 的 Bucket 里,这个写入动作又触发了函数执行,形成了链状循环
上述过程类似于一个无限递归,为了避免这种循环触发函数产生不必要的费用,强烈建议您配置前/后缀,例如将触发函数的 Bucket 目录前缀设置成 src/,生成的文件写入的目录前缀设置为 dst/,这样生成的文件就不会再次触发函数。

总结

  • 在 yml 文件定义 OSS 触发器,所有属性为必填。
  • 当 OSS 系统捕获到相关事件后,会将事件信息编码为 JSON 字符串,传递给事件处理函数,您可以在代码中获取事件信息。此处相关本文不做赘述,感兴趣的同学可以查看相关文档
  • 只要配置无误,您只需要专注于函数逻辑的编写,系统将以实时的、可靠的、大规模并行的方式处理海量的数据
相关实践学习
基于函数计算一键部署掌上游戏机
本场景介绍如何使用阿里云计算服务命令快速搭建一个掌上游戏机。
建立 Serverless 思维
本课程包括: Serverless 应用引擎的概念, 为开发者带来的实际价值, 以及让您了解常见的 Serverless 架构模式
目录
相关文章
|
26天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之生成的图片的oss地址配成自定义的域名如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
22 0
|
18天前
|
存储 Cloud Native Serverless
云原生最佳实践系列 7:基于 OSS Object FC 实现非结构化文件实时处理
阿里云OSS对象存储方案利用函数计算FC,在不同终端请求时实时处理OSS中的原图,减少衍生图存储,降低成本。
|
3月前
|
Serverless
函数计算里FC 3.0中,http触发器配置域名
函数计算里FC 3.0中,http触发器配置域名
|
3月前
|
JavaScript Java Serverless
函数计算中,这里是用的curl的方式,如何改用http的post方式请求?还有如何设置oss打包的zip的保存目录?
函数计算中,这里是用的curl的方式,如何改用http的post方式请求?还有如何设置oss打包的zip的保存目录?
159 0
|
4月前
|
Serverless 对象存储 数据安全/隐私保护
在阿里云函数计算(FC)中使用云对象存储服务(OSS)时,需要为FC实例授予对OSS资源的访问权限
在阿里云函数计算(FC)中使用云对象存储服务(OSS)时,需要为FC实例授予对OSS资源的访问权限
370 1
|
7月前
|
存储 弹性计算 Serverless
使用函数计算打包下载OSS文件
本场景介绍如何使用函数计算将对象存储OSS上多个文件(Object)打包下载到本地。
427 0
|
存储 Serverless 对象存储
函数计算批量处理海量 OSS 文件
函数计算批量处理海量 OSS 文件自制脑图
96 0
函数计算批量处理海量 OSS 文件
|
存储 人工智能 JSON
函数计算与对象存储实现WordCount
Serverless架构可以在很多领域发挥极具价值的作用。包括监控告警、人工智能、图像处理、音视频处理等,同样,在大数据领域,Serverless架构仍然可以具有良好的表现,以大数据常见的入门案例:WordCount为例,可以依靠Serverless架构实现一个“Serverless版本的MapReduce”。
102 0
|
监控 关系型数据库 Serverless
基于 Serverless+OSS 分分钟实现图片秒变素描
在阿里云 Serverless 函数计算服务中部署普通图片转素描图的函数服务,实现批量上传到指定 OSS 桶内的图片自动转换为素描图并保存到另一个 OSS 桶内。
基于 Serverless+OSS 分分钟实现图片秒变素描
|
监控 关系型数据库 Serverless

相关产品

  • 函数计算