云服务器内容精选

  • 添加sfs turbo文件系统 设置委托 挂载sfs turbo文件系统需要给函数设置委托(至少拥有sfs administrator以及VPC administrator权限)。如果没有对应权限的委托,需要新创建。 设置VPC sfs turbo涉及VPC内部网络访问,添加sfs turbo文件系统前需要给函数配置sfs turbo对应的VPC。 在弹性文件服务中,获取需要挂载的文件系统的VPC和子网信息,具体操作请参见管理文件系统。 参见配置网络开启VPC访问,输入1中获取的VPC和子网。 添加挂载-SFS Turbo 添加sfs turbo和添加sfs过程相似,只要选好需要挂载的文件系统,设置好函数访问路径即可。
  • 场景介绍 使用磁盘挂载功能需要开放如下端口: 111、445、2049、2051、2052、20048。 对于Ubuntu系统还需再开放3个端口,获取方式请在任意目录下执行如下命令。 rpcinfo -p|grep mountd|grep tcp 具体请参见弹性文件服务会占用用户的哪些资源。 目前FunctionGraph函数支持以下文件系统配置。 SFS文件系统 弹性文件服务(Scalable File Service,SFS)提供按需扩展的高性能文件存储(NAS),可为云上多个弹性云服务器(Elastic Cloud Server,E CS ),容器(CCE&CCI),裸金属服务器(BMS)提供共享访问。SFS为用户提供一个完全托管的共享文件存储,能够弹性伸缩至PB规模,具备高可用性和持久性,为海量数据、高带宽型应用提供有力支持。适用于多种应用场景,包括HPC、 媒体处理 、文件共享、内容管理和Web服务等。 SFS Turbo文件系统 SFS Turbo分为SFS Turbo标准型(500GB~32TB)、SFS Turbo标准型-增强版(10TB~320TB)、SFS Turbo性能型(500GB~32TB)和SFS Turbo性能型-增强版(10TB~320TB)。SFS Turbo为用户提供一个完全托管的共享文件存储,能够弹性伸缩至320TB规模,具备高可用性和持久性,为海量的小文件、低延迟高IOPS型应用提供有力支持。适用于多种应用场景,包括高性能网站、日志存储、压缩解压、DevOps、企业办公、容器应用等。详情请参见SFS产品介绍。 ECS共享目录 ECS共享目录是通过nfs服务,把ECS上的指定目录设置为共享文件系统(详情请参见添加ECS共享目录),函数(和ECS相同的VPC配置)可以挂载对应目录进行读写等操作,实现计算资源的动态扩展。此类型适合业务不太频繁的场景。 使用文件系统挂载功能具有以下优势: 函数执行空间相比于/tmp,可以极大扩展存储空间。 多个函数之间可以共享访问已经配置好的文件系统。 ECS计算资源动态扩展,利用ECS已有的存储能力实现更大的计算能力。 您可以在/tmp路径下写临时文件,最大不能超过10,240MB。
  • 添加ECS共享目录 添加委托 挂载ECS共享目录需要给函数设置委托(至少拥有tenant guest以及VPC administrator权限),如果没有对应权限的委托,需要新创建,详情请参见创建委托。 配置VPC 添加ECS共享目录前,也需要给函数配置ECS对应的VPC,可以到ECS详情页的“基本信息”页签中查看“虚拟私有云”。单击虚拟私有云名称,进入虚拟私有云的详情页,查看子网。 获取到这两个信息后,可以在函数配置中配置对应的VPC。 添加挂载-ECS 需要在界面上输入ECS上的共享目录路径信息和函数访问路径。 图1 填写路径信息
  • 规则详情 表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接口说明。
  • 执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表2 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息、错误类型和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "errorType": "", "stackTrace": [] } errorMessage:Runtime返回的错误信息 errorType:错误类型 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
  • 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()方法返回的内容包含敏感信息,请谨慎使用,避免造成用户敏感信息的泄露。
  • 停止共享 资源所有者如果不再需要某个共享时,可以随时将其删除,删除共享不会删除共享的资源。共享删除后,共享资源指定的使用者将无法继续使用该共享中的资源,详情请参见删除共享。 资源所有者可以随时更新资源共享实例,支持更新资源共享实例的名称、描述、标签、共享的资源、共享权限以及共享使用者,详情请参见更新共享。 资源使用者如果不再需要访问共享给您的资源,可以随时退出共享。退出共享后,将失去对共享资源的访问权限。 只有当共享资源的指定使用者是华为云账号而不是组织内共享时,才可以退出此共享。如果共享资源的指定使用者是组织,而资源使用者的账号由组织管理,则无法退出此共享,详情请参见退出共享。
  • 支持共享的资源类型和区域 当前函数工作流服务支持共享的资源类型和区域如表2所示: 表2 函数工作流服务支持共享的资源类型和区域 云服务 资源类型 支持共享的区域 FunctionGraph function: 函数 华北-乌兰二零一 华南-广州 西南-贵阳一 亚太-曼谷 亚太-雅加达 华东-上海一 华东-上海二 华北-北京一 华北-北京四 中国-香港 华南-广州 亚太-新加坡 土耳其-伊斯坦布尔 中东-利雅得
  • 共享函数资源简介 基于 资源访问管理 (Resource Access Manager,简称 RAM )服务,函数工作流服务可以实现跨账号共享函数资源,资源所有者将资源同时共享给多个其他账号使用,资源使用者接受共享邀请后就可以访问和使用共享的函数资源,就像拥有它们一样。资源所有者可以依据最小权限原则和不同的使用诉求,选择不同的共享权限,资源使用者只能对资源进行权限内的访问,保证共享资源在满足资源使用者业务诉求的同时,提升资源管理的安全性。关于RAM服务的更多信息请参见什么是资源访问管理。 当您的账号由华为云组织管理时,您还可以利用此优势更轻松地共享资源。如果您的账号在组织中,则您可以与单个账号共享,也可以与组织或OU中的所有账号共享,而不必枚举每个账号,具体请参见启用与组织共享资源。
  • 计费场景一 某用户在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 展示。具体详情请参考价格详情。
  • 计费构成分析(场景一) 因为函数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 标准函数流