活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 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云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心
      文档中心

      函数工作流

      函数工作流

        • 产品简介
        • 产品定义
        • 产品功能
        • 产品优势
        • 常用概念
        • 函数类型
        • 事件函数
        • HTTP函数
        • 权限管理
        • 应用场景
        • 约束与限制
        • 与其他服务依赖关系
        • 计费说明
        • 产品价格
        • 计费项
        • 计费方式
        • 到期与欠费
        • 删除
        • 快速入门
        • FunctionGraph入门简介
        • 使用空白模板创建函数
        • 使用模板创建函数
        • 使用容器镜像部署函数
        • 开发HTTP函数示例
        • 开发事件函数示例
        • 用户指南
        • 使用前必读
        • FunctionGraph使用流程
        • 支持的编程语言
        • 构建函数
        • 创建程序包
        • 使用空白模板创建函数
        • 创建事件函数
        • 创建HTTP函数
        • 使用示例模板创建函数
        • 使用容器镜像部署函数
        • 配置函数
        • 配置初始化
        • 配置常规信息
        • 配置委托权限
        • 配置网络
        • 配置磁盘挂载
        • 配置环境变量
        • 配置函数异步
        • 配置单实例多并发
        • 版本管理
        • 别名管理
        • 配置动态内存
        • 配置心跳函数
        • 在线调试
        • 配置触发器
        • 触发器管理
        • 使用定时触发器
        • 使用APIG(专享版)触发器
        • 使用Kafka触发器
        • 使用LTS触发器
        • 使用CTS触发器
        • 使用DDS触发器
        • 使用RabbitMQ触发器
        • 使用开源Kafka触发器
        • 函数定时触发器Cron表达式规则
        • 调用函数
        • 同步调用
        • 异步调用
        • 重试机制
        • 监控
        • 指标
        • 监控信息说明
        • FunctionGraph服务的监控指标参考
        • 创建告警规则
        • 日志
        • 查看函数日志
        • 管理函数日志
        • 函数管理
        • 依赖包管理
        • 预留实例管理
        • 函数流管理
        • 函数流简介
        • 创建函数流任务
        • 函数流执行历史管理
        • 创建函数流触发器
        • 流式文件处理
        • 最佳实践
        • 使用SpringBoot构建FunctionGraph HTTP函数
        • 创建使用自定义认证且后端为FunctionGraph的API
        • 函数+APIG:处理文件上传
        • 使用Go构建FunctionGraph HTTP函数
        • 常见问题
        • 计费类
        • 购买类
        • 通用类
        • 操作类
        • 文档下载
        • 相关协议
        • 天翼云函数工作流服务协议
        • 天翼云函数工作流服务等级协议
          无相关产品

          本页目录

          帮助中心函数工作流快速入门使用容器镜像部署函数开发事件函数示例
          开发事件函数示例
          更新时间 2025-01-13 16:37:09
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          最近更新时间: 2025-01-13 16:37:09
          分享文章
          • 新浪微博
          • 微信
            扫码分享
          • 复制链接
          本章介绍函数工作流的开发事件函数的示例。

          概述

          使用自定义镜像开发事件函数时,用户需要在镜像中实现一个http server,并监听8000端口接收请求。其中,请求路径/init 默认为函数初始化入口,请根据需要实现该接口。请求路径/invoke为函数执行入口,触发器事件转到该接口处理。

          步骤一:准备环境

          本章节所有操作均默认具有操作权限,请确保您登录的用户已有“FunctionGraph Administrator”权限,即FunctionGraph服务管理员权限。

          步骤二:制作镜像

          以在linux x86 64位系统上制作镜像为例。

          1. 创建一个空文件夹
          mkdir custom_container_event_example && cd custom_container_evnet_example
          
          1. 以Nodejs语言为例,实现一个Http Server,处理函数初始化init请求和函数调用invoke请求并响应。

          创建一个main.js文件,引入express框架,实现Method为POST和Path为/invoke的函数执行入口,实现Method为POST和Path为/init的函数初始化入口。

          const express = require('express');  
            
          const PORT = 8000;  
            
          const app = express();  
          app.use(express.json()); 
            
          app.post('/init', (req, res) => {  
            console.log('receive', req.body); 
            res.send('Hello init\n');  
          });  
            
          app.post('/invoke', (req, res) => {  
            console.log('receive', req.body); 
            res.send('Hello invoke\n');  
          });  
            
          app.listen(PORT, () => {  
            console.log(`Listening on http://localhost:${PORT}`);  
          });
          
          1. 创建一个package.json文件,此文件用于向npm提供信息,使其能够识别项目以及处理项目的依赖关系。
          { 
            "name": "custom-container-event-example", 
            "version": "1.0.0", 
            "description": "An example of a custom container event function", 
            "main": "main.js", 
            "scripts": {}, 
            "keywords": [], 
            "author": "", 
            "license": "ISC", 
            "dependencies": { 
                "express": "^4.17.1" 
            } 
          }
          

          name:值为项目名。

          version:值为项目版本。

          main:列举文件为库的主入口。

          dependencies:列出npm上可用的项目的所有依赖项。

          1. 创建Dockerfile文件
          FROM node:12.10.0 
            
          ENV HOME=/home/custom_container \ 
               GROUP_ID=1003 \ 
          GROUP_NAME=custom_container \ 
               USER_ID=1003 \ 
          USER_NAME=custom_container 
            
          RUN mkdir -m 550 ${HOME} && \ 
               groupadd -g ${GROUP_ID} ${GROUP_NAME} && \ 
          useradd -u ${USER_ID} -g ${GROUP_ID} ${USER_NAME}  
            
          COPY --chown=${USER_ID}:${GROUP_ID} main.js ${HOME}  
          COPY --chown=${USER_ID}:${GROUP_ID} package.json ${HOME} 
            
          RUN cd ${HOME} && npm install 
            
          RUN chown -R ${USER_ID}:${GROUP_ID} ${HOME} 
            
          RUN find ${HOME} -type d | xargs chmod 500 && \ 
          find ${HOME} -type f | xargs chmod 500 
            
          USER ${USER_NAME}  
          WORKDIR ${HOME} 
            
          EXPOSE 8000  
          ENTRYPOINT ["node", "main.js"]
          

          FROM:指定基础镜像为node:12.10.0,基础镜像必须设置,值可修改。

          ENV:设置环境变量,设置HOME环境变量为/home/custom_container,设置GROUP_NAME和USER_NAME为custom_container,USER_ID和GROUP_ID为1003,这些环境变量必须设置,值可修改。

          RUN:格式为RUN <命令>,例如RUN mkdir -m 550 {HOME}表示构建容器时创建{USER_NAME}用户的home目录。

          USER:切换${USER_NAME}用户。

          WORKDIR:切换工作目录到${USER_NAME}用户的home目录下。

          COPY:将main.js和package.json拷贝到容器的${USER_NAME}用户的home目录下。

          EXPOSE:暴露容器的8000端口,请勿修改。

          ENTRYPOINT:使用node /home/tester/main.js命令启动容器。

          说明

          1. 可以使用任意基础镜像。

          2. 在云上环境会默认使用uid 1003,gid 1003 启动容器。uid、gid可以在函数页面的设置 > 常规设置 >容器镜像覆盖板块中修改,但不可以是root或其他保留id。

          5.构建镜像

          指定镜像的名称为custom_container_event_example,版本为latest,“.”指定Dockerfile所在目录,镜像构建命令将该路径下所有的内容打包给容器引擎帮助构建镜像。

          docker build -t custom_container_event_example:latest .
          

          步骤三:本地验证

          1. 启动docker容器
          docker run -u 1003:1003 -p 8000:8000 custom_container_event_example:latest
          
          1. 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/init路径
          curl -XPOST -H 'Content-Type: application/json' localhost:8000/init
          

          按照模块代码中返回

          Hello init
          
          1. 打开一个新的命令行窗口,向开放的8000端口发送消息,访问模板代码中指定的/invoke路径
          curl -XPOST -H 'Content-Type: application/json' -d '{"message":"HelloWorld"}' localhost:8000/invoke
          

          按照模块代码中返回

          Hello invoke
          
          1. 在容器启动端口可以看到
          Listening on http://localhost:8000 
          receive {} 
          receive { message: 'HelloWorld' }
          

          图片1.png

          或者使用docker logs命令获取容器的日志

          图片2.png

          步骤四:上传镜像

          1. 登录容器镜像服务控制台,在左侧导航栏选择“我的镜像”。
          2. 单击右上角的“客户端上传”或“页面上传”。
          3. 根据指示上传镜像。

          图片3.png

          1. 上传成功后,在“我的镜像”界面可查看。

          步骤五:创建函数

          1. 登录函数工作流控制台,在左侧的导航栏选择“函数 > 函数列表”。
          2. 单击右上方的“创建函数”,进入“创建函数”页面,使用容器镜像部署函数。
          3. 填写基本信息。

          函数类型:选择“事件函数”

          函数名称:输入“custom_container_event”

          容器镜像:选择上一步上传到SWR的镜像。

          现有委托:使用包含SWR Admin权限的委托。

          1. 完成后单击“创建函数”。
          2. 在函数详情页“设置 > 高级设置”,开启“初始化函数”,即调用init接口进行初始化。

          步骤六:测试函数

          1. 在函数详情页,单击“测试”,在弹窗中创建新的测试事件。
          2. 选择“空白模板”,事件名称输入“helloworld”,测试事件修改为如下所示,完成后单击“创建”。
          { 
              "message": "HelloWorld" 
          }
          

          步骤七:查看执行结果

          单击helloworld事件的“测试”,执行后,在右侧查看执行结果,执行结果如下图。

          执行结果

          图片4.png

          • “函数返回”显示函数的返回结果。
          • “日志”部分显示函数执行过程中生成的日志。
          • “执行摘要”部分显示“日志”中的关键信息。

          步骤八:查看监控指标

          在函数详情页面,选择“监控”页签。

          • 在“监控”页签,先选择“指标”,再选择时间粒度(5分钟、15分钟、1小时),查看函数运行状态。
          • 可以查看的指标有:调用次数、错误次数、运行时间(包括最大运行时间、最小运行时间、平均运行时间)、被拒绝次数。

          步骤九:删除函数

          在函数详情页面,单击右上角的“操作 > 删除函数”。

          在确认框继续单击“确认”,及时释放资源。

          文档反馈

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

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

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

          知道了

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