C#函数开发
函数定义
建议使用.NET Core 3.1版本。
对于C#,FunctionGraph运行时目前支持C#(.NET Core 2.0)、C#(.NET Core 2.1)、C#(.NET Core 3.1)版本。
作用域 返回参数 函数名(函数参数,Context参数)
- 作用域:提供给FunctionGraph调用的用户函数必须定义为public。
- 返回参数:用户定义,FunctionGraph负责转换为字符串,作为HTTP Response返回。
- 函数名:用户自定义函数名称,需要和函数执行入口处用户自定义的入口函数名称一致。
在函数工作流控制台左侧导航栏选择“函数 > 函数列表”,单击需要设置的“函数名称”进入函数详情页,选择“设置 > 常规设置”,配置“函数执行入口”参数,如图1所示。其中参数值为“index.handler”格式,“index”和“handler”支持自定义命名。
- 执行事件体:函数执行界面由用户输入的执行事件参数。
- 上下文环境(context):Runtime提供的函数执行上下文,相关属性定义在对象说明中。
HC.Serverless.Function.Common –部署在FunctionGraph服务中的项目工程需要引入该库,其中包含IFunctionContext对象,详情见context类说明。
创建csharp函数时,需要定义某个类中的方法作为函数执行入口,该方法可以通过定义IFunctionContext类型的参数来访问当前执行函数的信息。例如:
1 2 3 4
public Stream handlerName(Stream input,IFunctionContext context) { // TODO }
函数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小时),使用该方法需要给函数配置委托。
String SecuritySecretKey
获取用户委托的SecuritySecretKey(有效期24小时),使用该方法需要给函数配置委托。
String SecuritySecretToken
获取用户委托的SecuritySecretToken(有效期24小时),使用该方法需要给函数配置委托。
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);
执行结果
执行结果由3部分组成:函数返回、执行摘要和日志。
参数项 |
执行成功 |
执行失败 |
---|---|---|
函数返回 |
返回函数中定义的返回信息。 |
返回包含错误信息和错误类型的JSON文件。格式如下: { "errorMessage": "", "errorType": "" } errorMessage:Runtime返回的错误信息 errorType:错误类型 |
执行摘要 |
显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 |
显示请求ID、配置内存、执行时长、实际使用内存和收费时长。 |
日志 |
打印函数日志,最多显示4KB的日志。 |
打印报错信息,最多显示4KB的日志。 |