云服务器内容精选
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表23 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和堆栈异常报错信息的JSON文件。格式如下: { "errorMessage": "", "stackTrace": [] } errorMessage:Runtime返回的错误信息 stackTrace:Runtime返回的堆栈异常报错信息 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
函数定义 函数有明确的接口定义,如下: 作用域 返回参数 函数名(函数参数,Context参数) 作用域:提供给FunctionGraph调用的用户函数必须定义为public。 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。对于返回参数对象类型,HTTP Response该类型的JSON字符串。 函数名:用户定义函数名称。 用户定义参数,当前函数只支持一个用户参数。对于复杂参数,建议定义为对象类型,以JSON字符串提供数据。FunctionGraph调用函数时,解析JSON为对象。 Context:runtime提供函数执行上下文,其接口定义在SDK接口说明。 创建Java函数时,函数入口参数需要提供函数完整的名字空间,参数格式为:包名.类名.函数名。
-
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等。
-
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方法输出日志: logg = context.getLogger() logg.info("hello") getAlias 获取函数的别名 getToken()、getAccessKey()和getSecretKey()方法返回的内容包含敏感信息,请谨慎使用,避免造成用户敏感信息的泄露。
-
Node.js的initializer入口介绍 FunctionGraph目前支持以下Node.js运行环境: Node.js6.10 (runtime = Node.js6) Node.js8.10 (runtime = Node.js8) Nodejs10.16(runtime = Node.js10) Nodejs12.13(runtime = Node.js12) Node.js14.18(runtime = Node.js14) Node.js16.17(runtime = Node.js16) Node.js18.15(runtime = Node.js18)
-
执行结果 执行结果由3部分组成:函数返回、执行摘要和日志。 表2 执行结果说明 参数项 执行成功 执行失败 函数返回 返回函数中定义的返回信息。 返回包含错误信息和错误类型的JSON文件。格式如下: { "errorMessage": "", "errorType":"", } errorMessage:Runtime返回的错误信息 errorType:错误类型 执行摘要 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 日志 打印函数日志,最多显示4KB的日志。 打印报错信息,最多显示4KB的日志。
-
Python Runtime集成的非标准库 表3 Python Runtime集成的非标准库 模块 功能 版本号 dateutil 日期/时间处理 2.6.0 requests http库 2.7.0 httplib2 httpclient 0.10.3 numpy 数学计算 1.13.1 redis redis客户端 2.10.5 obsclient OBS客户端 - smnsdk 访问 SMN 服务 1.0.1
-
函数样例工程包下载 本手册使用样例工程包下载地址如表4所示,可以下载到本地,创建函数时上传使用。 表4 样例工程包下载 函数 工程包下载 软件包校验文件 Node.js函数 fss_examples_nodejs.zip fss_examples_nodejs.sha256 Python函数 fss_examples_python2.7.zip fss_examples_python2.7_sha256 Java函数 fss_example_java8.jar fss_example_java8_sha256 Go函数 fss_examples_go1.8.zip fss_examples_go1.8_sha256 C#函数 fss_example_csharp2.0、fss_example_csharp2.1 fss_example_csharp2.0_sha256 fss_example_csharp2.1_sha256 PHP函数 fss_examples_php7.3.zip fss_examples_php7.3_sha256
-
函数支持的运行时语言 FunctionGraph函数Runtime支持多种运行时语言:Python 、Node.js、Java、Go、C#、PHP及自定义运行时,说明如表1所示。 建议使用相关语言的最新版本。 表1 运行时说明 运行时语言 支持版本 SDK下载 Node.js 6.10、8.10、10.16、12.13、14.18、16.17、18.15 - Python 2.7、3.6、3.9、3.10 - Java 8、11、17(当前仅支持华北-乌兰察布二零二) Java SDK下载(软件包检验文件:fss-java-sdk_sha256) 说明: Java SDK集成了云服务OBS SDK。 Go 1.x Go1.x SDK(软件包检验文件:Go SDK_sha256) C# .NET Core 2.1、.NET Core 3.1、.NET Core 6.0(当前仅支持华北-乌兰察布二零二) CsharpSDK(软件包检验文件:fssCsharp_sha256) PHP 7.3 - 定制运行时 - -
-
Node.js Runtime集成的三方件 表2 Node.js Runtime集成的三方件 名称 功能 版本号 q 异步方法封装 1.5.1 co 异步流程控制 4.6.0 lodash 常用工具方法库 4.17.10 esdk-obs-nodejs OBS SDK 2.1.5 express 极简web开发框架 4.16.4 fgs-express 在FunctionGraph和API Gateway之上使用现有的Node.js应用程序框架运行无服务器应用程序和REST API 。提供的示例允许您使用Express框架轻松构建无服务器Web应用程序/服务和RESTful API 。 1.0.1 request 简化http调用,支持HTTPS并默认遵循重定向 2.88.0
-
ZIP工程包示例 Nods.js工程ZIP包目录示例 Example.zip 示例工程包 |--- lib 业务文件目录 |--- node_modules npm三方件目录 |--- index.js 入口js文件(必选) |--- package.json npm项目管理文件 PHP工程ZIP包目录示例 Example.zip 示例工程包 |--- ext 扩展库目录 |--- pear PHP扩展与应用仓库 |--- index.php 入口PHP文件 Python工程ZIP包目录示例 Example.zip 示例工程包 |--- com 业务文件目录 |--- PLI 第三方依赖PLI目录 |--- index.py 入口py文件(必选) |--- watermark.py 实现打水印功能的py文件 |--- watermark.png 水印图片 Java工程ZIP包目录示例 Example.zip 示例工程包 |--- obstest.jar 业务功能JAR包 |--- esdk-obs-java-3.20.2.jar 第三方依赖JAR包 |--- jackson-core-2.10.0.jar 第三方依赖JAR包 |--- jackson-databind-2.10.0.jar 第三方依赖JAR包 |--- log4j-api-2.12.0.jar 第三方依赖JAR包 |--- log4j-core-2.12.0.jar 第三方依赖JAR包 |--- okhttp-3.14.2.jar 第三方依赖JAR包 |--- okio-1.17.2.jar 第三方依赖JAR包 Go工程ZIP包目录示例 Example.zip 示例工程包 |--- testplugin.so 业务功能包 C#工程ZIP包目录示例 Example.zip 示例工程包 |--- fssExampleCsharp2.0.deps.json 工程编译产生文件 |--- fssExampleCsharp2.0.dll 工程编译产生文件 |--- fssExampleCsharp2.0.pdb 工程编译产生文件 |--- fssExampleCsharp2.0.runtimeconfig.json 工程编译产生文件 |--- Handler 帮助文件,可直接使用 |--- HC.Serverless.Function.Common.dll 函数工作流提供的dll 定制运行时 Example.zip 示例工程包 |--- bootstrap 可执行引导文件
-
打包规范说明 函数除了支持在线编辑代码,还支持上传ZIP、JAR、引入OBS文件等方式上传代码,函数工程的打包规范说明如表1所示。 表1 函数工程打包规范 编程语言 JAR包 ZIP包 OBS文件 Node.js 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 PHP 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 Python 2.7 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 Python 3.6 不支持该方式 假如函数工程文件保存在“~/Code/”文件夹下,在打包的时候务必进入Code文件夹下选中所有工程文件进行打包,这样做的目的是:入口函数是程序执行的入口,确保解压后,入口函数所在的文件位于根目录。 如果函数工程引入了第三方依赖,可以将第三方依赖打成ZIP包,在函数代码界面设置外部依赖包;也可以将第三方依赖和函数工程文件一起打包。 将工程打成ZIP包,上传到OBS存储桶。 Java 8 如果函数没有引用第三方件,可以直接将函数工程编译成Jar包。 如果函数引用第三方件,将函数工程编译成Jar包后,将所有依赖三方件和函数jar包打成ZIP包。 将工程打成ZIP包,上传到OBS存储桶。 Go 1.x 不支持该方式 必须在编译之后打zip包,编译后的二进制文件必须与执行函数入口保持一致,例如二进制名称为Handler,则执行入口为Handler。 将工程打成ZIP包,上传到OBS存储桶。 C# 不支持该方式 必须在编译之后打zip包,必须包含“工程名.deps.json”,“工程名.dll”,“工程名.runtimeconfig.json”,“工程名.pdb”和“HC.Serverless.Function.Common.dll”文件。 将工程打成ZIP包,直接上传到OBS存储桶。 定制运行时 不支持该方式 打zip包,必须包含“bootstrap”可执行引导文件。 将工程打成ZIP包,直接上传到OBS存储桶。
-
免费额度 每个月您都能免费使用一定额度的函数工作流服务,免费额度是子主账户共同使用。 请求次数:每月100万次的免费请求。 计量时间:每月400,000GB-秒的免费执行时间。如果函数内存规格为1GB时,免费额度为400,000秒,如果函数内存规格为512MB时,免费额度为800,000秒,其它内存规格以此类推。 免费额度不会按月累积,在每个自然月开始时,上月未使用的免费额度清零,重新计算。 当函数是预留实例模式且开启空闲模式时,在预留实例生命周期内中,空闲时间产生的计量时间不包含在每月400,000GB-秒的免费额度里。 表1显示了函数工作流配置不同内存规格时的免费执行秒数。 表1 免费执行秒数 内存(MB) 每个月的免费执行秒数 128 3,200,000 256 1,600,000 512 800,000 768 533,333 1024 400,000 1280 320,000 1536 266,667 其他内存规格X(MB) 1024*400,000/X(S) 节点执行次数(标准函数流):每月5000次的免费执行次数。
-
函数监控指标 表1 FunctionGraph支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) count 调用次数 该指标用于统计函数调用次数。 单位:次 ≥ 0 counts 函数 5分钟 failcount 错误次数 该指标用于统计函数调用错误次数。 以下两种情况都会记入错误次数: 函数请求异常,导致无法执行完成且返回200。 函数自身语法错误或者自身执行错误。 单位:次 ≥ 0 counts 函数 5分钟 failRate 错误率 该指标用于统计函数调用错误次数在总调用次数中的占比率。 单位:% 0% ≤X≤ 100% 函数 5分钟 rejectcount 被拒绝次数 该指标用于统计函数调用被拒绝次数。 被拒绝次数是指并发请求太多,系统流控而被拒绝的请求次数。 单位:次 ≥ 0 counts 函数 5分钟 concurrency 并发数 该指标用于统计函数同时调用处理的最大并发请求个数。 单位:个 ≥ 0 counts 函数 5分钟 reservedinstancenum 预留实例个数 该指标用于统计函数配置的预留实例个数。 单位:个 ≥ 0 counts 函数 5分钟 duration 平均运行时间 该指标用于统计函数调用平均运行时间。 单位:毫秒 ≥ 0 ms 函数 5分钟 maxDuration 最大运行时间 该指标用于统计函数调用最大运行时间。 单位:毫秒 ≥ 0 ms 函数 5分钟 minDuration 最小运行时间 该指标用于统计函数最小运行时间。 单位:毫秒 ≥ 0 ms 函数 5分钟 systemErrorCount 系统错误次数 该指标用于统计函数请求异常,导致无法执行完成的错误次数。单位:次 ≥ 0counts 函数 5分钟 functionErrorCount 函数错误次数 该指标用于统计函数自身语法错误或者自身执行错误次数。单位:次 ≥ 0counts 函数 5分钟 payPerUseInstance 弹性实例个数 该指标用于统计函数使用的弹性实例个数。单位:个 ≥ 0 counts 函数 5分钟 表2 函数流支持的监控指标 指标ID 指标名称 指标含义 取值范围 测量对象 监控周期(原始指标) toalCount 调用次数 用于统计函数流调用次数。 单位:次 ≥ 0 counts 函数流 1分钟 errorCount 错误次数 该指标用于统计函数调用错误次数。 单位:次 ≥ 0 counts 函数流 1分钟 running 正在运行数量 该指标用于统计正在运行状态的函数流。 单位:个 ≥ 0 counts 函数流 1分钟 rejectCount 被拒绝次数 该指标用于统计函数流调用被拒绝次数。 单位:个 ≥ 0 counts 函数流 1分钟 averageDuration 平均运行时间 该指标用于统计函数流调用平均耗时。 单位:毫秒 ≥ 0 ms 函数流 1分钟
-
函数运行资源限制 表3 函数运行资源限制说明 资源 默认值 是否可通过用户自己调整配额 临时磁盘空间(“/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。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格