函数操作
更新时间:2024-07-05
创建函数
使用以下代码可以创建一个CFC函数
arge := &api.CreateFunctionArgs{
// 配置函数的代码,需要上传代码的zip压缩包
Code: &api.CodeFile{ZipFile: zipFile},
// 函数名称,每个用户的函数名称不可重复,不可修改
FunctionName: "sdk-create",
// 函数调用的入口函数
Handler: "index.handler",
// 函数的runtime
Runtime: "nodejs8.5",
// 函数运行的内存大小,单位mb,必须是128的整数倍,最大可选1024
MemorySize: 256,
// 函数执行超时时间,可选1-300s
Timeout: 3,
// 函数描述信息
Description: "sdk create",
// 函数日志存放方式,可选bos,表示函数执行日志存放在bos中
LogType: "bos",
// 若LogType配置为bos,此参数设置函数执行日志在bos中的存储地址
LogBosDir: "bos://ashjfdklsfhlk/",
})
// 若要配置从bos bucket中上传函数代码,可以如下设置
// 这两个参数不能和args.Code.ZipFile同时设置
args.Code.BosBucket = "bucketName"
args.Code.BosObject = "objectKey"
// 若要直接发布函数,可以设置
args.Code.Publish = true
// 若要配置函数访问VPC网络,可以如下设置
args.VpcConfig = &api.VpcConfig{
SubnetIds: []string{"subnet_id1"},
SecurityGroupIds: []string{"security_group_id1"},
}
// 若要配置环境变量,可以如下设置
args.Environment = &api.Environment{
Variables: map[string]string{
"key": "value",
},
},
result, err := client.CreateFunction(args)
if err != nil {
fmt.Println("create function failed:", err)
} else {
fmt.Println("create function success: ", result)
}
函数列表
使用以下代码可以获取CFC函数的列表
args := &api.ListFunctionArgs{}
// 若想查询指定版本1的函数,可以如下设置
args.FunctionVersion = "1"
result, err := client.ListFunctions(args)
if err != nil {
fmt.Println("list function failed:", err)
} else {
fmt.Println("list function success: ", result)
}
函数信息
使用以下代码可以获取特定函数的信息
args := &api.GetFunctionArgs{
FunctionName: "functionName"
}
result, err := client.GetFunction(args)
if err != nil {
fmt.Println("get function failed:", err)
} else {
fmt.Println("get function success: ", result)
}
删除函数
使用以下代码可以删除一个特定的CFC函数
args := &api.DeleteFunctionArgs{
FunctionName: "sdk-create",
}
// 若想删除函数的某个版本,可以设置
args.Qualifier = "1"
err := client.DeleteFunction(args)
if err != nil {
fmt.Println("delete function failed:", err)
}
更新函数代码
使用以下代码可以更新特定CFC函数的代码
args := &api.UpdateFunctionCodeArgs{
FunctionName: "sdk-creat"
ZipFile: []byte(functionZipCode)
}
// 若要配置从bos bucket中上传函数代码,可以如下设置
// 这两个参数不能和args.ZipFile同时设置
args.BosBucket = "bucketName"
args.BosObject = "objectKey"
// 若要直接发布函数,可以设置
args.Publish = true
result, err := client.UpdateFunctionCode(args)
if err != nil {
fmt.Println("update function code failed:", err)
} else {
fmt.Println("update function code success: ", result)
}
获取函数配置
使用以下代码可以获取特定CFC函数的配置
args := &api.GetFunctionConfigurationArgs{
FunctionName: "sdk-create",
}
// 若想查询特定版本的函数的配置,可以设置
args.Qualifier = functionBrn
if err != nil {
fmt.Println("get function configure failed:", err)
} else {
fmt.Println("get function configure success: ", result)
}
更新函数配置
使用以下代码可以更新特定CFC函数的配置
args := &api.UpdateFunctionConfigurationArgs{
FunctionName: "sdk-create",
Timeout: 20,
Description: "sdk update",
Runtime: "nodejs8.5",
MemorySize: &memorySize,
Environment: &api.Environment{
Variables: map[string]string{
"name": "Test",
},
},
})
result, err := client.UpdateFunctionConfiguration(args)
if err != nil {
fmt.Println("update function configure failed:", err)
} else {
fmt.Println("update function configure success: ", result)
}
设置函数预留并发度
使用以下代码可以设置和更新特定CFC函数的预留并发度
args := &api.ReservedConcurrentExecutionsArgs{
FunctionName: "sdk-create",
// 预留并发度会由本函数的所有版本共享,最高能设置90
ReservedConcurrentExecutions: 10,
})
err := client.SetReservedConcurrentExecutions(args)
if err != nil {
fmt.Println("set function reserved concurrent executions failed:", err)
}
删除函数预留并发度设置
使用以下代码可以删除特定CFC函数的预留并发度设置
args := &api.DeleteReservedConcurrentExecutionsArgs{
FunctionName: "sdk-create",
})
err := client.DeleteReservedConcurrentExecutions(args)
if err != nil {
fmt.Println("delete function reserved concurrent executions failed:", err)
}