調用CreateFunction介面建立函數。
調試
您可以在OpenAPI Explorer中直接運行該介面,免去您計算簽名的困擾。運行成功後,OpenAPI Explorer可以自動產生SDK程式碼範例。
要求標頭
該介面使用公用要求標頭和特殊要求標頭。本文已列出特殊要求標頭,公用要求標頭,請參見公用參數。
| 名稱 | 類型 | 是否必選 | 樣本 | 描述 |
| X-Fc-Code-Checksum | String | 否 | 543402527838814**** | 函數程式碼封裝的CRC-64值。 |
請求文法
POST /services/{serviceName}/functions HTTP/1.1
請求參數
| 名稱 | 類型 | 位置 | 是否必選 | 樣本值 | 描述 |
| serviceName | String | Path | 是 | service_name | 服務的名稱。服務名稱只能包含字母、數字、底線(_)和短劃線(-),不能以數字、短劃線(-)開頭,長度為1~128個字元。 |
| Object | Body | 否 | 函數的定義。 |
||
| code | Code | Body | 否 | 指定Code ZIP包。 |
|
| customContainerConfig | CustomContainerConfig | Body | 否 | Custom Container運行時的相關配置,配置後函數可以使用自訂容器鏡像執行函數。 |
|
| layers | Array of String | Body | 否 | 02f81d283888f5ec63442a88fe82b260#Layer-name#1 | 層資源的名稱。 |
| description | String | Body | 否 | test_description | 函數的描述。 |
| functionName | String | Body | 是 | function_name | 函數的名稱。 函數名稱只能包含字母、數字、底線(_)和短劃線(-),不能以數字、短劃線(-)開頭,長度為1~64個字元。 |
| handler | String | Body | 是 | index.handler | 函數執行的入口,具體格式和語言相關,更多資訊,請參見函數入口。 |
| initializationTimeout | Integer | Body | 否 | 30 | 初始化函數啟動並執行逾時時間,單位為秒,預設3秒。最小1秒,最長5分鐘。初始化函數超過這個時間後會被終止執行。 |
| initializer | String | Body | 否 | index.initializer | 初始化函數執行的入口,具體格式與語言相關,更多資訊,請參見Initializer函數。 |
| memorySize | Integer | Body | 否 | 256 | 函數的記憶體規格,單位為MB,記憶體大小為64 MB的倍數。不同的函數執行個體類型,記憶體規格存在差異,具體資訊,請參見執行個體規格。 |
| runtime | String | Body | 否 | python3 | 函數啟動並執行語言環境,支援nodejs14、nodejs12、nodejs10、nodejs8、nodejs6、nodejs4.4、python3、python2.7、java11、java8、go1、php7.2、dotnetcore2.1、custom和custom-container。更多資訊,請參見支援的函數運行環境列表。 |
| timeout | Integer | Body | 否 | 60 | 函數啟動並執行逾時時間,單位為秒,預設60秒。最小1秒,最長86400秒。函數超過這個時間後會被終止執行。 |
| caPort | Integer | Body | 否 | 9000 | Custom Runtime或Custom Container運行時HTTP Server的監聽連接埠。 |
Code支援兩種方式提供函數程式碼封裝,在一次請求中必須且只能使用其中一種:
- 指定儲存程式碼封裝的ossBucketName和ossObjectName。
- 指定zipFile為ZIP包的Base64編碼內容。
返回資料
| 名稱 | 類型 | 樣本值 | 描述 |
| ETag | String | 738136ea26b79cee660862cd7628**** | 確保實際修改的函數和期望修改的函數是一致的。 |
| codeChecksum | String | 2825179536350**** | 函數程式碼封裝的CRC-64值。 |
| codeSize | Long | 421 | 系統返回的函數的程式碼封裝大小,單位為Byte。 |
| createdTime | String | 2020-04-01T08:15:27Z | 函數的建立時間。 |
| customContainerConfig | CustomContainerConfig | Custom Container運行時的相關配置,配置後函數可以使用自訂容器鏡像執行函數。 |
|
| layers | Array of String | 02f81d283888f5ec63442a88fe82b260#Layer-name#1 | 層資源的名稱。 |
| description | String | test_description | 函數的描述。 |
| environmentVariables | Map | 為函數設定的環境變數,可以在函數中擷取環境變數的值。更多資訊,請參見環境變數。 |
|
| functionId | String | fc46822c-0fb9-4c15-b898-bace828a**** | 系統為每個函數產生的ID,全網唯一。 |
| functionName | String | function_name | 函數的名稱。 |
| handler | String | index.handler | 函數執行的入口,具體格式和語言相關,更多資訊,請參見函數入口。 |
| lastModifiedTime | Long | 2020-04-01T08:15:27Z | 函數上一次被更新的時間。 |
| memorySize | Integer | 256 | 函數的記憶體規格,單位為MB,記憶體大小為64 MB的倍數。不同的函數執行個體類型,函數執行記憶體存在差異,具體資訊,請參見執行個體規格。 |
| runtime | String | python3 | 函數啟動並執行語言環境,支援nodejs14、nodejs12、nodejs10、nodejs8、nodejs6、nodejs4.4、python3、python2.7、java11、java8、go1、php7.2、dotnetcore2.1、custom和custom-container。更多資訊,請參見支援的函數運行環境列表。 |
| timeout | Integer | 60 | 函數啟動並執行逾時時間,單位為秒,預設60秒。最小1秒,最長86400秒。函數超過這個時間後會被終止執行。 |
| initializationTimeout | Integer | 60 | 初始化函數啟動並執行逾時時間,單位為秒,預設3秒。最小1秒,最長5分鐘。初始化函數超過這個時間後會被終止執行。 |
| initializer | String | index.handler | 初始化函數執行的入口,具體格式與語言相關,更多資訊,請參見Initializer函數。 |
| caPort | Integer | 9000 | Custom Runtime或Custom Container運行時HTTP Server的監聽連接埠。 |
樣本
請求樣本
POST /services/service_name/functions HTTP/1.1
Host:fc-ram.aliyuncs.com
X-Fc-Code-Checksum:543402527838814****
Content-Type:application/json
{
"code" : {
"ossBucketName" : "demo-bucket",
"ossObjectName" : "demo-key",
"zipFile" : "cHJpbnQoImhlbGxvIHdvcmxkIikK"
},
"customContainerConfig" : {
"args" : "[\"-arg1\", \"value1\"]",
"command" : "[\"/code/myserver\"]",
"image" : "registry-vpc.cn-hangzhou.aliyuncs.com/fc-demo/helloworld:v1beta1",
"accelerationType" : "Default",
"instanceID" : "cri-xxxxxxxx"
},
"layers" : [ "02f81d283888f5ec63442a88fe82b260#Layer-name#1" ],
"description" : "test_description",
"functionName" : "function_name",
"handler" : "index.handler",
"initializationTimeout" : 30,
"initializer" : "index.initializer",
"memorySize" : 256,
"runtime" : "python3",
"timeout" : 60,
"caPort" : 9000
}
正常返回樣本
JSON格式
HTTP/1.1 200 OK
Content-Type:application/json
{
"codeChecksum" : "2825179536350****",
"codeSize" : 421,
"createdTime" : "2020-04-01T08:15:27Z",
"customContainerConfig" : {
"args" : "[\"-arg1\", \"value1\"]",
"command" : "[\"/code/myserver\"]",
"image" : "registry-vpc.cn-hangzhou.aliyuncs.com/fc-demo/helloworld:v1beta1",
"accelerationType" : "Default",
"instanceID" : "cri-xxxxxxxx"
},
"layers" : [ "02f81d283888f5ec63442a88fe82b260#Layer-name#1" ],
"description" : "test_description",
"functionId" : "aa715851-1c20-4b89-a8fb-***",
"functionName" : "function_name",
"handler" : "index.handler",
"memorySize" : 256,
"runtime" : "python3",
"timeout" : 60,
"initializationTimeout" : 60,
"initializer" : "index.handler",
"caPort" : 9000
}
錯誤碼
訪問錯誤中心查看更多錯誤碼。