You need to enable JavaScript to run this app.
导航
CreateFunction
最近更新时间:2025.01.07 10:41:16首次发布时间:2024.07.08 11:32:09

创建函数,包含函数配置及函数代码。

请求说明

  • 请求方式:POST
  • 请求地址:http://open.volcengineapi.com/?Action=CreateFunction&Version=2024-06-06

调试

请求参数

参数类型是否必选示例值描述
ActionStringCreateFunction接口名称。当前 API 的名称为 CreateFunction
VersionString2024-06-06接口版本。当前 API 的版本为 2024-06-06

Name

String

official-site

函数名称。

  • 同一个账号内,函数名称必须唯一。
  • 支持大小写英文字母、数字、中划线(-)、下划线(_),长度限制为 4~64 个字符。
DescriptionString轻量级官网函数描述。长度限制为 1000 以内的 Unicode 字符。

Runtime

String

python3.8/v1

函数运行时,取值:

  • golang/v1
  • native/v1
  • nativejava8/v1
  • node14/v1
  • node20/v1
  • nodeprime14/v1
  • python3.12/v1
  • python3.8/v1
  • python3.9/v1

说明

SourceType = image时,Runtime 必须为native/v1

ExclusiveMode

Boolean

false

独占模式开关。取值:

  • true:关闭单实例多并发,即同一时刻单实例只能处理一个请求的独占模式。
  • false:(默认值)开启单实例多并发,即同一时刻单实例可处理多个请求的非独占模式,可通过 MaxConcurrency 设置单实例能够承载的最大并发请求数量。

RequestTimeout

Integer

30

请求超时时间。

  • 单位:秒。
  • 取值范围:1~900。
  • 默认值:30。

MaxConcurrency

Integer

100

单实例最大并发。ExclusiveMode = false时生效。

  • 取值范围:10~1000。
  • 默认直:100。

MemoryMB

Integer

1024

单实例最大内存。

  • 单位:MiB。
  • 取值范围:512~4096。

    说明

    取值以 512 为梯度。

  • 默认值:1024。

SourceType

String

tos

代码来源类型,取值:

  • tos:火山引擎对象存储(TOS)。
  • zip:本地压缩文件。
  • image:火山引擎镜像仓库(CR),支持基础版和企业版。

Source

String

pqyqo9qa/3kwem******.zip

代码来源,取值:

  • zip:Base64 编码后的二进制 ZIP 文件。
  • tos:格式为bucket_name:object_key的字符串,例如: vefaas-test:vefaas-python38-default.zip
  • image:格式为host/namespace/repo:tag的镜像地址。例如:cp-enterprise-cn-beijing.cr.volces.com/demo/nginx:latest
EnvsArray of EnvVar-环境变量。
VpcConfigObject of VpcConfig-私有网络(VPC)配置。
TlsConfigObject of TlsConfig-日志服务(TLS)相关配置。

SourceAccessConfig

Object of SourceAccessConfig

-

镜像仓库的访问配置。

注意

设置跨账号的自定义镜像时,需要提供访问配置。

NasStorageObject of NasStorage-文件存储(NAS)挂载配置。
TosMountConfigObject of TosMountConfig-对象存储(TOS)挂载配置。
InitializerSecInteger30函数初始化超时配置。
CommandString./run.sh实例的自定义启动命令(目前只支持 native/v1 运行时)。
CpuStrategyStringalways函数 CPU 计费策略,当创建微服务应用类型的函数时,该字段必须设置为 always,表示至少有一个实例在运行。
ProjectNameStringdefault函数关联的项目名称。

EnvVar

参数类型是否必选示例值描述
KeyStringbusiness_type环境变量的 Key。1 ~ 63 个字符,字符中可包含英文、数字以及下划线(_),并且不能以数字开头。同一函数下 Key 唯一。
ValueStringfree环境变量的值。

VpcConfig

参数类型是否必选示例值描述
VpcIdStringvpc-3rf8******VPC ID。如果 VPC ID 为空字符串,代表删除当前 VPC 配置。
EnableVpcBooleanfalse函数是否开启私有网络访问。
SubnetIdsArray of Stringsubnet-mj1l******子网 ID。
SecurityGroupIdsArray of Stringsg-rs6s******安全组 ID。

EnableSharedInternetAccess

Boolean

false

函数访问公网开关。是否通过 veFaaS 的 VPC 共享 NAT 网关,访问公网。取值:

  • true:开启,通过默认网卡访问公网。会产生公网出流量费用。
  • false:关闭,函数无法通过默认网卡访问公网。

TlsConfig

参数类型是否必选示例值描述

EnableLog

Boolean

false

