功能介绍
创建指定的函数。
调试
您可以在API Explorer中调试该接口,支持自动认证鉴权。API Explorer可以自动生成SDK代码示例,并提供SDK代码示例调试功能。
URI
POST /v2/{project_id}/fgs/functions
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
project_id |
是 |
String |
租户项目 ID,获取方式请参见获取项目ID。 |
请求参数
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
X-Auth-Token |
是 |
String |
用户Token。 通过调用 IAM 服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
func_name |
是 |
String |
函数名称。 |
package |
是 |
String |
函数所属的分组Package,用于用户针对函数的自定义分组。 |
runtime |
是 |
String |
FunctionGraph函数的执行环境 Python2.7: Python语言2.7版本。 Python3.6: Pyton语言3.6版本。 Python3.9: Python语言3.9版本。 Go1.8: Go语言1.8版本。 Go1.x: Go语言1.x版本。 Java8: Java语言8版本。 Java11: Java语言11版本。 Node.js6.10: Nodejs语言6.10版本。 Node.js8.10: Nodejs语言8.10版本。 Node.js10.16: Nodejs语言10.16版本。 Node.js12.13: Nodejs语言12.13版本。 Node.js14.18: Nodejs语言14.18版本。 C#(.NET Core 2.0): C#语言2.0版本。 C#(.NET Core 2.1): C#语言2.1版本。 C#(.NET Core 3.1): C#语言3.1版本。 Custom: 自定义运行时。 PHP7.3: Php语言7.3版本。 http: HTTP函数。 枚举值:
|
timeout |
是 |
Integer |
函数执行超时时间,超时函数将被强行停止,范围3~900秒,可以通过白名单配置延长到12小时,具体可以咨询华为云 函数工作流 服务进行配置 |
handler |
是 |
String |
函数执行入口 规则:xx.xx,必须包含“. ” 举例:对于node.js函数:myfunction.handler,则表示函数的文件名为myfunction.js,执行的入口函数名为handler。 |
depend_version_list |
否 |
Array of strings |
依赖版本id列表 |
func_vpc |
否 |
函数vpc配置。 |
|
memory_size |
是 |
Integer |
函数消耗的内存。 单位M。 取值范围为:128、256、512、768、1024、1280、1536、1792、2048、2560、3072、3584、4096。 最小值为128,最大值为4096。 |
gpu_memory |
否 |
Integer |
函数消耗的显存,只支持自定义运行时与 自定义镜像 函数配置GPU。 单位MB。 取值范围为:1024、2048、3072、4096、5120、6144、7168、8192、9216、10240、11264、12288、13312、14336、15360、16384。 最小值为1024,最大值为16384。 |
code_type |
是 |
String |
函数代码类型,取值有4种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 枚举值:
|
code_url |
否 |
String |
当CodeType为obs时,该值为函数代码包在OBS上的地址,CodeType为其他值时,该字段为空。 |
code_filename |
否 |
String |
函数的文件名,当CodeType为jar/zip时必须提供该字段,inline和obs不需要提供。 |
user_data |
否 |
String |
用户自定义的name/value信息。 在函数中使用的参数。 举例:如函数要访问某个主机,可以设置自定义参数:Host={host_ip},最多定义20个,总长度不超过4KB。 |
xrole |
否 |
String |
函数使用的权限委托名称,需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。 |
app_xrole |
否 |
String |
函数app使用的权限委托名称,需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。 |
description |
否 |
String |
函数描述。 |
func_code |
否 |
FuncCode结构返回体。 |
|
initializer_handler |
否 |
String |
函数初始化入口,规则:xx.xx,必须包含“. ”。 举例:对于node.js函数:myfunction.initializer,则表示函数的文件名为myfunction.js,初始化的入口函数名为initializer。 |
initializer_timeout |
否 |
Integer |
初始化超时时间,超时函数将被强行停止,范围1~300秒。 |
ent erp rise_project_id |
否 |
String |
企业项目ID,在企业用户创建函数时必填。 |
type |
否 |
String |
函数版本;部分局点只支持v1函数,缺省值则为v1 缺省值:v2 枚举值:
|
log_config |
否 |
函数绑定日志配置。 |
|
network_controller |
否 |
函数网络配置。 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
vpc_name |
是 |
String |
虚拟私有云 名称。 |
vpc_id |
是 |
String |
虚拟 私有云 唯一标识。 |
subnet_name |
是 |
String |
子网名称。 |
subnet_id |
是 |
String |
子网编号。 |
cidr |
是 |
String |
子网掩码。 |
gateway |
是 |
String |
网关。 |
security_groups |
否 |
Array of strings |
安全组 |
参数 |
是否必选 |
参数类型 |
描述 |
---|---|---|---|
group_name |
否 |
String |
函数绑定日志组名。 |
group_id |
否 |
String |
函数绑定日志组ID。 |
stream_name |
否 |
String |
函数绑定日志流名。 |
stream_id |
否 |
String |
函数绑定日志流ID。 |
响应参数
状态码: 200
参数 |
参数类型 |
描述 |
---|---|---|
func_urn |
String |
函数的URN(Uniform Resource Name),唯一标识函数。 |
func_name |
String |
函数名称。 |
domain_id |
String |
域名 id。 |
namespace |
String |
租户的project id。 |
project_name |
String |
租户的project name。 |
package |
String |
函数所属的分组Package,用于用户针对函数的自定义分组。 |
runtime |
String |
FunctionGraph函数的执行环境 Python2.7: Python语言2.7版本。 Python3.6: Pyton语言3.6版本。 Python3.9: Python语言3.9版本。 Go1.8: Go语言1.8版本。 Go1.x: Go语言1.x版本。 Java8: Java语言8版本。 Java11: Java语言11版本。 Node.js6.10: Nodejs语言6.10版本。 Node.js8.10: Nodejs语言8.10版本。 Node.js10.16: Nodejs语言10.16版本。 Node.js12.13: Nodejs语言12.13版本。 Node.js14.18: Nodejs语言14.18版本。 C#(.NET Core 2.0): C#语言2.0版本。 C#(.NET Core 2.1): C#语言2.1版本。 C#(.NET Core 3.1): C#语言3.1版本。 Custom: 自定义运行时。 PHP7.3: Php语言7.3版本。 http: HTTP函数。 枚举值:
|
timeout |
Integer |
函数执行超时时间,超时函数将被强行停止,范围3~900秒,可以通过白名单配置延长到12小时,具体可以咨询华为云函数工作流服务进行配置 |
handler |
String |
函数执行入口 规则:xx.xx,必须包含“. ” 举例:对于node.js函数:myfunction.handler,则表示函数的文件名为myfunction.js,执行的入口函数名为handler。 |
memory_size |
Integer |
函数消耗的内存。 单位M。 取值范围为:128、256、512、768、1024、1280、1536、1792、2048、2560、3072、3584、4096。 最小值为128,最大值为4096。 |
gpu_memory |
Integer |
函数消耗的显存,只支持自定义运行时与自定义 镜像 函数配置GPU。 单位MB。 取值范围为:1024、2048、3072、4096、5120、6144、7168、8192、9216、10240、11264、12288、13312、14336、15360、16384。 最小值为1024,最大值为16384。 |
cpu |
Integer |
函数占用的cpu资源。 单位为millicore(1 core=1000 millicores)。 取值与MemorySize成比例,默认是128M内存占0.1个核(100 millicores)。 函数占用的CPU为基础CPU:200 millicores,再加上内存按比例占用的CPU,计算方法:内存/128 *100 + 200。 |
code_type |
String |
函数代码类型,取值有4种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 枚举值:
|
code_url |
String |
当CodeType为obs时,该值为函数代码包在OBS上的地址,CodeType为其他值时,该字段为空。 |
code_filename |
String |
函数的文件名,当CodeType为jar/zip时必须提供该字段,inline和obs不需要提供。 |
code_size |
Long |
函数大小,单位:字节。 |
user_data |
String |
用户自定义的name/value信息。 在函数中使用的参数。 举例:如函数要访问某个主机,可以设置自定义参数:Host={host_ip},最多定义20个,总长度不超过4KB。 |
encrypted_user_data |
String |
用户自定义的name/value信息,用于需要加密的配置。 |
digest |
String |
函数代码SHA512 hash值,用于判断函数是否变化。 |
version |
String |
函数版本号,由系统自动生成,规则:vYYYYMMDD-HHMMSS(v+年月日-时分秒)。 |
image_name |
String |
函数版本的内部标识。 |
xrole |
String |
函数使用的权限委托名称,需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。 |
app_xrole |
String |
函数app使用的权限委托名称,需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。 |
description |
String |
函数描述。 |
last_modified |
String |
函数最后一次更新时间。 |
func_vpc |
函数vpc配置。 |
|
mount_config |
函数挂载配置。 |
|
depend_list |
Array of strings |
依赖id列表 |
depend_version_list |
Array of strings |
依赖版本id列表 |
strategy_config |
函数策略配置。 |
|
extend_config |
String |
函数扩展配置。 |
initializer_handler |
String |
函数初始化入口,规则:xx.xx,必须包含“. ”。 举例:对于node.js函数:myfunction.initializer,则表示函数的文件名为myfunction.js,初始化的入口函数名为initializer。 |
initializer_timeout |
Integer |
初始化超时时间,超时函数将被强行停止,范围1~300秒。 |
enterprise_project_id |
String |
企业项目ID,在企业用户创建函数时必填。 |
enable_dynamic_memory |
Boolean |
是否启动动态内存配置 |
is_stateful_function |
Boolean |
是否支持有状态,如果需要支持,需要固定传参为true,v2版本支持 |
enable_auth_in_header |
Boolean |
是否允许在请求头中添加鉴权信息 |
custom_image |
用户 容器镜像 。 |
参数 |
参数类型 |
描述 |
---|---|---|
vpc_name |
String |
虚拟私有云名称。 |
vpc_id |
String |
虚拟私有云唯一标识。 |
subnet_name |
String |
子网名称。 |
subnet_id |
String |
子网编号。 |
cidr |
String |
子网掩码。 |
gateway |
String |
网关。 |
security_groups |
Array of strings |
安全组 |
参数 |
参数类型 |
描述 |
---|---|---|
user_id |
String |
用户ID(-1~65534的非0整数) |
user_group_id |
String |
用户组ID(-1~65534的非0整数) |
参数 |
参数类型 |
描述 |
---|---|---|
mount_type |
String |
挂载类型(sfs/sfsTurbo/ecs),func_mounts非空时必选。 |
mount_resource |
String |
挂载资源ID(对应 云服务 ID),func_mounts非空时必选。 |
mount_share_path |
String |
远端挂载路径(例如192.168.0.12:/data),如果mount_type为ecs,必选。 |
local_mount_path |
String |
函数访问路径,func_mounts非空时必选。 |
参数 |
参数类型 |
描述 |
---|---|---|
concurrency |
Integer |
单函数最大实例数,v1取值0和-1,v2取值-1到1000 -1代表该函数实例数无限制 0代表该函数被禁用 |
concurrent_num |
Integer |
单实例最大并发数,v2版本才支持,取值-1到1000 |
参数 |
参数类型 |
描述 |
---|---|---|
enabled |
Boolean |
是否启用 |
image |
String |
镜像地址 |
command |
String |
启动容器镜像的命令 |
args |
String |
启动容器镜像的命令行参数 |
working_dir |
String |
镜像容器工作目录 |
uid |
String |
镜像容器的用户id |
gid |
String |
镜像容器的用户组id |
状态码: 400
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码 |
error_msg |
String |
错误信息 |
状态码: 401
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码 |
error_msg |
String |
错误信息 |
状态码: 403
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码 |
error_msg |
String |
错误信息 |
状态码: 404
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码 |
error_msg |
String |
错误信息 |
状态码: 500
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码 |
error_msg |
String |
错误信息 |
状态码: 503
参数 |
参数类型 |
描述 |
---|---|---|
error_code |
String |
错误码 |
error_msg |
String |
错误信息 |
请求示例
创建名为xxx的python2.7函数,内存大小为128MB,超时时间3s。
POST https://{Endpoint}/v2/{project_id}/fgs/functions { "func_name" : "xxx", "package" : "xxx", "runtime" : "Python2.7", "handler" : "index.py", "memory_size" : 128, "code_type" : "inline", "timeout" : 3, "func_code" : { "file" : "xxxxx", "link" : "" } }
响应示例
状态码: 200
ok
{
"func_urn" : "urn:fss:xxxxxxxxx:c3b2459a6d5e4b548e6777e57852692d:function:default:TestCreateFunctionInPythonSdk:latest",
"func_name" : "TestCreateFunctionInPythonSdk",
"domain_id" : "14ee2e3501124efcbca7998baa24xxxx",
"namespace" : "46b6f338fc3445b8846c71dfb1fbxxxx",
"project_name" : "xxxxxxxxxx",
"package" : "default",
"runtime" : "Python3.6",
"timeout" : 3,
"handler" : "index.handler",
"memory_size" : 128,
"cpu" : 300,
"code_type" : "inline",
"code_filename" : "index.py",
"code_size" : 100,
"digest" : "",
"version" : "latest",
"image_name" : "latest-191025153727@zehht",
"last_modified" : "2019-10-25 15:37:27",
"strategy_config" : {
"concurrency" : 0
}
}
状态码: 400
Bad Request 请求错误。
{ "error_code" : "FSS.0401", "error_msg" : "not permit" }
状态码: 401
Unauthorized 鉴权失败。
{ "error_code" : "FSS.0401", "error_msg" : "not permit" }
状态码: 403
Forbidden 没有操作权限。
{ "error_code" : "FSS.0401", "error_msg" : "not permit" }
状态码
状态码 |
描述 |
---|---|
200 |
ok |
400 |
Bad Request 请求错误。 |
401 |
Unauthorized 鉴权失败。 |
403 |
Forbidden 没有操作权限。 |
404 |
Not Found 找不到资源。 |
500 |
Internal Server Error 服务内部错误。 |
503 |
Service Unavailable 服务不可用 |
错误码
请参见错误码。