- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
-
用户指南
- FunctionGraph业务使用流程
- 创建用户并授权使用FunctionGraph
- 创建函数
-
配置函数
- 函数配置概述
- 配置函数代码
- 配置函数的依赖包
- 配置函数的委托权限
- 配置函数的网络环境
-
配置函数的触发器
- 函数触发器概述
- 使用定时触发器(TIMER)
- 使用API网关服务(APIG专享版)触发器
- 使用API Connect(APIC)触发器
- 使用云审计服务(CTS)触发器
- 使用文档数据库服务(DDS)触发器(即将下线不建议使用)
- 使用数据接入服务(DIS)触发器
- 使用分布式消息服务 Kafka版(KAFKA)触发器
- 使用开源Kafka(OPENSOURCEKAFKA)触发器
- 使用分布式消息服务 RabbitMQ版(RABBITMQ)触发器
- 使用云数据库GeminiDB MongoDB触发器
- 使用云数据库GeminiDB DynamoDB触发器
- 使用设备接入(IoTDA)触发器
- 使用云日志服务(LTS)触发器
- 使用消息通知服务(SMN)触发器
- 使用对象存储服务(OBS)触发器
- 使用EventGrid触发器(OBS应用事件源)
- 使用EventGrid触发器(RocketMQ自定义事件源)
- 使用EventGrid触发器(RabbitMQ自定义事件源)
- 管理函数的触发器
- 在线调试函数
- 调用函数
- 管理函数
- 配置函数流
- 通过应用中心部署函数应用
- 通过KooCLI管理函数
- 申请扩大FunctionGraph配额
- 查看监控指标与配置告警
- 查看审计日志
-
最佳实践
- FunctionGraph最佳实践汇总
- 性能优化与安全类实践
-
数据处理类实践
- 使用FunctionGraph函数对OBS中的图片进行压缩
- 使用FunctionGraph函数为OBS中的图片打水印
- 使用FunctionGraph函数对DIS数据进行格式转换并存储到CloudTable
- 使用FunctionGraph函数实现通过API方式上传文件
- 使用FunctionGraph函数对IoTDA中的设备坐标数据进行转换
- 使用FunctionGraph函数对OBS中的文件进行加解密
- 使用FunctionGraph函数识别LTS中的异常业务日志并存储到OBS
- 使用FunctionGraph函数对LTS中的日志进行实时过滤
- 使用FunctionGraph函数流对OBS中的图片进行旋转
- 使用FunctionGraph函数流对图片进行压缩和打水印
-
功能应用类实践
- 使用FunctionGraph函数和CTS识别非法IP的登录登出操作
- 使用FunctionGraph函数定时开关华为云ECS
- 使用FunctionGraph函数作为后端实现APIG的自定义认证能力
- 使用FunctionGraph的Java函数配置Log4j2实现日志打印
- 使用FunctionGraph部署AI绘画Stable Diffusion应用
- 使用FunctionGraph部署AI绘画ComfyUI/ComfyUI+FLUX应用
- 使用FunctionGraph部署AI对话ChatGLM3应用
- 使用FunctionGraph部署DeepSeek-R1蒸馏模型
- 使用FunctionGraph快速部署MCP Server
- 函数构建类实践
- 开发指南
- API参考
- SDK参考
- 场景代码示例
-
常见问题
-
产品咨询
- 使用FunctionGraph是否需要开通计算、存储、网络等服务?
- 使用FunctionGraph开发程序之后是否需要部署?
- FunctionGraph为函数分配的磁盘空间有多少?
- 是否支持在函数中启动TCP的监听端口,通过EIP接收外部发送过来的TCP请求?
- 函数发起HTTP请求的源地址如何获取?
- FunctionGraph是否支持对上传的zip文件进行反编译?
- FunctionGraph的函数是否支持功能扩展?
- FunctionGraph中的代码是如何隔离的?
- 函数常规信息中的“应用”如何理解?
- 用户需要为函数的冷启动时间付费吗?
- 函数计费中的调用次数,是某一账号下在不同region的所有函数的调用次数总和吗?
- Python语言的函数从V1版本迁移到V2版本时需注意哪些兼容性问题?
- FunctionGraph函数支持哪些编程语言?
- 创建函数
-
配置函数
- 能否在函数环境变量中存储敏感信息?
- FunctionGraph的函数如何读写上传的文件?
- 为函数挂载文件系统时,报“failed to mount exist system path”
- FunctionGraph如何实现域名解析?
- FunctionGraph如何通过域名访问专享版APIG中注册的接口?
- FunctionGraph函数通过域名访问APIG中注册的接口时,报域名无法解析?
- 使用定制运行时语言的函数能操作哪些目录?
- FunctionGraph的函数支持哪些中文字体?
- 能否在函数代码中使用线程和进程?
- 函数如何访问MySQL数据库?
- 函数无法通过VPC连接对应的Redis?
- 如何读取函数的请求头?
- Python语言的函数中,中文注释报乱码错误
-
调用函数
- FunctionGraph的函数执行需要多长时间?
- FunctionGraph的函数执行包含了哪些过程?
- FunctionGraph函数长时间不执行时,相关的实例会如何处理?
- 如何获取函数运行过程中的内存使用量信息?
- 为什么首次调用函数时速度会比较慢?
- 函数执行失败返回“runtime memory limit exceeded”时,如何查看内存占用大小?
- 自定义镜像函数执行失败报“CrashLoopBackOff”
- 同步调用函数时,未收到调用响应的可能原因?
- 函数中os.system("command &")命令的执行日志未采集,应如何处理?
- 函数执行超时的可能原因有哪些?
- 使用APIG触发器调用一个返回String的FunctionGraph函数时,报500错误
- Python2.7在执行reload(sys)后无法通过print打印日志
- 运行函数时报错error while loading shared libraries时如何处理?
- 配置触发器
- 配置依赖包
-
产品咨询
- 视频帮助
- 文档下载
- 通用参考
链接复制成功!
C#函数开发概述
FunctionGraph目前支持以下C#运行环境。
- C#(.NET Core 2.1)
- C#(.NET Core 3.1)
- C#(.NET Core 6.0)
- C#(.NET Core 8.0)(仅支持“中东-利雅得”、“土耳其-伊斯坦布尔”区域)
C#函数接口定义
C#函数接口定义:作用域 返回参数 函数名(函数参数,Context参数)
- 作用域:提供给FunctionGraph调用的用户函数必须定义为public。
- 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。
- 函数名:用户自定义函数名称,需要和函数执行入口处用户自定义的入口函数名称一致。
- 执行事件体:函数执行界面由用户输入的执行事件参数。
- 上下文环境(context):Runtime提供的函数执行上下文,相关属性定义在对象说明中。
HC.Serverless.Function.Common –部署在FunctionGraph服务中的项目工程需要引入该库,其中包含IFunctionContext对象,详情见context类说明。
创建csharp函数时,需要定义某个类中的方法作为函数执行入口,该方法可以通过定义IFunctionContext类型的参数来访问当前执行函数的信息。例如:
1 2 3 4
public Stream handlerName(Stream input,IFunctionContext context) { // TODO }
C#函数的函数执行入口参数格式为:[程序集名]::[命名空间].[类名]::[执行函数名],例如CsharpDemo::CsharpDemo.Program::MyFunc,可通过FunctionGraph控制台进入函数详情页的常规设置中进行配置或修改。
函数Handler定义
ASSEMBLY::NAMESPACE.CLASSNAME::METHODNAME
SDK接口
- Context接口
Context类中提供了许多属性供用户使用,如表1所示。
表1 Context对象说明属性名
属性说明
String RequestId
请求ID。
String ProjectId
Project Id。
String PackageName
函数所在分组名称。
String FunctionName
函数名称。
String FunctionVersion
函数版本。
Int MemoryLimitInMb
分配的内存。
Int CpuNumber
获取函数占用的CPU资源。
String Accesskey
获取用户委托的AccessKey(有效期24小时),使用该方法需要为函数配置委托。
当前函数工作流已停止维护Runtime SDK 中String AccessKey接口,您将无法使用String AccessKey获取临时AK。
String Secretkey
获取用户委托的SecretKey(有效期24小时),使用该方法需要为函数配置委托。
当前函数工作流已停止维护Runtime SDK 中String SecretKey接口,您将无法使用String SecretKey获取临时SK。
String SecurityAccessKey
获取用户委托的SecurityAccessKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。
String SecuritySecretKey
获取用户委托的SecuritySecretKey(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。
String SecurityToken
获取用户委托的SecurityToken(有效期24小时),缓存时间为10分钟,即10分钟内再次获取的返回内容相同,使用该方法需要为函数配置委托。
String Token
获取用户委托的Token(有效期24小时),使用该方法需要为函数配置委托。
Int RemainingTimeInMilliSeconds
函数剩余运行时间。
String GetUserData(string key,string defvalue=" ")
通过key获取用户通过环境变量传入的值。
- 日志接口
FunctionGraph中C# SDK中接口日志说明如所示。
表2 日志接口说明方法名
方法说明
Log(string message)
利用context创建logger对象:
var logger = context.Logger;
logger.Log("hello CSharp runtime test(v1.0.2)");
Logf(string format, args ...interface{})
利用context创建logger对象:
var logger = context.Logger;
var version = "v1.0.2"
logger.Logf("hello CSharp runtime test({0})", version);