云服务器内容精选

  • 规则详情 表1 规则详情 参数 说明 规则名称 function-graph-settings-check 规则展示名 检查 函数工作流 参数设置 规则描述 函数工作流的运行时、超时时间、内存限制不在指定范围内,视为“不合规”。 标签 fgs 规则触发方式 配置变更 规则评估的资源类型 fgs.functions 规则参数 runtimeList:允许的运行时列表,当前支持的运行时请参见函数管理,例如“Python3.6”。 timout:执行超时时间,单位为秒。 memorySize:函数实例内存规格限制,单位为MB。
  • Python的initializer入口介绍 FunctionGraph目前支持以下Python运行环境。 Python 2.7 (runtime = python2.7) Python 3.6 (runtime = python3) Python 3.9(runtime = python3) Python 3.10(runtime = python3) Initializer入口格式为: [文件名].[initializer名] 示例:实现initializer接口时指定的Initializer入口为main.my_initializer,那么FunctionGraph会去加载main.py中定义的my_initializer函数。 在FunctionGraph中使用Python编写initializer,需要定义一个Python函数作为initializer入口,一个最简单的initializer(以Python 2.7版本为例)示例如下。 def my_initializer(context): print 'hello world!' 函数名 my_initializer需要与实现initializer接口时的Initializer字段相对应,实现initializer接口时指定的Initializer入口为main.my_initializer ,那么函数服务会去加载main.py中定义的my_initializer函数。 context参数 context参数中包含一些函数的运行时信息,例如:request id、临时AccessKey、function meta等。
  • 函数定义 建议使用Python 3.6版本。 对于Python,FunctionGraph运行时支持Python 2.7版本、Python 3.6、Python3.9、Python3.10版本。 函数有明确的接口定义,如下所示。 def handler (event, context) 入口函数名(handler):入口函数名称,需和函数执行入口处用户自定义的入口函数名称一致。 执行事件(event): 函数执行界面由用户输入的执行事件参数, 格式为JSON对象。 上下文环境(Context):Runtime提供的函数执行上下文,其接口定义在SDK接口说明。
  • SDK接口 Context类中提供了许多上下文方法供用户使用,其声明和功能如表1所示。 表1 Context类上下文方法说明 方法名 方法说明 getRequestID() 获取请求ID。 getRemainingTimeInMilliSeconds () 获取函数剩余运行时间。 getAccessKey() 获取用户委托的AccessKey(有效期24小时),使用该方法需要给函数配置委托。 说明: 当前函数工作流已停止维护Runtime SDK 中getAccessKey接口,您将无法使用getAccessKey获取临时AK。 getSecretKey() 获取用户委托的SecretKey(有效期24小时),使用该方法需要给函数配置委托。 说明: 当前函数工作流已停止维护Runtime SDK 中getSecretKey接口,您将无法使用getSecretKey获取临时SK。 getSecurityAccessKey() 获取用户委托的SecurityAccessKey(有效期24小时),使用该方法需要给函数配置委托。 getSecuritySecretKey() 获取用户委托的SecuritySecretKey(有效期24小时),使用该方法需要给函数配置委托。 getSecurityToken() 获取用户委托的SecurityToken(有效期24小时),使用该方法需要给函数配置委托。 getUserData(string key) 通过key获取用户通过环境变量传入的值。 getFunctionName() 获取函数名称。 getRunningTimeInSeconds () 获取函数超时时间。 getVersion() 获取函数的版本。 getMemorySize() 分配的内存。 getCPUNumber() 获取函数占用的CPU资源。 getPackage() 获取函数组。 getToken() 获取用户委托的token(有效期24小时),使用该方法需要给函数配置委托。 getLogger() 获取context提供的logger方法,返回一个日志输出类,通过使用其info方法按“时间-请求ID-输出内容”的格式输出日志。 如调用info方法输出日志: log = context.getLogger() log.info("test") getAlias 获取函数的别名 getToken()、getAccessKey()和getSecretKey()方法返回的内容包含敏感信息,请谨慎使用,避免造成用户敏感信息的泄露。
  • 执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表2 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "errorType": "", "stackTrace": [] } errorMessage:Runtime返回的错误信息 errorType:错误类型 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
  • 停止共享 资源所有者如果不再需要某个共享时,可以随时将其删除,删除共享不会删除共享的资源。共享删除后,共享资源指定的使用者将无法继续使用该共享中的资源,详情请参见删除共享。 资源所有者可以随时更新资源共享实例,支持更新资源共享实例的名称、描述、标签、共享的资源、共享权限以及共享使用者,详情请参见更新共享。 资源使用者如果不再需要访问共享给您的资源,可以随时退出共享。退出共享后,将失去对共享资源的访问权限。 只有当共享资源的指定使用者是华为云账号而不是组织内共享时,才可以退出此共享。如果共享资源的指定使用者是组织,而资源使用者的账号由组织管理,则无法退出此共享,详情请参见退出共享。
  • 支持共享的资源类型和区域 当前函数工作流服务支持共享的资源类型和区域如表2所示: 表2 函数工作流服务支持共享的资源类型和区域 云服务 资源类型 支持共享的区域 FunctionGraph function: 函数 华北-乌兰二零一 华南-广州 西南-贵阳一 亚太-曼谷 亚太-雅加达 华东-上海一 华东-上海二 华北-北京一 华北-北京四 中国-香港 华南-广州 亚太-新加坡 土耳其-伊斯坦布尔 中东-利雅得
  • 共享函数资源简介 基于 资源访问管理 (Resource Access Manager,简称 RAM )服务,函数工作流服务可以实现跨账号共享函数资源,资源所有者将资源同时共享给多个其他账号使用,资源使用者接受共享邀请后就可以访问和使用共享的函数资源,就像拥有它们一样。资源所有者可以依据最小权限原则和不同的使用诉求,选择不同的共享权限,资源使用者只能对资源进行权限内的访问,保证共享资源在满足资源使用者业务诉求的同时,提升资源管理的安全性。关于RAM服务的更多信息请参见什么是资源访问管理。 当您的账号由华为云组织管理时,您还可以利用此优势更轻松地共享资源。如果您的账号在组织中,则您可以与单个账号共享,也可以与组织或OU中的所有账号共享,而不必枚举每个账号,具体请参见启用与组织共享资源。
  • 计费构成分析(场景一) 因为函数A、B和C使用不同类型实例,因此需要分段计算费用,具体明细如表2所示。 表2 计费明细分析 计费项 计费明细 请求总次数费用 (200万次+10万次+10万次-100万次)* 1.33元/100万次=1.596元 执行总时间费用 函数A累计执行总时间:512MB/1024MB * (500毫秒/1000毫秒) * 200万次 =50万GB-秒。 函数B累计执行总时间:128MB/1024MB * (12*24*60*60)=129,600GB-秒。 函数C执行时间分为两部分: 执行时间:128MB/1024MB * 5秒 * 10万次=62,500GB-秒; 空闲时间:128MB/1024MB *(10*24*60*60 - 5秒 * 10万次)=45,500GB-秒。 函数A、B、C累计执行总时间费用:0.00011108元/GB-秒 *(50万GB-秒+129,600GB-秒+62,500GB-秒-40万GB-秒)+45,500GB-秒 * 0.000033324元/GB-秒=33.96271元 总费用 请求总次数费用+执行总时间费用=1.596元+33.96271元=35.55871元≈35.56元
  • 计费场景二 某用户于2023年5月份创建了一个标准函数流,该标准函数流配置信息如表3所示: 表3 标准函数流配置信息 函数流节点 说明 1个开始节点和1个结束节点 假设5月份期间: 该标准函数流累计执行次数为1万次; 所有函数节点都是未使用预留实例,且每个函数内存配置是512MB、执行一次时间是500毫秒; 1个循环节点,其中循环节点内包含2个函数节点 1个并行分支节点,且分支出2个支线,分别是1个函数节点和1个子流程节点 并行分支节点中的子流程节点中包含2个函数节点 以上标准函数流配置如图1所示。那么,在5月份期间,该函数流总共产生多少费用? 图1 标准函数流
  • 计费场景一 某用户在4月份创建了3个函数A、B、C,如表1所示。假设在4月份中,函数A累计执行次数是200万次、函数B累计执行次数是10万次、函数C累计执行次数10万次,那么4月份中函数A、B和C总共产生多少费用? 表1 函数创建详情 函数名称 说明 函数A(未使用预留实例) 2023/04/05创建,假设函数A内存是512MB,执行一次时间是500毫秒。 函数B(使用预留实例且未开启空闲模式) 2023/04/18创建,假设函数B内存128MB,执行一次时间10秒,并在2023/04/30删除函数B,即函数B存活时间为12天。 函数C(使用预留实例且开启空闲模式) 2023/4/20创建,假设函数C内存128MB,执行一次时间5秒,并在2023/04/30删除函数C,即函数C存活时间为10天。
  • 计费构成分析(场景二) 标准函数流中累计节点执行次数总和:(循环节点1次+循环节点内函数2次+并行分支1次+并行分支中函数1次+并行分支中子流程1次+子流程中函数2次)* 1万=8万次。 所有函数节点累计请求总次数费用:(循环节点内函数2次+并行分支中函数1次+子流程中函数2次)* 1万=5万次,由于5万次小于每月免费100万次额度,所以累计请求总次数费用为0元。 所有函数节点累计执行总时间费用:512MB/1024MB * (500毫秒/1000毫秒) * (循环节点内函数2次+并行分支中函数1次+子流程中函数2次)* 1万=1.25万GB-秒,由于1.25万GB-秒小于每月免费40万GB-秒额度,所以累计执行总时间费用为0元。 标准函数流中节点执行次数统计时,除开始、结束、异常处理这3个不统计外,其余节点都要被统计。 综上所述,由于标准函数流每月有免费5000次节点执行次数,因此5月份该标准函数流总费为(8万次-5000次)* 0.17元/千次 + 0元 + 0元 =12.75元。 上述两个计费场景中涉及的函数执行时间、请求次数、内存大小、计费单价等仅供参考,具体请以实际为准。 根据以上“单位价格”计算出价格后,截取到“分”扣费,价格计算器上的金额如果遇小数点,则保留小数点后两位,第三位四舍五入。如遇四舍五入后不足¥0.01 ,则按¥0.01 展示。具体详情请参考价格详情。
  • 预留实例计费规则 预留实例的创建和释放由用户管理,根据预留实例的执行时长计费。通过预留实例,用户能够预热函数,从而彻底消除冷启动对延时的影响。 当用户调用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毫秒计费。例如,函数A执行了0.5毫秒、函数B执行了2.3毫秒,则计算函数资源消耗时,函数A执行时间按照1毫秒计费、函数B执行时间按照3毫秒计费。 使用预留实例情况下,执行时间是从实例创建成功后开始算起到用户调用API释放预留实例为止。计量粒度是1秒,不足1分钟按1分钟计算,超过一分钟的部分,按照秒的粒度向上取整计算,比如运行时间为51秒,将按60秒计算;运行时间为60.5秒,则按61秒计算,以此类推。
  • 适用计费项 函数工作流实际费用是由请求次数费用、执行时间费用、函数流节点执行次数和其他费用构成,各计费项按需计费说明请参见表1。 表1 计费项说明 计费项 说明 请求次数 在您使用函数的过程中会产生请求次数费用,请求次数是所有函数的请求总数。 执行时间费用(非预留实例) 执行时间费用包含两个变量:执行时间和函数分配的内存大小。以下介绍计算资源消耗的方式: 函数计算资源消耗是函数所选内存和函数执行时间的乘积,执行时间是从函数代码开始执行的时间算起到其返回或终止的时间为止,计量的粒度是1毫秒,不足1毫秒按1毫秒计费。 执行时间费用(预留实例) 执行时间费用包含两个变量:执行时间和函数分配的内存大小。以下介绍计算资源消耗的方式: 函数计算资源消耗是函数所选内存和函数执行时间的乘积,执行时间是从实例创建成功后开始算起到用户调用API释放预留实例为止。如果预留实例存活时间不足1分钟,将按照 1 分钟计算,超过一分钟的部分,按照秒的粒度向上取整计算。 节点执行次数(函数流) 函数流中除开始、结束和异常分支节点外,其他节点都要统计执行次数计费。 其他费用 在您使用函数工作流服务过程中,如果搭配使用了其它华为云服务,如OBS、 SMN 等,则您需要为该服务支付额外的费用,具体费用请参考价格详情。