创建函数
功能介绍
创建指定的函数。
请求参数
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
X-Auth-Token | 是 | String | 用户Token。 通过调用IAM服务获取用户Token接口获取(响应消息头中X-Subject-Token的值)。 |
Content-Type | 是 | String | 消息体的类型(格式) |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
func_name | 是 | String | 函数名称。 可包含字母、数字、下划线和中划线,以大/小写字母开头,以字母或数字结尾,长度不超过60个字符。 最小长度:1 最大长度:60 |
package | 是 | String | 函数所属的分组Package,用于用户针对函数的自定义分组。 |
runtime | 是 | String | FunctionGraph函数的执行环境 枚举值:
|
timeout | 是 | Integer | 函数执行超时时间,超时函数将被强行停止,范围3~259200秒。 |
handler | 是 | String | 函数执行入口 规则:xx.xx,必须包含“. ”;自定义镜像函数handler为“-” 举例:对于node.js函数:myfunction.handler,则表示函数的文件名为myfunction.js,执行的入口函数名为handler。长度不超过128个字符。 最小长度:3 最大长度:128 |
depend_version_list | 否 | Array of strings | 依赖版本id列表 |
func_vpc | 否 | FuncVpc object | 函数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。(目前只支持华东-上海一) |
gpu_type | 否 | String | 显卡类型。(目前只支持华东-上海一) |
code_type | 否 | String | 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr: 函数代码来源于SWR自定义镜像。 创建自定义镜像函数此参数非必填,其他类型函数此参数必填。 枚举值:
|
code_url | 否 | String | 当code_type为obs时,该值为函数代码包在OBS上的地址,code_type为其他值时,该字段为空。 |
code_filename | 否 | String | 函数的文件名,当code_type为jar/zip时必须提供该字段,code_type为其他值时不需要提供。 |
custom_image | 否 | CustomImage object | 用户容器镜像,当code_type为Custom-Image-Swr时必须提供该字段,code_type为其他值时不需要提供。 |
user_data | 否 | String | 用户自定义的name/value信息。 在函数中使用的参数。 举例:如函数要访问某个主机,可以设置自定义参数:Host={host_ip},最多定义20个,总长度不超过4KB。 |
encrypted_user_data | 否 | String | 用户自定义的name/value信息,用于需要加密的配置。举例:如配置加密密码,可以设置自定义参数:password={1234},最多定义20个,总长度不超过4KB。 |
xrole | 否 | String | 函数配置委托。需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。配置后用户可以通过函数执行入口方法中的context参数获取具有委托中权限的token、ak、sk,用于访问其他云服务。如果用户函数不访问任何云服务,则不用提供委托名称。 |
app_xrole | 否 | String | 函数执行委托。可为函数执行单独配置执行委托,这将减小不必要的性能损耗;不单独配置执行委托时,函数执行和函数配置将使用同一委托。 |
description | 否 | String | 函数描述。 |
func_code | 否 | FuncCode object | 函数代码。 |
mount_config | 否 | MountConfig object | 函数挂载配置。 |
initializer_handler | 否 | String | 函数初始化入口,规则:xx.xx,必须包含“. ”。当配置初始化函数时,此参数必填。 举例:对于node.js函数:myfunction.initializer,则表示函数的文件名为myfunction.js,初始化的入口函数名为initializer。 |
initializer_timeout | 否 | Integer | 初始化超时时间,超时函数将被强行停止,范围1~300秒。当配置初始化函数时,此参数必填。 |
pre_stop_handler | 否 | String | 函数预停止函数的入口,规则:xx.xx,必须包含“. ”。 举例:对于node.js函数:myfunction.pre_stop_handler,则表示函数的文件名为myfunction.js,初始化的入口函数名为pre_stop_handler。 |
pre_stop_timeout | 否 | Integer | 初始化超时时间,超时函数将被强行停止,范围1~90秒。 |
enterprise_project_id | 否 | String | 企业项目ID,在企业用户创建函数时必填。 |
type | 否 | String | 函数版本;部分局点只支持v1函数,缺省值则为v1。 缺省值:v2 枚举值:
|
log_config | 否 | FuncLogConfig object | 函数绑定日志配置。 |
network_controller | 否 | NetworkControlConfig object | 函数网络配置。 |
is_stateful_function | 否 | Boolean | 是否支持有状态,如果需要支持,需要固定传参为true,v2版本支持。 |
enable_dynamic_memory | 否 | Boolean | 是否启动动态内存配置。 |
lts_custom_tag | 否 | Map<String,String> | 自定义日志标签。 函数执行时,可以按照自定义标签配置上报标签到云日志服务(LTS),用户可以通过标签对日志进行过滤筛选。 |
enable_lts_log | 否 | Boolean | 是否开启日志,缺省值为false。创建函数时,若此开关为true,且未传入log_config,则由FunctionGraph自动创建日志组日志流。 |
user_data_encrypt_kms_key_id | 否 | String | 用于环境变量加密的kms主密钥ID。 |
code_encrypt_kms_key_id | 否 | String | 用于用户代码加密的kms主密钥ID。 |
domain_names | 否 | String | VPC中配置的内网域名。在函数配置调用DNS服务的接口解析内网域名时,则函数必须具备读取DNS资源权限的委托。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
domain_id | 否 | String | 域名id。 |
namespace | 否 | String | 租户的project id。 |
vpc_name | 否 | String | 虚拟私有云名称。 |
vpc_id | 是 | String | 虚拟私有云唯一标识。 |
subnet_name | 否 | String | 子网名称。 |
subnet_id | 是 | String | 子网编号。 |
cidr | 否 | String | 子网掩码。 |
gateway | 否 | String | 网关。 |
security_groups | 否 | Array of strings | 安全组。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
enabled | 否 | Boolean | 是否启用 |
image | 否 | String | 镜像地址 |
command | 否 | String | 启动容器镜像的命令 |
args | 否 | String | 启动容器镜像的命令行参数 |
working_dir | 否 | String | 镜像容器工作目录 |
uid | 否 | String | 镜像容器的用户id |
gid | 否 | String | 镜像容器的用户组id |
is_public | 否 | Boolean | 是否是公共镜像 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
mount_user | 是 | MountUser object | 挂载用户信息。 |
func_mounts | 是 | Array of FuncMount objects | 函数挂载列表。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
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非空时必选。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
group_name | 否 | String | 函数绑定日志组名。 |
group_id | 否 | String | 函数绑定日志组ID。 |
stream_name | 否 | String | 函数绑定日志流名。 |
stream_id | 否 | String | 函数绑定日志流ID。 |
参数 | 是否必选 | 参数类型 | 描述 |
|---|---|---|---|
disable_public_network | 否 | Boolean | 禁止公网访问开关。 |
trigger_access_vpcs | 否 | Array of VpcConfig objects | 指定触发函数vpc配置。 |
响应参数
状态码: 200
参数 | 参数类型 | 描述 |
|---|---|---|
func_id | String | 函数id,唯一标识函数。 |
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函数的执行环境 枚举值:
|
timeout | Integer | 函数执行超时时间,超时函数将被强行停止,范围3~259200秒。 |
handler | String | 函数执行入口 规则:xx.xx,必须包含“. ” 举例:对于node.js函数:myfunction.handler,则表示函数的文件名为myfunction.js,执行的入口函数名为handler。长度不超过128个字符。 最小长度:3 最大长度:128 |
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)。 |
code_type | String | 函数代码类型,取值有5种。 inline: UI在线编辑代码。 zip: 函数代码为zip包。 obs: 函数代码来源于obs存储。 jar: 函数代码为jar包,主要针对Java函数。 Custom-Image-Swr: 函数代码来源于SWR自定义镜像。 枚举值:
|
code_url | String | 当code_type为obs时,该值为函数代码包在OBS上的地址,code_type为其他值时,该字段为空。 |
code_filename | String | 函数的文件名,当code_type为jar/zip时必须提供该字段,inline和obs不需要提供。 |
code_size | Long | 函数大小,单位:字节。 |
domain_names | String | 函数配置的需要支持域名解析的内网域名。 |
user_data | String | 用户自定义的name/value信息。 在函数中使用的参数。 举例:如函数要访问某个主机,可以设置自定义参数:Host={host_ip},最多定义20个,总长度不超过4KB。 |
encrypted_user_data | String | 用户自定义的name/value信息,用于需要加密的配置。 |
digest | String | 函数代码SHA512 hash值,用于判断函数是否变化。 |
version | String | 函数版本号。 |
image_name | String | 函数版本的内部标识。 |
xrole | String | 函数使用的权限委托名称,需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。 |
app_xrole | String | 函数app使用的权限委托名称,需要IAM支持,并在IAM界面创建委托,当函数需要访问其他服务时,必须提供该字段。 |
description | String | 函数描述。 |
last_modified | String | 函数最后一次更新时间。 |
func_vpc | FuncVpc object | 函数vpc配置。需同时为函数配置具有vpc权限的委托。 |
mount_config | MountConfig object | 函数挂载配置。 |
reserved_instance_count | Integer | 函数预留实例数量。 |
depend_list | Array of strings | 依赖id列表 |
depend_version_list | Array of strings | 依赖版本id列表 |
strategy_config | StrategyConfig object | 函数策略配置。 |
extend_config | String | 函数扩展配置。 |
dependencies | Array of Dependency objects | 函数依赖代码包列表。 |
initializer_handler | String | 函数初始化入口,规则:xx.xx,必须包含“. ”。当配置初始化函数时,此参数必填。 举例:对于node.js函数:myfunction.initializer,则表示函数的文件名为myfunction.js,初始化的入口函数名为initializer。 |
initializer_timeout | Integer | 初始化超时时间,超时函数将被强行停止,范围1~300秒。当配置初始化函数时,此参数必填。 |
pre_stop_handler | String | 函数预停止函数的入口,规则:xx.xx,必须包含“. ”。 举例:对于node.js函数:myfunction.pre_stop_handler,则表示函数的文件名为myfunction.js,初始化的入口函数名为pre_stop_handler。 |
pre_stop_timeout | Integer | 初始化超时时间,超时函数将被强行停止,范围1~90秒。 |
enterprise_project_id | String | 企业项目ID,在企业用户创建函数时必填。 |
long_time | Boolean | 是否允许进行长时间超时设置。 |
log_group_id | String | 自定义日志查询组id |
log_stream_id | String | 自定义日志查询流id |
type | String | v2表示为正式版本,v1为废弃版本。 枚举值:
|
enable_cloud_debug | String | 适配CloudDebug场景,是否开启云调试(已废弃) |
enable_dynamic_memory | Boolean | 是否启动动态内存配置 |
is_stateful_function | Boolean | 是否支持有状态,v2版本支持 |
custom_image | CustomImage object | 用户容器镜像。 |
is_bridge_function | Boolean | 是否为bridge函数 |
apig_route_enable | Boolean | 是否配置下沉apig路由规则。 |
heartbeat_handler | String | 心跳函数函数的入口,规则:xx.xx,必须包含“. ”,只支持JAVA运行时配置。 心跳函数入口需要与函数执行入口在同一文件下。在开启心跳函数配置时,此参数必填。 |
enable_class_isolation | Boolean | 类隔离开关,只支持JAVA运行时配置。开启类隔离后可以支持Kafka转储并提升类加载效率,但也可能会导致某些兼容性问题,请谨慎开启。 |
gpu_type | String | 显卡类型。 |
allow_ephemeral_storage | Boolean | 是否支持配置临时存储。 |
ephemeral_storage | Integer | 临时存储大小。默认情况下会为函数的/tmp目录分配512MB的空间。您可以通过临时存储设置将函数的/tmp目录大小调整为10G。 枚举值:
|
network_controller | NetworkControlConfig object | 函数网络配置。 |
resource_id | String | 资源id。 |
is_return_stream | Boolean | 是否返回流式数据(已废弃)。 |
enable_auth_in_header | Boolean | 是否允许在请求头中添加鉴权信息,只支持自定义镜像函数(创建函数时不支持修改)。 |
lts_custom_tag | Map<String,String> | 自定义日志标签。 函数执行时,可以按照自定义标签配置上报标签到云日志服务(LTS),用户可以通过标签对日志进行过滤筛选。 |
enable_lts_log | Boolean | 是否开启日志。 |
user_data_encrypt_kms_key_id | String | 用于环境变量加密的kms主密钥ID。 |
code_encrypt_kms_key_id | String | 用于用户代码加密的kms主密钥ID。 |
参数 | 参数类型 | 描述 |
|---|---|---|
domain_id | String | 域名id。 |
namespace | String | 租户的project id。 |
vpc_name | String | 虚拟私有云名称。 |
vpc_id | String | 虚拟私有云唯一标识。 |
subnet_name | String | 子网名称。 |
subnet_id | String | 子网编号。 |
cidr | String | 子网掩码。 |
gateway | String | 网关。 |
security_groups | Array of strings | 安全组。 |
参数 | 参数类型 | 描述 |
|---|---|---|
mount_user | MountUser object | 挂载用户信息。 |
func_mounts | Array of FuncMount objects | 函数挂载列表。 |
参数 | 参数类型 | 描述 |
|---|---|---|
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 |
参数 | 参数类型 | 描述 |
|---|---|---|
id | String | 依赖包版本ID。 |
owner | String | 依赖包属主的domainId。 |
link | String | 依赖包在OBS上的链接。 |
runtime | String | FunctionGraph函数的执行环境 枚举值:
|
etag | String | 依赖包的md5值。 |
size | Long | 依赖包大小。 |
name | String | 依赖包名称。 |
description | String | 依赖包描述。 |
file_name | String | 依赖包文件名,如果创建方式为zip时。 |
version | Long | 依赖包版本编号。 |
dep_id | String | 依赖包ID。 |
last_modified | Integer | 函数最后一次更新时间。 |
参数 | 参数类型 | 描述 |
|---|---|---|
enabled | Boolean | 是否启用 |
image | String | 镜像地址 |
command | String | 启动容器镜像的命令 |
args | String | 启动容器镜像的命令行参数 |
working_dir | String | 镜像容器工作目录 |
uid | String | 镜像容器的用户id |
gid | String | 镜像容器的用户组id |
is_public | Boolean | 是否是公共镜像 |
参数 | 参数类型 | 描述 |
|---|---|---|
disable_public_network | Boolean | 禁止公网访问开关。 |
trigger_access_vpcs | Array of VpcConfig objects | 指定触发函数vpc配置。 |
状态码: 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,添加加密环境变量password,添加磁盘挂载。
POST https://{Endpoint}/v2/{project_id}/fgs/functions { "func_name" : "xxx", "package" : "xxx", "runtime" : "Python2.7", "handler" : "index.py", "type" : "v2", "memory_size" : 128, "timeout" : 3, "code_type" : "inline", "mount_config" : { "mount_user" : { "user_id" : -1, "user_group_id" : -1 }, "func_mounts" : [ { "mount_resource" : "268xxx-d3xx-4cxx-98xx-d1dbxxx", "local_mount_path" : "/mnt", "mount_type" : "sfsTurbo" } ] }, "encrypted_user_data" : "{\"password\":\"1234\"}", "func_code" : { "file" : "xxxxx", "link" : "" } } - 创建名为xxx的python3.9函数,内存大小为128MB,超时时间3s,代码由OBS上传。
POST https://{Endpoint}/v2/{project_id}/fgs/functions { "func_name" : "xxx", "package" : "xxx", "runtime" : "Python3.9", "handler" : "index.py", "type" : "v2", "memory_size" : 128, "timeout" : 3, "code_type" : "obs", "code_url" : "https:xxx" } - 创建名为xxx的自定义镜像函数,内存大小为128MB,超时时间3s,代码由SWR上传。
POST https://{Endpoint}/v2/{project_id}/fgs/functions { "func_name" : "xxx", "package" : "xxx", "runtime" : "Custom Image", "handler" : "-", "type" : "v2", "memory_size" : 128, "timeout" : 3, "code_type" : "obs", "code_url" : "https:xxx", "xrole" : "xxx", "custom_image" : { "enabled" : true, "image" : "swr.xxx" } }
响应示例
状态码: 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,
"encrypted_user_data" : "{\"password\":\"\"}",
"mount_config" : {
"mount_user" : {
"user_id" : -1,
"user_group_id" : -1
},
"func_mounts" : [ {
"mount_resource" : "268xxx-d3xx-4cxx-98xx-d1dbxxx",
"local_mount_path" : "/mnt",
"mount_type" : "sfsTurbo"
} ]
},
"cpu" : 300,
"code_type" : "inline",
"code_filename" : "index.py",
"code_size" : 100,
"digest" : "1c8610d1870731a818a037f1d2adf3223e8ac351aeb293fb1f8eabd2e9820069a61ed8b5d38182e760adc33a307d0e957afc357f415cd8c9c3ff6f0426fd85cd",
"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.0400",
"error_msg" : "invalid parameter"
} 状态码: 401
Unauthorized 鉴权失败。
{
"error_code" : "FSS.0401",
"error_msg" : "not permit"
} 状态码: 403
Forbidden 没有操作权限。
{
"error_code" : "FSS.0403",
"error_msg" : "invalid token"
} 状态码
状态码 | 描述 |
|---|---|
200 | ok |
400 | Bad Request 请求错误。 |
401 | Unauthorized 鉴权失败。 |
403 | Forbidden 没有操作权限。 |
404 | Not Found 找不到资源。 |
500 | Internal Server Error 服务内部错误。 |
503 | Service Unavailable 服务不可用。 |
错误码
请参见错误码。

