活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      函数计算

      函数计算

        • 产品公告
        • 【产品变更】函数计算服务正式商业化公告
        • 产品动态
        • DeepSeek专题
        • DeepSeek专题导航
        • 图解:DeepSeek与公有云深度融合
        • 从基础设施到智能中枢:DeepSeek如何重塑公有云服务价值链
        • 高性能GPU云主机助力DeepSeek深度应用
        • 天翼云SD-WAN与DeepSeek超强联动,开启云上高效互联新时代
        • 实践指南:DeepSeek驱动高效能云生态
        • GPU云主机/弹性云主机:零基础搭建DeepSeek云端环境指南
        • GPU物理机:物理机搭建DeepSeek指南
        • SD-WAN跨境:SD-WAN助力DeepSeek模型定向加速
        • 智算容器:云容器引擎与DeepSeek融合实践
        • 函数计算:天翼云函数计算与DeepSeek大模型
        • 天翼云函数计算一键部署DeepSeek大模型
        • Q&A:典型问题解析与策略应对
        • 产品介绍
        • 什么是函数计算
        • 应用场景
        • 基本概念
        • 产品功能
        • 产品优势
        • 计费说明
        • 计费概述
        • 按量付费
        • 资源包
        • 试用资源包
        • 欠费说明
        • 计费FAQ
        • 快速入门
        • 新手入门
        • 用户指南
        • 应用管理
        • 应用中心简介
        • 管理应用
        • 管理环境
        • 管理流水线
        • 函数创建
        • 标准运行时函数创建
        • 自定义运行时函数创建
        • 容器镜像函数创建
        • 函数配置
        • 版本管理
        • 别名管理
        • 配置环境变量
        • 配置层
        • 配置网络
        • 配置固定公网IP地址
        • 配置存储
        • 配置ZOS对象存储
        • 配置NAS文件存储
        • 配置预留实例
        • 配置单实例并发度
        • 代码开发
        • 代码开发概述
        • Node.js
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Python
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Java
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • Go
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • C#
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • PHP
        • 环境说明
        • 请求处理程序(Handler)
        • 上下文
        • 部署代码包
        • 日志
        • 错误处理
        • 自定义运行时
        • 环境说明
        • 基本原理
        • Web函数
        • 上下文和日志格式
        • 容器镜像函数
        • 容器镜像函数介绍
        • 创建容器镜像函数
        • 上下文及日志格式
        • 事件触发
        • 触发器简介
        • 触发器管理
        • 触发器事件消息格式
        • 定时触发器
        • HTTP触发器
        • 云原生网关触发器
        • Kafka触发器
        • RocketMQ触发器
        • RabbitMQ触发器
        • 事件总线类触发器
        • 概述
        • 日志触发器
        • 对象存储触发器
        • MQTT触发器
        • 函数调用
        • 访问函数
        • 同步调用
        • 异步调用
        • 功能概览
        • 重试策略
        • 结果回调
        • 异步任务
        • 函数实例
        • 实例类型及使用模式
        • 可观测性
        • 监控指标
        • 实例指标
        • 函数指标
        • 日志
        • 配置日志
        • 打印函数日志
        • 高级功能
        • 域名管理
        • 配置自定义域名
        • 为自定义域名配置JWT认证鉴权
        • 层管理
        • 创建自定义层
        • 官方层使用示例
        • 自定义层使用示例
        • 弹性管理
        • 并发实例上限配置
        • 实例伸缩规则及限制
        • 安全与合规
        • IAM访问控制
        • 身份管理
        • 基于身份的权限策略
        • 服务内联委托
        • 权限访问管理
        • 授权函数计算访问其他云函数
        • 授权事件源访问函数计算
        • 常见问题
        • 开通类
        • 通用类
        • 应该什么时候使用函数计算,什么时候使用弹性云主机?
        • 是否可以访问运行函数的机器?
        • 代码开发
        • 可以使用什么语言编写函数?
        • 如何保证代码的安全?
        • 运行环境中所依赖的包如何自动安装?
        • 函数管理
        • 什么是VPC?
        • 如何监控函数执行?
        • 如何用函数访问VPC内的资源?
        • 函数可以访问多少个VPC?
        • 在VPC中的函数如何访问公网?
        • 函数运行时间超过函数最大Timeout时间怎么办?
        • 函数执行超时,报错Function time out after怎么办?
        • 事件触发
        • 触发器不能正常触发函数执行怎么办?
        • 函数实例
        • 如何弹性扩展函数的执行?
        • 如何让实例一直存活不销毁,消除冷启动延时的影响?
        • 如何通过ipv6网络访问函数?
        • 访问其他服务
        • 在函数中如何访问其他服务?
        • 最佳实践
        • 通过函数计算访问VPC内的MySQL实例
        • 函数计算Java冷启动优化最佳实践
        • 通过函数计算部署通义千问
        • API参考
        • API使用说明
        • 相关协议
        • 函数计算产品服务协议
        • 函数计算服务等级协议
          无相关产品

          本页目录

          帮助中心函数计算用户指南事件触发事件总线类触发器对象存储触发器
          对象存储触发器
          更新时间 2024-12-11 14:36:44
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2024-12-11 14:36:44
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本文介绍函数计算支持的对象存储触发器的使用限制、事件类型及触发规则。

          对象存储与函数计算集成后,对象存储事件能触发相关函数执行,实现对对象存储中的数据的自定义处理。

          背景信息

          对象存储和函数计算通过对象存储触发器实现无缝集成,可以编写函数对对象存储事件进行自定义处理,当对象存储捕获到指定类型的事件后,对象存储事件触发相应的函数执行。例如,可以设置函数来处理PutObject事件,当上传图片到对象存储后,相关联的函数会自动被触发来处理该图片。

          对象存储和函数计算集成后,可以自由地调用各种函数处理图像或音频数据,再把结果写回到多种存储服务中。整个架构中,只需要专注于函数逻辑的编写,系统将以实时的、可靠的、大规模并行的方式处理海量的数据。

          对象存储事件定义

          当对象存储系统捕获到相关事件后,会将事件信息编码为JSON字符串,传递给事件处理函数。

          已支持的对象存储事件定义如下表所示。

          事件类型 事件名称 说明
          ObjectCreated s3:ObjectCreated:Put 原子上传对象到Bucket。
          s3:ObjectCreated:Post Post上传对象到Bucket。 -
          s3:ObjectCreated:CompleteMultipartUpload 分段上传对象到Bucket。 -
          s3:ObjectCreated:Copy 拷贝上传。 -
          ObjectRemoved s3:ObjectRemoved:Delete 删除Bucket中对象。
          s3:ObjectRemoved:MultiDelete 批量删除Bucket中对象。 -
          s3:ObjectRemoved:DeleteMarkerCreated 不指定版本号删除多版本Bucket中对象。 -
          ObjectRestore s3:ObjectRestore:Post 对象解冻。

          触发器触发规则

          避免循环触发

          使用对象存储触发器时,请注意避免循环触发。例如,一个典型的循环触发场景是对象存储的某个bucket上传文件事件触发函数执行,此函数执行完成后又生成了一个或多个文件再写回到对象存储的bucket里,这个写入动作又触发了函数执行,形成了链状循环。

          为了避免循环触发函数产生不必要的费用,建议配置文件前缀或文件后缀,例如将触发函数的文件的文件前缀设置为 src,函数执行完成后生成文件的文件前缀设置为 dst,生成的文件将不会再次触发函数。如果不设置文件前缀和文件后缀,表示匹配任意文件前缀和文件后缀。

          配置对象存储触发器

          创建触发器

          1. 登录函数计算控制台,在左侧导航栏,单击函数。
          2. 在顶部菜单栏,选择地域,然后在函数页面,单击目标函数。
          3. 在函数配置页面,选择配置页签,在左侧导航栏,单击触发器,然后单击创建触发器。
          4. 在创建触发器面板,填写相关信息,然后单击确定。

          配置项说明如下。

          配置项 操作 示例
          触发器类型 选择对象存储触发器。 对象存储触发器
          名称 填写自定义的触发器名称。 zos-trigger
          版本或别名 默认值为LATEST。 LATEST
          Bucket 名称 选择已创建的对象存储Bucket。 testbucket
          文件前缀 输入要匹配的文件名称的前缀。建议配置文件前缀和后缀,避免触发事件嵌套循环触发引起额外费用。 source
          文件后缀 输入要匹配的文件名称的后缀。强烈建议配置前缀和后缀,避免触发事件嵌套循环触发引起额外费用。 png
          事件类型 选择一个或多个触发事件。关于对象存储ZOS的事件类型,请参见对象存储事件定义。 s3:ObjectCreated:Put,s3:ObjectCreated:Post,s3:ObjectCreated:CompleteMultipartUpload
          调用方式 选择函数调用方式,默认为同步调用。
          同步调用:事件触发函数执行,等待函数调用完成后,函数计算返回执行结果。
          异步调用:事件触发函数执行后,函数计算立即返回响应结果并且确保函数至少被成功执行一次,但不会返回具体执行结果。适用于调度延时较长的函数。
          同步调用

          开通事件上报

          并非所有Bucket都会主动上报事件,需要通过对象存储产品的Openapi打开指定Bucket的事件上报,方法步骤如下:

          1. Python调用openapi示例

          2. 结合上述示例,执行如下代码,打开指定存储桶的事件上报开关

            def main():
                params = {
                    "regionID": "bb9fdb42056f11eda1610242ac110002", # 华东1地域ID
                    "bucket": "您的桶名称",
                    "bucketEventBridgeEnabled": True
                }
                result=post("https://zos-global.ctapi.ctyun.cn/v4/oss/put-bucket-event-bridge","", params)
                print(result)
            
            if __name__ == "__main__":
                main()
            
          3. 接口返回以下内容即可

            {"message": "SUCCESS", "description": "成功", "statusCode": 800}
            

          配置函数入口参数

          对象存储触发器事件源会以CloudEvents模板作为输入参数传递给函数,可以手动将Event传给函数模拟触发事件。

          Event是函数计算的入口参数,当指定的对象存储Bucket发生指定事件时,会将事件数据以JSON格式发送给绑定的函数。具体格式如下所示。

          {
              "id": "1723530386.250878.3f7f5c***",
              "source": "ctyun.zos",
              "specversion": "1.0",
              "type": "s3:ObjectCreated:Post",
              "subject": "ctyun.zos:b342b77ef26b11e***:5d4ce56a08db4a***:bucket-***:abc.txt",
              "time": "2024-03-05T13:52:18.374Z",
              "data": {
                  "userIdentity": {
                      "principalId": "testuser_sub1"
                  },
                  "responseElements": {
                      "x-amz-request-id": "ec2906f5-e72t-494f-9aa1-f621108***",
                      "x-amz-id-2": "1286b9-zone2-zon***"
                  },
                  "s3": {
                      "bucket": {
                          "name": "bucket-***",
                          "ownerIdentity": {
                              "principalId": "testuser"
                          },
                          "arn": "arn:aws:s3:::bucket-***",
                          "id": "ec2906f5-e72f-494f-9aa1-f6211***"
                      },
                      "object": {
                          "key": "abc.txt",
                          "size": 417791,
                          "etag": "3f7f 5c925b10c789e3e1389***",
                          "versionId": "",
                          "sequencer": "92FCBA66FA6***",
                          "metadata": []
                      }
                  }
              },
              "datacontenttype": "application/json;charset=utf-8",
              "ctyunaccountid": "5d4ce56a08db4ac19***",
              "ctyunuserid": "usertest-userid",
              "ctyunresourceid": "",
              "ctyuneventbusname": "default",
              "ctyunregion": "b342b77ef26b11ecb0***"
          }
          

          Event参数中不同属性字段的解释如下表所示。

          参数 类型 示例值 描述
          id String b5771f76-6cdf-48ed-b1ba-d15418c***** 事件ID。标识事件的唯一值。
          source String ctyun.zos 事件源。对象存储触发器固定为ctyun.zos。
          specversion String 1.0 CloudEvents协议版本。
          type String s3:ObjectCreated:Post 事件类型。
          subject String ctyun.zos:b342b77ef26***:5d4ce56a08d***:bucketname***:objectname*** 事件主体。格式为ctyun.zos::::,其中是资源池ID,是天翼云账号ID,是对象存储产生事件的bucket名称,是对象存储产生事件的文件名称。
          time Timestamp 2024-03-05T13:52:18.374Z 事件产生的时间。
          datacontenttype String application/json;charset=utf-8 参数data的内容形式。
          data Struct {"abc":"1111", "def":"xxxx"} 事件内容。JSON对象,内容由发起事件的服务决定。CloudEvents可能包含事件发生时由事件生产者给定的上下文,data中封装了这些信息。
          ctyunaccountid String 123456789**** 天翼云账号ID。
          ctyunuserid String 123456789**** 天翼云用户ID。
          ctyunresourceid String 27aadda4-db94-11ee-a6fc-e8b47009**** 天翼云资源ID
          ctyuneventbusname String default 接收事件的事件总线名称,天翼云产品事件为default。
          ctyunregion String bb9fdb42056fl1eda161**** 接收事件的地域。

          编写函数代码并测试

          对象存储触发器创建完成后,可以开始编写函数代码并测试,以验证代码的正确性。在实际操作过程中发生对象存储事件时,会自动触发函数执行。

          代码中一定要避免循环触发,否则会产生不必要的费用。一个典型的循环触发场景是对象存储的某个bucket上传文件事件触发函数执行,此函数执行完成后又生成了一个或多个文件再写回到对象存储的bucket里,这个写入动作又触发了函数执行,形成了链状循环。

          Python代码示例:

          # -*- coding: utf-8 -*-
          import json
          import logging
          
          
          def handler(event, context):
              logger = logging.getLogger()
          
              logger.info("print event payload:")
              if event:  # 检查是否为空
                  try:
                      json_data = json.loads(event)
                      logger.info(json.dumps(json_data, indent=4))
                  except json.JSONDecodeError as e:
                      logger.info(
                          "Event is not of JSON type, print raw event data: %s", event)
              else:
                  logger.info("event is empty")
          
              # 测试 CloudEvents 支持(CloudEvents 相关参数编码在 headers 中)
              logger.info("print headers:")
              headers_map = context.headersMap  # 遵循PEP 8命名规范
              logger.info(json.dumps(headers_map, indent=4))
              return 'hello world\n'
          
          文档反馈

          建议您登录后反馈,可在建议与反馈里查看问题处理进度

          鼠标选中文档,精准反馈问题

          选中存在疑惑的内容,即可快速反馈问题,我们会跟进处理

          知道了

          上一篇 :  日志触发器
          下一篇 :  MQTT触发器
          搜索 关闭
          ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
          公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
          备案 京公网安备11010802043424号 京ICP备 2021034386号
          ©2025天翼云科技有限公司版权所有
          京ICP备 2021034386号
          备案 京公网安备11010802043424号
          增值电信业务经营许可证A2.B1.B2-20090001
          用户协议 隐私政策 法律声明