
# 创建函数 - CreateFunction
#### 功能介绍
创建函数。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/LakeFormation/doc?api=CreateFunction)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-lakeformation/abcd.html)。
#### URI
POST /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions
表1路径参数 
| 参数            | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                     |
|:---|:---|:---|:---|
| project_id    | 是    | String | **参数解释:** 项目编号。获取方法，请参见[获取项目ID](https://support.huaweicloud.com/api-lakeformation/lakeformation_04_0026.html)。 **约束限制:** 长度为1\~64个字符 **取值范围:** 长度为1\~64个字符 **默认取值:** 不涉及 |
| instance_id   | 是    | String | **参数解释:** LakeFormation实例ID。创建实例时自动生成。例如：2180518f-42b8-4947-b20b-adfc53981a25。 **约束限制:** 不涉及 **取值范围:** 不涉及 **默认取值:** 不涉及                                                 |
| catalog_name  | 是    | String | **参数解释:** catalog名称。 **约束限制:** 只能包含字母、数字和下划线，且长度为1\~256个字符。 **取值范围:** 长度为1\~256个字符 **默认取值:** 不涉及                                                                         |
| database_name | 是    | String | **参数解释:** 数据库名称。 **约束限制:** 只能包含中文、字母、数字、下划线、中划线，且长度为1\~128个字符。 **取值范围:** 长度为1\~128个字符 **默认取值:** 不涉及                                                                      |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                             |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | Array of strings | **参数解释:** 租户token。 **约束限制:** 数组元素个数为1\~100 **取值范围:** 数组元素个数为1\~100 **默认取值:** 不涉及 |
   
表3请求Body参数 
| 参数                     | 是否必选 | 参数类型                                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|:---|:---|
| function_name          | 是    | String                                                                               | **参数解释:** 函数名称。只能包含字母、数字和下划线，且长度为1\~256个字符 **约束限制:** 长度为1\~256个字符 **取值范围:** 长度为1\~256个字符 **默认取值:** 不涉及                                                               |
| function_type          | 是    | String                                                                               | **参数解释:** 函数类型，JAVA,remoteUDF, PYTHON, LAKE **约束限制:** 可选值为：JAVA, remoteUDF, PYTHON, LAKE **取值范围:** 不涉及 **默认取值:** 不涉及                                                 |
| owner                  | 否    | String                                                                               | **参数解释:** 函数所有者。只能包含字母、数字和下划线，且长度为1\~256个字符 **约束限制:** 长度为0\~256个字符 **取值范围:** 长度为0\~256个字符 **默认取值:** 不涉及                                                              |
| owner_type             | 否    | String                                                                               | **参数解释:** 所有者类型：USER-用户、GROUP-组、ROLE-角色 **约束限制:** 可选值为：USER, GROUP, ROLE **取值范围:** 不涉及 **默认取值:** 不涉及                                                                 |
| owner_auth_source_type | 否    | String                                                                               | **参数解释:** 所有者授权来源类型：IAM-云、SAML-联邦、LDAP-LDAP用户、LOCAL-本地、AGENTTENANT-委托、OTHER-其它 **约束限制:** 可选值为：IAM, SAML, LDAP, LOCAL, AGENTTENANT, OTHER **取值范围:** 不涉及 **默认取值:** 不涉及 |
| class_name             | 否    | String                                                                               | **参数解释:** 函数类名。长度为1\~4000个字符。仅remoteUDF类型的函数不要求输入函数类名 **约束限制:** 长度为1\~4000个字符 **取值范围:** 长度为1\~4000个字符 **默认取值:** 不涉及                                                  |
| create_time            | 否    | String                                                                               | **参数解释:** 函数创建时间 **约束限制:** 最小长度为1 **取值范围:** 最小长度为1 **默认取值:** 不涉及                                                                                                     |
| resource_uris          | 否    | Array of [FunctionResourceUri] objects | **参数解释:** 函数地址信息 **约束限制:** 数组元素个数为0\~1000 **取值范围:** 数组元素个数为0\~1000 **默认取值:** 不涉及                                                                                     |
| parameters             | 否    | Map\<String,String\>                                                                 | **参数解释:** 函数参数信息，键和值为字符串，长度不超过8192 **约束限制:** 长度为0\~8192个字符 **取值范围:** 长度为0\~8192个字符 **默认取值:** 不涉及                                                                     |
   
 表4FunctionResourceUri 
| 参数   | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| type | 是    | String | **参数解释:** 函数包类型：JAR，FILE，ARCHIVE，URI **约束限制:** 可选值为：JAR, FILE, ARCHIVE, URI **取值范围:** 不涉及 **默认取值:** 不涉及 |
| uri  | 是    | String | **参数解释:** 函数包地址信息 **约束限制:** 长度为1\~4096个字符 **取值范围:** 长度为1\~4096个字符 **默认取值:** 不涉及                         |
   
#### 响应参数
**状态码：201**
表5响应Body参数 
| 参数                     | 参数类型                                                                                  | 描述                                                                                                                                                       |
|:---|:---|:---|
| catalog_name           | String                                                                                | **参数解释:** catalog名称                                                                                                    |
| catalog_id             | String                                                                                | **参数解释:** catalogID                                                                                                    |
| database_name          | String                                                                                | **参数解释:** 数据库名称                                                                                                        |
| database_id            | String                                                                                | **参数解释:** 数据库ID                                                                                                        |
| function_name          | String                                                                                | **参数解释:** 函数名称。只能包含字母、数字和下划线，且长度为1\~256个字符                                                                             |
| function_type          | String                                                                                | **参数解释:** 函数类型,JAVA,remoteUDF,PYTHON,LAKE                                                                              |
| function_id            | String                                                                                | **参数解释:** 函数ID                                                                                                         |
| owner                  | String                                                                                | **参数解释:** 函数所有者。只能包含字母、数字和下划线，且长度为1\~256个字符                                                                            |
| owner_type             | String                                                                                | **参数解释:** 所有者类型：USER-用户、GROUP-组、ROLE-角色                                                                                |
| owner_auth_source_type | String                                                                                | **参数解释:** 所有者授权来源类型：IAM-云用户、SAML-联邦、LDAP-LDAP用户、LOCAL-本地用户、AGENTTENANT-委托、OTHER-其它。LakeFormation服务分为一期和二期，一期响应Body无该参数 |
| class_name             | String                                                                                | **参数解释:** 函数类名                                                                                                         |
| create_time            | String                                                                                | **参数解释:** 函数创建时间                                                                                                       |
| update_time            | String                                                                                | **参数解释:** 函数元数据最后一次修改时间                                                                                                |
| resource_uris          | Array of [FunctionResourceUri] objects | **参数解释:** 函数地址信息                                                                                                       |
| version_id             | String                                                                                | **参数解释:** 版本ID                                                                                                         |
| parameters             | Map\<String,String\>                                                                  | **参数解释:** 参数                                                                                                           |
   
 表6FunctionResourceUri 
| 参数   | 参数类型   | 描述                                                                                                                                                       |
|:---|:---|:---|
| type | String | **参数解释:** 函数包类型：JAR，FILE，ARCHIVE，URI **取值范围:** 不涉及 |
| uri  | String | **参数解释:** 函数包地址信息 **取值范围:** 长度为1\~4096个字符          |
   
**状态码：400**
表7响应Body参数 
| 参数           | 参数类型   | 描述                                                 |
|:---|:---|:---|
| error_code   | String | **参数解释:** 错误码    |
| error_msg    | String | **参数解释:** 错误描述   |
| solution_msg | String | **参数解释:** 解决方案描述 |
   
**状态码：401**
表8响应Body参数 
| 参数           | 参数类型   | 描述                                                 |
|:---|:---|:---|
| error_code   | String | **参数解释:** 错误码    |
| error_msg    | String | **参数解释:** 错误描述   |
| solution_msg | String | **参数解释:** 解决方案描述 |
   
**状态码：403**
表9响应Body参数 
| 参数         | 参数类型                                            | 描述                                               |
|:---|:---|:---|
| error      | [Error] object | **参数解释:** 错误信息 |
| error_code | String                                          | **参数解释:** 错误码  |
| error_msg  | String                                          | **参数解释:** 错误描述 |
| title      | String                                          | **参数解释:** 标题   |
   
 表10Error 
| 参数         | 参数类型   | 描述                                               |
|:---|:---|:---|
| error_code | String | **参数解释:** 错误码  |
| error_msg  | String | **参数解释:** 错误描述 |
| title      | String | **参数解释:** 标题   |
| message    | String | **参数解释:** 错误信息 |
| code       | String | **参数解释:** 状态码  |
   
**状态码：404**
表11响应Body参数 
| 参数           | 参数类型   | 描述                                                 |
|:---|:---|:---|
| error_code   | String | **参数解释:** 错误码    |
| error_msg    | String | **参数解释:** 错误描述   |
| solution_msg | String | **参数解释:** 解决方案描述 |
   
**状态码：408**
表12响应Body参数 
| 参数           | 参数类型   | 描述                                                 |
|:---|:---|:---|
| error_code   | String | **参数解释:** 错误码    |
| error_msg    | String | **参数解释:** 错误描述   |
| solution_msg | String | **参数解释:** 解决方案描述 |
   
**状态码：500**
表13响应Body参数 
| 参数           | 参数类型   | 描述                                                 |
|:---|:---|:---|
| error_code   | String | **参数解释:** 错误码    |
| error_msg    | String | **参数解释:** 错误描述   |
| solution_msg | String | **参数解释:** 解决方案描述 |
   
#### 请求示例
```
POST https://{endpoint} /v1/{project_id}/instances/{instance_id}/catalogs/{catalog_name}/databases/{database_name}/functions
{
  "function_name" : "1456",
  "function_type" : "JAVA",
  "owner" : "owner_2",
  "owner_type" : "USER",
  "owner_auth_source_type" : "IAM",
  "class_name" : "34",
  "create_time" : "2022-12-09T01:50:56.000+00:00",
  "resource_uris" : [ {
    "type" : "JAR",
    "uri" : "obs://lakeformation-test/"
  }, {
    "type" : "FILE",
    "uri" : "obs://lakeformation-test/test3/"
  } ]
}
```
#### 响应示例
**状态码：201**
Created
```
{
  "function_name" : "1456",
  "function_type" : "JAVA",
  "owner" : "owner_2",
  "owner_type" : "USER",
  "owner_auth_source_type" : "IAM",
  "class_name" : "34",
  "create_time" : "2022-12-09T01:50:56.000+00:00",
  "resource_uris" : [ {
    "type" : "JAR",
    "uri" : "obs://lakeformation-test/"
  }, {
    "type" : "FILE",
    "uri" : "obs://lakeformation-test/test3/"
  } ]
}
```
**状态码：400**
Bad Request
```
{
  "error_code" : "common.01000001",
  "error_msg" : "failed to read http request, please check your input, code: 400, reason: Type mismatch., cause: TypeMismatchException"
}
```
**状态码：401**
Unauthorized
```
{
  "error_code" : "APIG.1002",
  "error_msg" : "Incorrect token or token resolution failed"
}
```
**状态码：403**
Forbidden
```
{
  "error" : {
    "code" : "403",
    "message" : "X-Auth-Token is invalid in the request",
    "error_code" : null,
    "error_msg" : null,
    "title" : "Forbidden"
  },
  "error_code" : "403",
  "error_msg" : "X-Auth-Token is invalid in the request",
  "title" : "Forbidden"
}
```
**状态码：404**
Not Found
```
{
  "error_code" : "common.01000001",
  "error_msg" : "response status exception, code: 404"
}
```
**状态码：408**
Request Timeout
```
{
  "error_code" : "common.00000408",
  "error_msg" : "timeout exception occurred"
}
```
**状态码：500**
Internal Server Error
```
{
  "error_code" : "common.00000500",
  "error_msg" : "internal error"
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 201 | Created               |
| 400 | Bad Request           |
| 401 | Unauthorized          |
| 403 | Forbidden             |
| 404 | Not Found             |
| 408 | Request Timeout       |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-lakeformation/ErrorCode.html)。