TLS 日志功能开关。

  • true:开启,函数的 stdout/stderr 日志将被采集至日志服务的指定日志项目和日志主题中。
  • false:关闭,不采集日志。
TlsTopicIdStringtls-vefaas-logstoreTLS 日志主题 ID。
TlsProjectIdStringtls-vefaasTLS 日志项目 ID。

SourceAccessConfig

参数类型是否必选示例值描述
PasswordStringpassword镜像仓库密码。
UsernameStringoperator镜像仓库用户名。

NasStorage

参数类型是否必选示例值描述

EnableNas

Boolean

false

是否开启 NAS 存储挂载。

  • true:开启,将数据存储至 NAS。
  • false:不开启。
NasConfigsArray of NasConfig-NAS 存储配置。

TosMountConfig

参数类型是否必选示例值描述
EnableTosBooleanfalse是否开启 TOS 存储挂载。
CredentialsObject of Credentials-开启 TOS 后需要提供具有 TOS 域名访问权限的 AKSK。
MountPointsArray of TosMountPoint-开启 TOS 后需要提供 TOS 存储配置列表,最多不超过 5 个。

NasConfig

参数类型是否必选示例值描述
GidLong1000文件系统中的用户组,暂时不支持自定义,如果提供该参数,参数值 1000(和函数 run user gid 保持一致)。
UidLong1000文件系统中的用户,暂时不支持自定义,如果提供该参数,参数值只能为 1000(和函数 run user uid 保持一致)。
RemotePathString/文件系统远端目录。长度 1-128 个字符,只能以“/”开头,支持大小写字母、数字和特殊字符(- . _ ~ / : @ = + ? # )。
FileSystemIdStringenas-cns******NAS 文件系统 ID。
MountPointIdStringmount-63******NAS 挂载点 ID。
LocalMountPathString/mnt/nas函数本地挂载目录。长度 1-128 个字符,只能以“/”开头,支持大小写字母、数字和特殊字符(- . _ ~ / : @ = + ? # )。

Credentials

参数类型是否必选示例值描述
AccessKeyIdString******火山引擎账号的 AccessKey ID(AK)。获取方式,请参见 访问密钥使用指南
SecretAccessKeyString******火山引擎账号的 Secret Access Key(SK)。获取方式,请参见 访问密钥使用指南

TosMountPoint

参数类型是否必选示例值描述
EndpointStringhttp://tos-cn-beijing.ivolces.comTOS 访问域名。

ReadOnly

Boolean

true

函数本地目录访问权限,挂载 TOS Bucket后,函数本地挂载目录的访问权限是否为只读。

  • true:只读
  • false(默认):读写
BucketNameStringai-modelTOS 存储桶。
BucketPathString/挂载的 TOS Bucket 路径。
LocalMountPathString/mnt/tos函数本地挂载目录。

请求示例

POST http://open.volcengineapi.com/?Action=CreateFunction&Version=2024-06-06 HTTP/1.1
Content-Type: application/json
{
    "Name": "official-site",
    "Description": "轻量级官网",
    "Runtime": "python3.8/v1",
    "ExclusiveMode": true,
    "RequestTimeout": 30,
    "MaxConcurrency": 100,
    "MemoryMB": 1024,
    "SourceType": "tos",
    "Source": "pqyqo9qa/3kwem******.zip",
    "Envs": [
        {
            "Key": "business_type",
            "Value": "free"
        }
    ],
    "VpcConfig": {
        "VpcId": "vpc-3rf8******",
        "EnableVpc": true,
        "SubnetIds": [
            ""
        ],
        "SecurityGroupIds": [
            ""
        ],
        "EnableSharedInternetAccess": true
    },
    "TlsConfig": {
        "EnableLog": true,
        "TlsTopicId": "tls-vefaas-logstore",
        "TlsProjectId": "tls-vefaas"
    },
    "SourceAccessConfig": {
        "Password": "Feie&ffe123huabcd",
        "Username": "operator"
    },
    "NasStorage": {
        "EnableNas": true,
        "NasConfigs": [
            {
                "Gid": 1000,
                "Uid": 1000,
                "RemotePath": "/",
                "FileSystemId": "enas-cns******",
                "MountPointId": "mount-63******",
                "LocalMountPath": "/mnt/nas"
            }
        ]
    },
    "TosMountConfig": {
        "EnableTos": true,
        "Credentials": {
            "AccessKeyId": "******",
            "SecretAccessKey": "******"
        },
        "MountPoints": [
            {
                "Endpoint": "http://tos-cn-beijing.ivolces.com",
                "ReadOnly": true,
                "BucketName": "ai-model",
                "BucketPath": "/",
                "LocalMountPath": "/mnt/tos"
            }
        ]
    },
    "InitializerSec": 30,
    "Command": "./run.sh",
    "CpuStrategy": "always",
    "ProjectName": "default"
}

返回参数

参数类型示例值描述
IdStringpqy******函数 ID。
NameStringofficial-site函数名字。
DescriptionString轻量级官网函数描述。
RuntimeStringpython3.8/v1函数运行时。

ExclusiveMode

Boolean

false

独占模式开关。

  • true:关闭单实例多并发,即同一时刻单实例只能处理一个请求的独占模式。
  • false(默认):开启单实例多并发,即同一时刻单实例可处理多个请求的非独占模式,可通过 MaxConcurrency 设置单实例能够承载的最大并发请求数量。
RequestTimeoutInteger30请求超时(单位 秒)。
MaxConcurrencyInteger100单实例最大并发。
MemoryMBInteger1024单实例最大内存(单位 MB)。
CodeSizeInteger473代码包大小(单位 MB)。

CodeSizeLimit

Integer

256

代码包大小上限。

  • SourceType=zip,CodeSizeLimit=15MB。
  • SourceType=tos,CodeSizeLimit=256MB。
SourceLocationStringhttps://vefaas.tos-s3-cn.volces.com/template_dir/666ad75b9124c400072abcvefaas-python3.9-default.zip?X-Amz******代码/镜像的来源地址。

SourceType

String

tos

代码来源类型,可选值有:

  • tos:火山引擎对象存储
  • zip:本地压缩文件
  • image:火山引擎镜像仓库,支持基础版和企业版。
EnvsArray of EnvVar-函数环境变量。
VpcConfigObject of VpcConfig-VPC 配置。
CreationTimeString2024-06-14 15:31:07.143863441 +0800 CST m=+88714.902440864创建时间。
LastUpdateTimeString2024-06-14 15:31:07.143863491 +0800 CST m=+88714.902440914更新时间。
TlsConfigObject of TlsConfig-函数日志配置。
OwnerString22******函数所有者(账号 Id)。
TriggersCountInteger0该函数的触发器个数。

InstanceType

String

nvidia-tesla-l4

函数实例的实例类型:

  • 空值:CPU 实例。
  • 非空值:GPU 实例。
NasStorageObject of NasStorage-文件存储 NAS 挂载配置。
TosMountConfigObject of TosMountConfig-对象存储 TOS 挂载配置。
InitializerSecInteger30函数初始化超时配置。
CommandString./run.sh实例的自定义启动命令(目前只支持 native/v1 运行时)。
PortInteger8000实例的自定义监听端口(目前只支持 native/v1 运行时)。
CpuStrategyStringalways函数 CPU 计费策略,当微服务应用类型的函数时,该字段为 always,表示至少有一个实例在运行。
ProjectNameStringdefault项目名称

EnvVar

参数类型示例值描述
KeyStringbusiness_type环境变量的 Key。1 ~ 63 个字符,字符中可包含英文、数字以及下划线(_),并且不能以数字开头。同一函数下 Key 唯一。
ValueStringfree环境变量的值。

VpcConfig

参数类型示例值描述
VpcIdStringvpc-3rf8******VPC ID。如果 VPC ID 为空字符串,代表删除当前 VPC 配置。
EnableVpcBooleanfalse函数是否开启私有网络访问。
SubnetIdsArray of Stringsubnet-mj1l******子网 ID。
SecurityGroupIdsArray of Stringsg-rs6s******安全组 ID。

EnableSharedInternetAccess

Boolean

false

函数访问公网开关。是否通过 veFaaS 的 VPC 共享 NAT 网关,访问公网。取值:

  • true:开启,通过默认网卡访问公网。会产生公网出流量费用。
  • false:关闭,函数无法通过默认网卡访问公网。

TlsConfig

参数类型示例值描述

EnableLog

Boolean

false

TLS 日志功能开关。

  • true:开启,函数的 stdout/stderr 日志将被采集至日志服务的指定日志项目和日志主题中。
  • false:关闭,不采集日志。
TlsTopicIdStringtls-vefaas-logstoreTLS 日志主题 ID。
TlsProjectIdStringtls-vefaasTLS 日志项目 ID。

NasStorage

参数类型示例值描述

EnableNas

Boolean

false

是否开启 NAS 存储挂载。

  • true:开启,将数据存储至 NAS。
  • false:不开启。
NasConfigsArray of NasConfig-NAS 存储配置。

TosMountConfig

参数类型示例值描述
EnableTosBooleanfalse是否开启 TOS 存储挂载。
CredentialsObject of Credentials-开启 TOS 后需要提供具有 TOS 域名访问权限的 AKSK。
MountPointsArray of TosMountPoint-开启 TOS 后需要提供 TOS 存储配置列表,最多不超过 5 个。

NasConfig

参数类型示例值描述
GidLong1000文件系统中的用户组,暂时不支持自定义,如果提供该参数,参数值 1000(和函数 run user gid 保持一致)。
UidLong1000文件系统中的用户,暂时不支持自定义,如果提供该参数,参数值只能为 1000(和函数 run user uid 保持一致)。
RemotePathString/文件系统远端目录。长度 1-128 个字符,只能以“/”开头,支持大小写字母、数字和特殊字符(- . _ ~ / : @ = + ? # )。
FileSystemIdStringenas-cns******NAS 文件系统 ID。
MountPointIdStringmount-63******NAS 挂载点 ID。
LocalMountPathString/mnt/nas函数本地挂载目录。长度 1-128 个字符,只能以“/”开头,支持大小写字母、数字和特殊字符(- . _ ~ / : @ = + ? # )。

Credentials

参数类型示例值描述
AccessKeyIdString******火山引擎账号的 AccessKey ID(AK)。获取方式,请参见 访问密钥使用指南
SecretAccessKeyString******火山引擎账号的 Secret Access Key(SK)。获取方式,请参见 访问密钥使用指南

TosMountPoint

参数类型示例值描述
EndpointStringhttp://tos-cn-beijing.ivolces.comTOS 访问域名。

ReadOnly

Boolean

true

函数本地目录访问权限,挂载 TOS Bucket后,函数本地挂载目录的访问权限是否为只读。

  • true:只读
  • false(默认):读写
BucketNameStringai-modelTOS 存储桶。
BucketPathString/挂载的 TOS Bucket 路径。
LocalMountPathString/mnt/tos函数本地挂载目录。

返回示例

HTTP/1.1 200 OK
Content-Type: application/json
{
    "ResponseMetadata": {
        "RequestId": "20230604110420****100232280022D31",
        "Action": "CreateFunction",
        "Version": "2024-06-06",
        "Service": "vefaas",
        "Region": "cn-beijing"
    },
    "Result": {
        "Id": "pqyqo9qa",
        "Name": "official-site",
        "Description": "轻量级官网",
        "Runtime": "python3.8/v1",
        "ExclusiveMode": true,
        "RequestTimeout": 30,
        "MaxConcurrency": 100,
        "MemoryMB": 1024,
        "CodeSize": 473,
        "CodeSizeLimit": 256,
        "SourceLocation": "https://vefaas.tos-s3-cn.volces.com/template_dir/666ad75b9124c400072abcvefaas-python3.9-default.zip?X-Amz******",
        "SourceType": "tos",
        "Envs": [
            {
                "Key": "business_type",
                "Value": "free"
            }
        ],
        "VpcConfig": {
            "EnableVpc": true,
            "VpcId": "vpc-rrag******",
            "SubnetIds": [
                "subnet-milb******"
            ],
            "SecurityGroupIds": [
                "sg-rrag******"
            ],
            "EnableSharedInternetAccess": true
        },
        "CreationTime": "2024-06-14 15:31:07.143863441 +0800 CST m=+88714.902440864",
        "LastUpdateTime": "2024-06-14 15:31:07.143863491 +0800 CST m=+88714.902440914",
        "TlsConfig": {
            "EnableLog": true,
            "TlsProjectId": "a40202c5-fe22-4ea7-******",
            "TlsTopicId": "2ff955cb-1f03-4b9b-******"
        },
        "ResourcePoolId": "ujdsugabcd",
        "Owner": "22******",
        "TriggersCount": 0,
        "UseStatus": "normal",
        "DebugInstanceEnable": true,
        "InstanceType": "",
        "NasStorage": {
            "EnableNas": true,
            "NasConfigs": [
                {
                    "FileSystemId": "cnas-cnbjb******",
                    "MountPointId": "mount-bce15678",
                    "RemotePath": "/",
                    "LocalMountPath": "/mnt/nas",
                    "Uid": 1000,
                    "Gid": 1000
                }
            ]
        },
        "TosMountConfig": {
            "EnableTos": true,
            "MountPoints": [
                {
                    "Endpoint": "http://tos-cn-beijing.ivolces.com",
                    "BucketName": "ai-models",
                    "BucketPath": "/",
                    "LocalMountPath": "/mnt/tos",
                    "ReadOnly": false
                }
            ]
        },
        "InitializerSec": 30
    }
}

错误码

当前接口暂无独立错误码,若接口调用返回异常,可参考 公共错误码 进行故障排查。