Updated on 2022-02-22 GMT+08:00

Publishing a Function Version

Function

This API is used to publish a function version.

You can publish a version based on the code of the LATEST version, and FunctionGraph automatically generates a version name. A function can have a maximum of 10 versions.

URI

POST /v2/{project_id}/fgs/functions/{function_urn}/versions

Table 1 describes the URI parameters.

Table 1 URI parameters

Parameter

Type

Mandatory

Description

project_id

String

Yes

Project ID.

function_urn

String

Yes

Function URN. See Function Model.

Request

Table 2 describes the request parameters.

Table 2 Request parameters

Parameter

Type

Mandatory

Description

digest

String

No

Code digest of the function for which you want to publish a version.

If this parameter is not specified, a version will be published using the code of the LATEST version.

version

String

No

Name of the version to be published.

If this parameter is not specified, the current time in the format of "yyyymmdd-HHMMSS" will be used.

description

String

No

Description of the version to be published.

Response

Table 3 describes the response parameters.
Table 3 Response parameters

Parameter

Type

Description

func_urn

String

Function URN.

func_name

String

Function name.

domain_id

String

Domain ID.

namespace

String

Tenant's project ID.

project_name

String

Tenant's project name.

package

String

Group to which the function belongs. This field is defined to group functions.

runtime

String

Environment for executing the function. FunctionGraph supports Node.js 6.10, Node.js 8.10, Node.js 10.16, Node.js 12.13, Python 2.7, Python 3.6, Java 8, Go 1.8, C# (.NET Core 2.0), C# (.NET Core 2.1), C# (.NET Core 3.1), and PHP 7.3.

timeout

Int

Maximum duration the function can be executed. Value range: 3s–900s.

handler

String

Handler of the function in the format of "xx.xx". It must contain a period (.).

For example, for Node.js function myfunction.handler, the file name is myfunction.js, and the entry point function is handler.

memory_size

Int

Memory (MB) consumed by the function.

Options: 128, 256, 512, 768, 1024, 1280, 1536, 1792, 2048, 2560, 3072, 3584, and 4096.

cpu

Int

Number of CPU millicores used by the function (1 core = 1000 millicores).

The value of this field is proportional to that of MemorySize. By default, 100 CPU millicores are required for 128 MB memory. The value is calculated as follows: Memory/128 x 100 + 200 (basic CPU millicores).

code_type

String

Function code type. Options:

  • inline: inline code
  • zip: ZIP file
  • jar: JAR file (mainly for Java functions)
  • obs: function code stored in an Object Storage Service (OBS) bucket

code_url

String

  • When code_type is set to obs, this parameter indicates the address of a function code package in OBS.
  • When code_type is set to inline, zip, or jar, this parameter is left blank.

code_filename

String

Function file name.

  • When code_type is set to zip or jar, this parameter is required.
  • When code_type is set to obs or inline, this parameter is not required.

code_size

Int64

Code size in bytes.

user_data

String

Name/Value information defined for the function.

For example, if a function needs to access a host, define Host={host_ip}. You can define a maximum of 20 such parameters, and their total length cannot exceed 4 KB.

digest

String

SHA512 hash value of function code, which is used to determine whether the function is changed.

version

String

Function version, which is automatically generated by the system. The version name is in the format of "vYYYYMMDD-HHMMSS" (v+year/month/day-hour/minute/second).

image_name

String

Internal identifier of a function version.

xrole

String

Agency used by the function. You need to create an agency on the Identity and Access Management (IAM) console. This field is mandatory when a function needs to access other services.

app_xrole

*String

Agency used by the function app. You need to create an agency on the IAM console. This field is mandatory when a function needs to access other services.

description

String

Description of the function.

version_description

String

Description of the function version.

last_modified

String

Time when the function was last updated.

func_code

String

Function code. See Table 4.

depend_list

[]String

Dependency list.

strategy_config

String

Function policy configuration. See Table 4.

extend_config

String

Function extension configuration.

dependencies

[]*String

Dependency code package. See Table 5.

initializer_handler

String

Initializer of the function in the format of "xx.xx". It must contain a period (.).

For example, for Node.js function myfunction.initializer, the file name is myfunction.js, and the initialization function is initializer.

initializer_timeout

Int

Maximum duration the function can be initialized. Value range: 1s–300s.

func_vpc

*String

Virtual Private Cloud (VPC) configuration. See Table 6.

mount_config

*String

Disk mount configuration. See Table 7.

Table 4 strategy_config parameter

Parameter

Type

Mandatory

Description

concurrency

Int

Yes

  • 0: The function is disabled.
  • -1: The function is enabled.

Example

Example request

POST /v2/7aad83af3e8d42e99ac194e8419e2c9b/fgs/functions/urn:fss:xxxxxxx:7aad83af3e8d42e99ac194e8419e2c9b:function:default:test:latest/versions HTTP/1.1 
{
  "digest": "", 
  "version": "1.0.0", 
  "description": "test publish version" 
}

Example response

The format of the response for a successful request is as follows:

HTTP/1.1 200
{
       "func_urn": "urn:fss:xxxxxxxxx:7aad83af3e8d42e99ac194e8419e2c9b:function:default:test",
       "func_name": "test",
       "user_domain": "cff01_hk",
       "namespace": "7aad83af3e8d42e99ac194e8419e2c9b",
       "project_name": "xxxxxxxxx",
       "package": "default",
       "runtime": "Node.js6.10",
       "timeout": 3,
       "handler": "test.handler",
       "memory_size": 128,
       "cpu": 300,
       "code_type": "inline",
       "code_filename": "index.js",
       "code_size": 272,
       "digest": "decbce6939297b0b5ec6d1a23bf9c725870f5e69fc338a89a6a4029264688dc26338f56d08b6535de47f15ad538e22ca66613b9a46f807d50b687bb53fded1c6",
       "version": "latest",
       "image_name": "latest-5qe8e",
       "xrole": "cff",
       "description": "111",
       "last_modified": "2018-03-28T11:30:32+08:00",
  "func_code": {
   },
   "strategy_config": {
       "concurrency": -1
   },
"initializer_handler": "index.initializer",
"initializer_timeout": 3      }

The format of the response for a failed request is as follows:

HTTP/1.1 404 Not Found 
{ 
  "error_code": "FSS.1051", 
  "error_msg": "Not found the function" 
 }

Status Code

See Status Codes.