移动云函数计算(SFC)Golang函数开发指南
golang函数开发指南
目前支持的Golang开发语言版本为1.13.8。
1. 函数定义
Golang1.13.8需要在安装了go 1.13.8 的linux服务器上开发,Golang1.13.8的函数形态一般如下所示:
l 入口函数名(Handler):入口函数的名称,需要和函数执行入口处用户自定义的入口函数名称一致,需要注意的是,golang的入口函数开头需要为大写。
l 执行事件(event):传给函数执行的实际参数,类型为[]byte。
n 在页面触发测试中,event为用户输入的测试事件参数
n 在http触发器中,event为用户POST,PUT方法的body内容。
n 在其他触发器中,event为平台封装的cloudevent格式数据。
n 函数中需要将event序列化到提前定义好的结构体Event中
l 上下文环境(context):Runtime提供了函数执行的上下文,通过上下文对象context,可以在函数中获取相关函数执行的上下文环境,具体接口定义在SDK接口中说明。
l 函数执行入口:
n 函数执行入口格式”[文件名].[函数名]”,例如创建函数是设置为index.Handler,那么函数计算会自动加载index模块中定义的Handler函数,如下图所示:
2. SDK接口
Context类中提供了一下上下文方法供用户使用,其声明和功能如下表所示:
方法名 | 方法说明 |
context.GetRequestID() | 获取请求ID |
context.GetStartTime() | 获取函数执行时间 |
context.GetFunctionName() | 获取函数名或函数id |
context.GetVersion() | 获取函数当前版本 |
context.GetMemorySize() | 获取函数配置内存 |
3. 如何开发Golang函数
开发Goalng函数步骤如下。
步骤 1 开发函数
Golang 1.13.8的函数需要本地开发,并编译成插件上传到函数计算平台。
(1)编写统一context接口
登录已经安装了golang 1.13.8运行环境的linux服务器,创建目录/home/sfcgo/src/go-runtime/pkg/context,并完成以下操作:
$ mkdir -p /home/sfcgo/src/go-runtime/pkg/context
$ vi /home/sfcgo/src/go-runtime/pkg/context/client_context.go,直接拷贝以下内容到文件中
package context type Context interface { GetRequestID() string GetStartTime() string GetFunctionName() string GetVersion() string GetMemorySize() string} |
(2)开发用户函数
在目录/home/sfcgo/src/go-runtime中创建函数文件,并实现如下接口:
func Handler(event []byte, context context.Context) (interface{}, error)
其中event为传递给函数的body数据,context为函数提供服务的上下文对象,具体提供方法可参考
SDK接口,编写如下示例函数代码:
vi /home/sfcgo/src/go-runtime/index.go
package mainimport ( "encoding/json" "fmt" "go-runtime/pkg/context") type Event struct { Key string `json:"key"`} func Handler(event []byte, context context.Context) (interface{}, error) { var ev *Event err := json.Unmarshal(event, &ev) if err != nil { return nil, fmt.Errorf("invalid request payload") } fmt.Println(ev.Key) result := fmt.Sprintf("Value: %s, time: %s", ev.Key, context.GetStartTime()) return result, nil} |
步骤 2 编译和打包
函数编码完毕后,按照如下方式进行编译打包。
(1) 设置GOROOT和GOPATH环境变量
$ export GOROOT=/usr/local/go (假设Go安装到了/usr/local/go目录)
$ export PATH=$GOROOT/bin:$PATH
$ export GOPATH=/home/sfcgo
(2) 编译代码
$ cd /home/sfcgo/src/go-runtime
$ go mod init
$ go build -buildmode=plugin -o index.so index.go
编译后会在当前目录生产index.so文件
(3) 打包代码
$ zip index.zip index.so
步骤 3 创建函数
登录函数计算控制台,创建函数,编辑函数名称,选择所属应用,选择golang1.13.8运行环境
上传打包好的index.zip文件,点击确定创建函数。
4. 测试函数
步骤 1 创建测试事件
进入函数详情页,选择测试事件,点击创建测试事件
由于golang为静态语言,因此需要根据函数代码中的解析规则编写测试时间
type Event struct {
Key string `json:"key"`
}
事件的的键名要为key,否则无法被函数序列化
根据需要输入测试事件的body内容。
步骤 1 执行测试事件
在函数详情页面,选择具体的测试事件,点击执行。
执行后,分为三部分结果展示,分别为函数执行结果、函数执行摘要、函数执行日志。如下图所示:
本文由 vps主机对比评测网 刊发,转载请注明出处