云服务器内容精选

  • 资源包说明 您可以通过包年(资源包)的方式,提前购买请求次数和计量时间,获取更多的优惠。超出资源包的部分自动转按需计费。如何购买请参考资源包购买。 当前资源包方式仅支持华东-上海一。 函数工作流服务暂不支持退订资源包,建议您在购买资源包前提前规划资源的请求次数和计量时间。 函数工作流服务资源包仅支持抵扣资源包购买后产生的费用,不支持抵扣资源包购买前产生的费用。例如某用户于2023年7月15日购买了1亿请求次数规格资源包,且资源包于购买当天立即生效。那么2023年7月15日购买资源包生效时间前用户使用函数工作流产生的费用不能用资源包抵扣,2023年7月15日生效时间后使用函数工作流产生的请求次数费用可以用资源包抵扣。 FunctionGraph提供的资源包类型如表1所示,各类型资源包中不同规格的价格具体以实际显示为准。 表1 包年资源包类型说明 资源包类型 规格 函数调用包 1亿请求、10亿请求、100亿请求、1000亿请求、5000亿请求 活跃内存计量包 100万GB-秒内存计量时间、1000万GB-秒内存计量时间、1亿GB-秒内存计量时间、10亿GB-秒内存计量时间、100亿GB-秒内存计量时间 GPU计量包 50万GB-秒GPU计量时间、100万GB-秒GPU计量时间、1000万GB-秒GPU计量时间、1亿GB-秒GPU计量时间、10亿GB-秒GPU计量时间
  • 资源包抵扣顺序 抵扣顺序原则 当购买了多个相同类型的资源包,会按照资源包过期时间顺序进行抵扣,如表2所示,优先抵扣过期时间近的资源包。 表2 抵扣顺序原则介绍 场景 某客户分别购买了两个函数调用包 资源包A:规格1亿请求次数,2023年4月10日 生效,购买时长1年,即2024年4月10日 到期。 资源包B:规格2亿请求次数,2023年5月10日 生效,购买时长1年,即2024年5月10日 到期。 抵扣顺序 2023年4月10日~2023年5月9日 只有资源包A生效。 2023年5月10日~2024年4月10日 资源包A、B同时生效,叠加使用。 优先使用资源包A抵扣,若超出资源包A的1亿请求次数的部分使用资源包B抵扣,超出资源包B的2亿请求次数部分则按需计费。 2024年4月11日~2024年5月10日 资源包A过期,只有资源包B生效 使用资源包B抵扣,超出资源包B的2亿请求次数部分按需计费。 2024年5月11日~ 资源包A、B均过期,此时为按需计费。
  • 预留实例计费规则 预留实例的创建和释放由用户管理,根据预留实例的执行时长计费。通过预留实例,用户能够预热函数,从而彻底消除冷启动对延时的影响。 当用户调用API创建预留实例时,在预留实例创建成功后开始计费。 当用户调用API释放预留实例时,新的请求不会再路由到该预留实例上,因此该预留实例将在限定的时间内被释放,预留实例释放时停止计费。 图1 预留实例生命周期 如上图1所示,计费时长为T1~T4。 预留实例计量粒度为秒,不足一分钟,按照一分钟计费。超过一分钟,按照实际执行时长计费。 例如预留实例执行时长为51秒,按照1分钟计费。执行时长为61秒,则计费时长仍然为61秒。 执行时间费用的单位为GB-秒,指函数内存规格为1GB时,执行1秒的费用。
  • 计费周期 华为云函数工作流 FunctionGraph 按照实际使用量付费,没有最低消费。计费模式采用累计分档计费,按天结算,即每日3点后对前一日使用量进行扣费。例如,2023-05-11 00:00:00至2023-05-11 23:59:59期间产生的费用,通常会在2023-05-12 03:00:00左右完成扣费。 函数响应事件通知或调用(包括控制台的测试调用)开始执行时记为一次请求,请求次数是所有函数的请求总数。 未使用预留实例情况下,执行时间是从函数代码开始执行的时间算起到其返回或终止的时间为止。计量粒度是1秒,不足1秒按1秒计费,超过1秒按实际执行时间计算。 使用预留实例情况下,执行时间是从实例创建成功后开始算起到用户调用API释放预留实例为止。计量粒度是1秒,不足1分钟按1分钟计算,超过一分钟的部分,按照秒的粒度向上取整计算,比如运行时间为51秒,将按60秒计算;运行时间为60.5秒,则按61秒计算,以此类推。
  • 适用计费项 函数工作流实际费用是由请求次数费用、执行时间费用、函数流节点执行次数和其他费用构成,各计费项按需计费说明请参见表1。 表1 计费项说明 计费项 说明 请求次数 在您使用函数的过程中会产生请求次数费用,请求次数是所有函数的请求总数。 执行时间费用 执行时间费用包含两个变量:执行时间和函数分配的内存大小。同时函数工作流又提供预留和按量两种类型的实例。以下介绍二者计算资源消耗的方式: 未使用预留实例的情况下,函数计算资源消耗是函数所选内存和函数执行时间的乘积,执行时间是从函数代码开始执行的时间算起到其返回或终止的时间为止,计量的粒度是1秒,不足1秒按1秒计费。 使用预留实例的情况下,函数计算资源消耗是函数所选内存和函数执行时间的乘积,执行时间是从实例创建成功后开始算起到用户调用API释放预留实例为止。如果预留实例存活时间不足1分钟,将按照 1 分钟计算,超过一分钟的部分,按照秒的粒度向上取整计算。 节点执行次数(函数流) 函数流中除开始、结束和异常分支节点外,其他节点都要统计执行次数计费。 其他费用 在您使用函数工作流服务过程中,如果搭配使用了其它华为云服务,如OBS、SMN等,则您需要为该服务支付额外的费用,具体费用请参考价格详情。
  • 函数运行资源限制 表2 函数运行资源限制说明 资源 默认值 是否可通过用户自己调整配额 临时磁盘空间(“/tmp”空间) 512MB 否,如需调整请咨询函数工作流服务客服。 文件描述符 1024 否,如需调整请咨询函数工作流服务客服。 进程和线程数(总和) 1024 否,如需调整请咨询函数工作流服务客服。 单个请求最大执行时长 259200秒 是 函数同步调用请求正文有效负载大小 6MB 否,如需调整请咨询函数工作流服务客服。 函数同步调用响应正文有效负载大小 6MB 否,如需调整请咨询函数工作流服务客服。 函数异步调用请求正文有效负载大小 256KB 否,如需调整请咨询函数工作流服务客服。 函数导入的资源大小 zip格式压缩文件,大小50MB以内 否,如需调整请咨询函数工作流服务客服。 单个自定义镜像函数最大允许镜像大小 10GB 否,如需调整请咨询函数工作流服务客服。 函数导出资源包大小 50MB以内 否,如需调整请咨询函数工作流服务客服。 租户级别实例数限制 1000 是 函数最大申请内存 10G 否,如需调整请咨询函数工作流服务客服。 带宽 无限制 - 单条日志大小 无限制 - Initializer最大运行时间 259200秒 是 函数同步调用响应正文有效负载大小:返回的字符串或返回体序列化后的json字符串默认不大于6MB。具体数据大小会随FunctionGraph系统后台设置产生变化,因为系统后台判断的是序列化之后的数据大小,所以会存在字节级别的误差,误差范围为6MB±100bytes。 FunctionGraph控制台不建议调用执行时间超过90秒的函数;若需要调用执行时间超过90秒的函数,请使用异步调用的方式。 Kafka/DDS/GeminiDB Mongo/DIS触发器调用的请求正文有效负载大小为6M,APIG触发器调用的请求正文有效负载大小为4M。
  • 账户资源限制 账户资源总配额如下所示,配额查询及修改方法,请参考配额管理。 表1 账户资源说明表 资源 限制 是否可通过用户自己调整配额 单个账户下最大允许创建的函数个数 400 否,如需调整请咨询函数工作流服务客服。 单个函数下最大允许创建的版本个数 20 否,如需调整请咨询函数工作流服务客服。 单个函数下最大允许创建的别名个数 10 否,如需调整请咨询函数工作流服务客服。 单个函数版本下最大允许创建的DIS、GeminiDB Mongo、LTS、DDS、Kafka和TIMER触发器总数 10 否,如需调整请咨询函数工作流服务客服。 前端页面上传时,单个代码部署包大小(压缩为.zip/.jar文件) 40MB 否,如需调整请咨询函数工作流服务客服。 调用函数接口时,在线编辑单个函数代码部署包大小(压缩为.zip/.jar文件) 50MB 否,如需调整请咨询函数工作流服务客服。 调用函数接口时,单个代码部署包原始代码大小 zip格式:解压后原始代码大小为1500M OBS桶:最大可上传300M压缩后的代码包 否,如需调整请咨询函数工作流服务客服。 单个账户下最大允许部署包大小 10 GB 否,如需调整请咨询函数工作流服务客服。 单个账户下函数并发执行数 100 是 单个账户下创建预留实例个数 90(单个租户下函数并发执行数*90%) 是 单个函数下所有环境变量的大小 总长度不能超过4096个字符 否,如需调整请咨询函数工作流服务客服。 单个户下最多创建的函数流个数 200 是 单个函数流支持最多节点数 100 是 前端页面展示代码大小 20MB 否,如需调整请咨询函数工作流服务客服。
  • 版本说明 发布日期 版本说明 2022-11-14 新增“安全”章节。 2022-08-19 新增“图解函数工作流服务”章节。 2022-07-15 优化“与其他服务的关系”章节。 2022-05-30 VSCode插件更新。 2022-04-30 支持创建快速函数流 VPC配置情况下支持域名解析 2022-03-30 函数工作流全新改版。 2022-02-25 支持Python 3.9和Node.js 14.18。 2021-12-09 新增函数调用链。 说明: 该特性当前仅“华南-广州、华北-北京四”区域支持。 2021-11-16 新增HTTP函数。 新增函数流服务节点。 新增动态内存配置。 新增自定义镜像。 计费粒度精确到1ms。 新增CodeArts IDE Online支持JAVA、Python函数开发。 新增CodeArts IDE Online支持推送代码文件对比。 2021-07-05 新增加密配置公测上线。 新增开通云日志服务(LTS),使用更丰富的函数日志管理功能。 新增CodeArts IDE Online在线编辑功能。 新增函数工作流功能。 新增延长函数执行超时时间。 新增单函数运行最大实例数和单实例并发数。 说明: 以上新增特性当前仅“西南-贵阳一”和“华北-北京四”区域支持。 2021-06-30 依赖包列表展示ID。 2021-05-30 支持函数长时间(12h)运行。 2021-04-30 提供C#、python、Nodejs、Java语言SDK。 2021-03-30 新增OMS数据同步模板。 2020-12-30 新增APIC触发器。 新增APIG(专享版)触发器。 2020-10-30 新增GeminiDB Mongo触发器。 2020-09-30 DDS触发器支持并发。 2020-08-30 Kafka触发器支持并发,最大消息体为6MB。 2020-06-30 新增预留实例功能。 2020-05-30 新增支持Go 1.x Runtime。 2020-04-30 新增支持Node.js 10.16 Runtime。 新增支持Node.js 12.13 Runtime。 2020-03-30 删除工作流相关介绍。 新增支持C#(.NET Core 3.1)。 2020-02-25 支持配置企业项目。 2020-01-05 新增细粒度权限配置功能。 2019-12-31 新增Kafka触发器。 2019-11-26 函数模板分类优化。 新增筛选错误日志功能。 2019-10-16 总览界面新增月度统计功能。 2019-09-30 新增DDS触发器。 2019-08-16 支持测试事件持久化。 支持定制运行时。 支持挂载文件系统。 2019-5-27 函数服务代码在线编辑页面优化,新增函数在线测试及返回、快速创建多层级Python模块等。 函数模板支持与周边云服务集成。 函数新增PHP Runtime,支持PHP7.3,并支持在线编辑。 2019-3-15 函数新增版本分流功能。支持版本灰度发布,在创建别名时可以绑定多版本,并且可以设置主版本和灰度版本的权重。 函数新增支持配置VPC功能。用户支持创建虚拟私有云(VPC)并访问自己VPC内的资源,同时支持通过SNAT方式绑定EIP访问外网。 C#sdk增加json序列化和反序列接口。 2019-3-4 函数新增初始化功能。 函数工作流API2.0版上线。 2019-1-26 Sandbox AOS远程部署实现package、deploy命令合并。 函数内存配置新增了1792,2048,2560,3072,3584,4096 内存。 函数优化执行委托和配置委托功能。 函数支持分版本查看日志特性。 2018-12-25 Sandbox新增函数自动生成功能。 Sandbox新增支持Windows系统功能。 2018-11-30 函数新增函数应用导入导出功能。 新增函数执行委托与触发器委托可独立设置功能。 2018-11-16 函数实现与云监控服务的对接, 新增FunctionGraph监控说明。 函数新增依赖包管理模块,统一管理用户所有依赖包。 函数新增日志下载功能。 2018-11-2 新增支持C#Runtime,对于C#,FunctionGraph运行时目前支持C#(.NET Core 2.0)、C#(.NET Core 2.1)版本。 新增工具箱页面,提供sdk、cli、sandbox等工具的下载,以及在线费用计算器的使用。 2018-10-18 函数实现与云监控服务的对接,函数上报云监控服务的监控指标、指标的命名空间和维度,用户可以通过云监控服务提供的API接口来检索函数产生的监控指标和告警信息。 函数新增Node.js Runtime集成的三方件:smnsdk、express、fgs-express和request。 2018-09-29 增加函数应用分组功能。 增加函数多目录在线编辑功能。 2018-08-29 新增高危操作保护功能,在删除函数、工作流、触发器、版本、别名时进行确认。 新增函数禁用功能。 新增体验馆,指导使用FunctionGraph构建功能程序,并演示效果。 CLI工具能力增强,支持对话交互模式。 Sandbox工具能力增强,支持加载云端事件。 新增应用模板。 2018-07-28 新增支持Node.js 8.10 Runtime。 优化监控指标,平均延迟优化为最大运行时间、最小运行时间、平均运行时间三个指标。 APIG触发器增加超时配置。 Node.js Runtime集成常用三方件。 新增CTS触发器,实现与华为云云审计服务的对接,可以订阅对应云服务的资源操作事件,当对订阅的资源操作时,会触发函数执行,实现预期功能。 支持将函数代码及配置信息打包导出,支持通过导入的方式创建函数。 Java SDK加入了触发器事件结构体定义,目前支持DMS、DIS、SMN、LTS、TIMER、APIG等六种。在需要使用触发器的场景时,编写相关代码更简单。 2018-07-13 新增LTS触发器,实现了与华为云云日志服务的对接。可以使用FunctionGraph函数对使用云日志服务订阅的日志进行自定义分析。详情请参考使用LTS触发器。 修复已知问题。 2018-06-30 函数与工作流产品及资料合并,定名为FunctionGraph。 合并后的FunctionGraph正式转为商用。
  • 执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表23 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "stackTrace": [] } errorMessage:Runtime返回的错误信息 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
  • Java的initializer入口介绍 函数服务目前支持以下Java运行环境。 Java 8 (runtime = Java8) Java 11(runtime = Java11) Initializer格式为: [包名].[类名].[执行函数名] 示例:创建函数时指定的initializer为com.huawei.Demo.my_initializer,那么FunctionGraph会去加载com.huawei包,Demo类中定义的my_initializer函数。 在函数服务中使用Java实现initializer接口,需要定义一个java函数作为initializer入口,一个最简单的initializer示例如下。 public void my_initializer(Context context) { RuntimeLogger log = context.getLogger(); log.log(String.format("ak:%s", context.getAccessKey())); } 函数名 my_initializer需要与实现initializer接口时的initializer字段相对应。 示例:实现initializer接口时指定的Initializer入口为com.huawei.Demo.my_initializer,那么FunctionGraph会去加载com.huawei包,Demo类中定义的my_initializer函数。 context参数 context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
  • 函数定义 函数有明确的接口定义,如下: 作用域 返回参数 函数名(函数参数,Context参数) 作用域:提供给FunctionGraph调用的用户函数必须定义为public。 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。对于返回参数对象类型,HTTP Response该类型的JSON字符串。 函数名:用户定义函数名称。 用户定义参数,当前函数只支持一个用户参数。对于复杂参数,建议定义为对象类型,以JSON字符串提供数据。FunctionGraph调用函数时,解析JSON为对象。 Context:runtime提供函数执行上下文,其接口定义在SDK接口说明。 创建Java函数时,函数入口参数需要提供函数完整的名字空间,参数格式为:包名.类名.函数名。
  • 示例事件 SMN示例事件 { "record": [ { "event_version": "1.0", "smn": { "topic_urn": "urn:smn:{region}:0162c0f220284698b77a3d264376343a:{function_name}", "timestamp": "2018-01-09T07:11:40Z", "message_attributes": null, "message": "this is smn message content", "type": "notification", "message_id": "a51671f77d4a479cacb09e2cd591a983", "subject": "this is smn message subject" }, "event_subscription_urn": "urn:fss:{region}:0162c0f220284698b77a3d264376343a:function:default:read-smn-message:latest", "event_source": "smn" } ], "functionname": "test", "requestId": "7c307f6a-cf68-4e65-8be0-4c77405a1b2c", "timestamp": "Wed Nov 15 2017 12:00:00 GMT+0800 (CST)" } 表2 参数说明 参数 类型 示例值 描述 event_version String 1.0 事件协议的版本。 topic_urn String 参考示例 SMN事件唯一编号 type String notification 事件的类型 RequestID String 7c307f6a-cf68-4e65-8be0-4c77405a1b2c 请求ID。每个请求的ID取值唯一。 message_id String a51671f77d4a479cacb09e2cd591a983 消息ID。每条消息的ID取值唯一。 Message String this is smn message content 消息内容 event_source String smn 事件源 event_subscription_urn String 参考示例 添加的订阅唯一编号 timestamp String Wed Nov 15 2017 12:00:00 GMT+0800 (CST) 事件发生的时间 OBS示例事件 { "Records": [ { "eventVersion": "2.0", "eventTime": "2018-01-09T07:50:50.028Z", "requestParameters": { "sourceIPAddress": "103.218.216.125" }, "s3": { "configurationId": "UK1DGFPYUKUZFHNQ00000160CC0B471D101ED30CE24DF4DB", "object": { "eTag": "9d377b10ce778c4938b3c7e2c63a229a", "sequencer": "00000000160D9E681484D6B4C0000000", "key": "job.png", "size": 777835 }, "bucket": { "arn": "arn:aws:s3:::syj-input2", "name": "functionstorage-template", "ownerIdentity": { "PrincipalId": "0ed1b73473f24134a478962e631651eb" } } }, "Region": "{region}", "eventName": "ObjectCreated:Post", "userIdentity": { "principalId": "9bf43789b1ff4b679040f35cc4f0dc05" } } ] } 表3 参数说明 参数 类型 示例值 描述 eventVersion String 2.0 事件协议的版本。 eventTime String 2018-01-09T07:50:50.028Z 事件产生的时间。使用ISO-8601标准时间格式。 sourceIPAddress String 103.218.216.125 请求的源IP地址 s3 Map 参考示例 OBS事件内容 object Map 参考示例 object参数内容 bucket Map 参考示例 bucket参数内容 arn String arn:aws:s3:::syj-input2 Bucket的唯一标识符 ownerIdentity Map 参考示例 创建Bucket的用户ID Region String cn-north-1 Bucket所在的地域 eventName String ObjectCreated:Post 配置的触发函数的事件 userIdentity Map 参考示例 请求发起者的华为云账号ID APIG示例事件 { "body": "{\"test\":\"body\"}", "requestContext": { "apiId": "bc1dcffd-aa35-474d-897c-d53425a4c08e", "requestId": "11cdcdcf33949dc6d722640a13091c77", "stage": "RELEASE" }, "queryStringParameters": { "responseType": "html" }, "httpMethod": "GET", "pathParameters": { "path":"value" }, "headers": { "accept-language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2", "accept-encoding": "gzip, deflate, br", "x-forwarded-port": "443", "x-forwarded-for": "103.218.216.98", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8", "upgrade-insecure-requests": "1", "host": "50eedf92-c9ad-4ac0-827e-d7c11415d4f1.apigw.region.cloud.com", "x-forwarded-proto": "https", "pragma": "no-cache", "cache-control": "no-cache", "x-real-ip": "103.218.216.98", "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0" }, "path": "/apig-event-template", "isBase64Encoded": true } 通过APIG服务调用函数服务时,isBase64Encoded的值默认为true,表示APIG传递给FunctionGraph的请求体body已经进行Base64编码,需要先对body内容Base64解码后再处理。 函数必须按以下结构返回字符串。 { "isBase64Encoded": true|false, "statusCode": httpStatusCode, "headers": {"headerName":"headerValue",...}, "body": "..." } 表4 参数说明 参数 类型 示例值 描述 body String "{\"test\":\"body\"}" 记录实际请求转换为String字符串后的内容。 requestContext Map 参考示例 请求来源的API网关的配置信息、请求标识、认证信息、来源信息。 httpMethod String GET 记录实际请求的HTTP方法 queryStringParameters Map 参考示例 记录在API网关中配置过的Query参数以及实际取值。 pathParameters Map 参考示例 记录在API网关中配置过的Path参数以及实际取值。 headers Map 参考示例 记录实际请求的完整Header内容 path String /apig-event-template 记录实际请求的完整的Path信息 isBase64Encoded Boolean True 默认为true DIS示例事件 { "ShardID": "shardId-0000000000", "Message": { "next_partition_cursor": "eyJnZXRJdGVyYXRvclBhcmFtIjp7InN0cmVhbS1uYW1lIjoiZGlzLXN3dGVzdCIsInBhcnRpdGlvbi1pZCI6InNoYXJkSWQtMDAwMDAwMDAwMCIsImN1cnNvci10eXBlIjoiVFJJTV9IT1JJWk9OIiwic3RhcnRpbmctc2VxdWVuY2UtbnVtYmVyIjoiNCJ9LCJnZW5lcmF0ZVRpbWVzdGFtcCI6MTUwOTYwNjM5MjE5MX0", "records": [ { "partition_key": "shardId_0000000000", "data": "d2VsY29tZQ==", "sequence_number": "0" }, { "partition_key": "shardId_0000000000", "data": "dXNpbmc=", "sequence_number": "1" }, { "partition_key": "shardId_0000000000", "data": "RnVuY3Rpb25TdGFnZQ==", "sequence_number": "2" }, { "partition_key": "shardId_0000000000", "data": "c2VydmljZQ==", "sequence_number": "3" } ], "millis_behind_latest": "" }, "Tag": "latest", "StreamName": "dis-swtest" } 表5 参数说明 参数 类型 示例值 描述 ShardID String shardId-0000000000 数据下载分区的ID next_partition_cursor String 参考示例 下一个分区的游标 Records Map 参考示例 存储在DIS通道中的数据单元 partition_key String 参考示例 分区键 data String 参考示例 数据块,由数据生产者添加到数据通道 sequence_number Int 参考示例 每个记录的唯一标识符,由DIS服务自动分配 Tag String latest 通道的标签 StreamName String dis-swtest 通道名称 TIMER示例事件 { "version": "v1.0", "time": "2018-06-01T08:30:00+08:00", "trigger_type": "TIMER", "trigger_name": "Timer_001", "user_event": "User Event" } 表6 参数说明 参数 类型 示例值 描述 version String V1.0 事件协议的版本 time String 2018-06-01T08:30:00+08:00 事件产生的时间 trigger_type String TIMER 触发器的类型 trigger_name String Timer_001 触发器的名字 user_event String User Event 在创建触发器时配置的附加信息 LTS示例事件 { "lts": { "data": "ICB7CiAgICAibG9ncyI6W3sKICAgICAgICAgIm1lc3NhZ2UiOiIyMDE4LTA4LTA4LzA4OjA4OjA4IFtXUk5dIFt0ZXN0LmdvOjA4XVRoaXMgaXMgYSB0ZXN0IG1lc3NhZ2UuIiwKICAgICAgICAgInRpbWUiOjE1MzAwMDk2NTMwNTksCiAgICAgICAgICJob3N0X25hbWUiOiJlY3MtdGVzdCIsCiAgICAgICAgICJpcCI6IjE5Mi4xNjguMS4xIiwKICAgICAgICAgInBhdGgiOiJ2YXIvbG9nL3Rlc3QubG9nIiwKICAgICAgICAgImxvZ191aWQiOiI2NjNkNjkzMC03OTJkLTExZTgtOGIwOC0yODZlZDQ4OGNlNzAiLAogICAgICAgICAibGluZV9ubyI6MQogICAgIH1dLAogICAgIm93bmVyIjogIjYyODBlMTcwYmQ5MzRmNjBhNGQ4NTFjZjVjYTA1MTI5IiwKICAgICJsb2dfZ3JvdXBfaWQiOiAiOTdhOWQyODQtNDQ0OC0xMWU4LThmYTQtMjg2ZWQ0ODhjZTcwIiwKICAgICJsb2dfdG9waWNfaWQiOiAiMWE5Njc1YTctNzg0ZC0xMWU4LTlmNzAtMjg2ZWQ0ODhjZTcwIgogfQ==" } } 表7 Event中涉及的参数解释 参数 类型 示例值 描述 data Sting 参考示例 Base64编码后的数据 CTS示例事件 { "cts": { "time": "2018/06/26 08:54:07 GMT+08:00", "user": { "name": "userName", "id": "5b726c4fbfd84821ba866bafaaf56aax", "domain": { "name": "domainName", "id": "b2b3853af40448fcb9e40dxj89505ba" } }, "request": {}, "response": {}, "code": 204, "service_type": "vpc", "resource_type": "VPC", "resource_name": "workflow-2be1", "resource_id": "urn:fgs:{region}:2d1d891d93054bbaa69b9e866c0971ac:graph:workflow-2be1", "trace_name": "deleteGraph", "trace_type": "ConsoleAction", "record_time": "2018/06/26 08:54:07 GMT+08:00", "trace_id": "69be64a7-0233-11e8-82e4-e5d37911193e", "trace_status": "normal" } } 表8 参数说明 参数 类型 示例值 描述 User Map 参考示例 本次请求的发起用户信息 Request Map 参考示例 事件请求内容 Response Map 参考示例 事件响应内容 Code Int 204 事件响应码,例如200、400 service_type String vpc 发送方的简写,比如vpc,ecs等等 resource_type String VPC 发送方资源类型,比如vm,vpn等等 resource_name String workflow-2be1 资源名称,例如ecs服务中某个虚拟机的名称 trace_name String deleteGraph 事件名称,比如:startServer, shutDown等 trace_type String ConsoleAction 事件发生源头类型,例如ApiCall record_time string 2018/06/26 08:54:07 GMT+08:00 cts服务接受到这条trace的时间 trace_id String 69be64a7-0233-11e8-82e4-e5d37911193e 事件的唯一标识符 trace_status String normal 事件的状态 DDS示例事件 { "records": [ { "event_source": "dds", "event_name": "insert", "region": "{region}", "event_version": "1.0", "dds": { "size_bytes": "100", "token": "{\"_data\": \"825D8C2F4D0000001529295A100474039A3412A64BA89041DC952357FB4446645F696400645D8C2F8E5BECCB6CF5370D6A0004\"}", "full_document": "{\"_id\": {\"$oid\": \"5d8c2f8e5beccb6cf5370d6a\"},\"name\": \"dds\",\"age\": {\"$numberDouble\": \"52.0\"}}", "ns": "{\"db\": \"functiongraph\",\"coll\": \"person\"}" }, "event_source_id": "e6065860-f7b8-4cca-80bd-24ef2a3bb748" } ] } 表9 参数说明 参数 类型 示例值 描述 region String cn-north-1 DDS实例所在的地域 event_version String 1.0 事件协议的版本 event_source String dds 事件的来源 event_name String insert 事件的名字 size_bytes Int 100 消息的字节数 token String 参考示例 Base64编码后的数据 full_document String 参考示例 完整的文件信息 ns String 参考示例 列名 event_source_id e6065860-f7b8-4cca-80bd-24ef2a3bb748 参考示例 事件源唯一标识符 Kafka示例事件 { "event_version": "v1.0", "event_time": 1576737962, "trigger_type": "KAFKA", "region": "{region}", "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b", "records": [ { "messages": [ "kafka message1", "kafka message2", "kafka message3", "kafka message4", "kafka message5" ], "topic_id": "topic-test" } ] } 表10 参数说明 参数 类型 示例值 描述 event_version String v1.0 事件协议的版本 event_time String 2018-01-09T07:50:50.028Z 事件发生的时间 trigger_type String KAFKA 事件类型 region String cn-north-1 Kafka实例所在的地域 instance_id String 81335d56-b9fe-4679-ba95-7030949cc76b 创建的Kafka实例的唯一标识符。 messages String 参考示例 消息内容 topic_id String topic-test 消息的唯一标识符 GeminiDB示例事件 { "records": [ { "event_name": "\"insert\"", "event_version": "1.0", "event_source": "gemini_mongo", "region": "{region}", "gemini_mongo": { "full_document": "{\"_id\": {\"$oid\":\"5f61de944778db5fcded3f87\"},\"zhangsan\": \"zhangsan\"}", "ns": "{\"db\": \"zhangsan\",\"coll\": \"zhangsan\"}", "size_bytes": "100", "token": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}" }, "event_source_id": "51153d19-2b7d-402c-9a79-757163258a36" } ], "vernier": "{\"_data\": \"825F61DE940000000129295A1004A2D9AE61206C43A5AF47CAF7C5C00C5946645F696400645F61DE944778DB5FCDED3F870004\"}" } 表11 参数说明 参数 类型 示例值 描述 region String cn-north-1 GeminiDB实例所在的地域 event_source String gemini_mongo 事件的来源 event_version String 1.0 事件协议的版本 full_document String 参考示例 完整的文件信息 size_bytes Int 100 消息的字节数 token String 参考示例 Base64编码后的数据 vernier String 参考示例 游标 RabbitMQ示例事件 { "event_version": "v1.0", "event_time": 1576737962, "trigger_type": "RABBITMQ", "region": "{region}", "records": [ { "messages": [ "rabbitmq message1", "rabbitmq message2", "rabbitmq message3", "rabbitmq message4", "rabbitmq message5" ], "instance_id": "81335d56-b9fe-4679-ba95-7030949cc76b", "exchange": "exchange-test" } ] } 表12 参数说明 参数 类型 示例值 描述 event_version String v1.0 事件协议的版本 Region String cn-north-1 RabbitMQ实例所在的地域 instance_id String 81335d56-b9fe-4679-ba95-7030949cc76b 创建的RabbitMQ实例的唯一标识符。 EG示例事件 RocketMQ自定义事件源 { "datacontenttype": "application/json", "data": { "context": "yyyyy" }, "subject": "ROCKETMQ:region:domainId/projectId:ROCKETMQ:eventSourceName", "specversion": "1.0", "id": "016d5bd3-6231-4e9e-86ef-e451a070d598", "source": "eventSourceName", "time": "2023-04-07T11:51:10Z", "type": "ROCKETMQ:CloudTrace:RocketmqCall" } OBS应用事件源 { "channel_id":"b65779ed-d9d0-4a6c-b312-c767226964cf", "description":"", "name":"subscription-xeak", "sources":[ { "id":null, "name":"HC.OBS.DWR", "detail":{ "bucket":"eventbucket", "objectKeyEncode":true }, "filter":{ "source":[ { "op":"StringIn", "values":[ "HC.OBS.DWR" ] } ], "type":[ { "op":"StringIn", "values":[ "OBS:DWR:ObjectCreated:PUT", "OBS:DWR:ObjectCreated:POST" ] } ], "subject":{ "and":[ { "op":"StringStartsWith", "values":[ "/ddd" ] } ] }, "data":{ "obs":{ "bucket":{ "name":[ { "op":"StringIn", "values":[ "output-your" ] } ] } } } }, "provider_type":"OFFICIAL" } ], "targets":[ { "id":null, "name":"HC.FunctionGraph", "detail":{ "urn":"urn:fss:cn-north-7:c53626012ba84727b938ca8bf03108ef:function:A-nodejs-lqz:pylog:latest", "agency_name":"EG_AGENCY" }, "dead_letter_queue":null, "provider_type":"OFFICIAL", "transform":{ "type":"ORIGINAL", "value":"" } } ] } 云服务事件源: { "specversion":"1.0", "id":"eaf3b6a6-d525-11ed-a4ca-1baaeb906770", "source":"HC.OBS", "type":"OBS:CloudTrace:Others", "datacontenttype":"application/json", "subject":"OBS:cn-north-5:1d60cc02b9814b9e8cab1ff36886cacb/a5b94f2084a14e3eb8273dd224b89d9a:OBJECT", "time":"2023-04-07T09:21:53.271Z", "data":{ "code":"200", "source_ip":"10.62.9.176", "trace_type":"Others", "event_type":"data", "project_id":"a5b94f2084a14e3eb8273dd224b89d9a", "total_time":"138", "content_length":"6887848", "trace_id":"eaf3b6a6-d525-11ed-a4ca-1baaeb906770", "trace_name":"GET.OBJECT", "resource_type":"OBJECT", "trace_rating":"normal", "service_type":"OBS", "tracker_name":"obs-eg", "time":"1680859313271", "resource_name":"fangxin-sdk:SDK/nodejs-sdk.zip", "record_time":"1680859313271", "request_id":"000001875B05B4AB8411EF94DDE202C0", "user":{ "domain":{ "id":"1d60cc02b9814b9e8cab1ff36886cacb", "name":"hwstaff_pub_fcspaasw3" }, "name":"devuser", "id":"0d8880584b0090271f7cc00857a7c7b9" } } } 更多云服务事件源,请参见云服务事件源。 表13 参数说明 参数 类型 示例值 描述 datacontenttype String application/json 数据类型 data Map 见示例 数据 subject String 见示例 目标值 specversion String 1.0 版本 id String 见示例 唯一键值 source String eventSourceName 来源名称 time String 见示例 发布订阅时间 type String ROCKETMQ:CloudTrace:RocketmqCall 订阅类型
  • 云审计服务触发器CTS 可以编写FunctionGraph函数,根据CTS云审计服务类型和操作订阅所需要的事件通知,当CTS云审计服务获取已订阅的操作记录后,通过CTS触发器将采集到的操作记录作为参数传递(CTS示例事件)来调用FunctionGraph函数。经由函数对日志中的关键信息进行分析和处理,对系统、网络等业务模块进行自动修复,或通过短信、邮件等形式产生告警,通知业务人员进行处理。CTS触发器的使用请参考使用CTS触发器。
  • 对象存储服务OBS 可以编写FunctionGraph函数来处理OBS存储桶事件,例如对象创建事件或对象删除事件。当用户将一张照片上传到存储桶时,OBS存储桶调用FunctionGraph函数,实现读取图像和创建照片缩略图。OBS对象操作触发函数的过程请参考使用OBS触发器。 表1 OBS支持事件类型 事件 说明 ObjectCreated 表示所有创建对象的操作,包含Put、Post、Copy对象以及合并段。 Put 使用Put方法上传对象。 Post 使用Post方法上传对象。 Copy 使用copy方法复制对象。 CompleteMultipartUpload 表示合并分段任务。 ObjectRemoved 表示删除对象。 Delete 指定对象版本号删除对象。 DeleteMarkerCreated 不指定对象版本号删除对象。 多个事件类型可以作用于同一个目标对象,例如:同时选择“事件类型”复选框中的Put、Copy、Delete等方法作用于某目标对象,则用户往该桶中上传、复制、删除符合前后缀规则的目标对象时,均会发送事件通知给用户。ObjectCreated包含了Put、Post、Copy和CompleteMultipartUpload,如果选择了ObjectCreated,则不能再选择Put、Post、Copy或CompleteMultipartUpload。同理如果选择了ObjectRemoved,则不能再选择Delete或DeleteMarkerCreated。
  • API Gateway 可以通过HTTPS调用FunctionGraph函数,使用API Gateway自定义REST API和终端节点来实现。可以将各个API操作(如GET和PUT)映射到特定的FunctionGraph函数,当向该API终端节点发送HTTPS请求时(APIG示例事件),API Gateway会调用相应的FunctionGraph函数。HTTPS调用触发函数的使用过程请参考使用APIG触发器。