# 创建边缘模块
#### 功能介绍
用户通过Console接口在指定边缘节点上创建边缘模块
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/IoTEdge/doc?api=CreateModule)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### URI
POST /v2/{project_id}/edge-nodes/{edge_node_id}/modules
表1路径参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                        |
|:---|:---|:---|:---|
| project_id   | 是    | String | 项目ID。获取方法请参见 [获取项目ID](https://support.huaweicloud.com/api-iotedge/iotedge_api_0032.html)。 |
| edge_node_id | 是    | String | 边缘节点ID                                                                                    |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。通过调用IAM服务 [获取IAM用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)接口获取，接口返回的响应消息头中"X-Subject-Token"就是需要获取的用户Token。简要的获取方法样例请参见 [Token认证](https://support.huaweicloud.com/api-iothub/iot_06_v5_0091.html#section0)。 |
   
表3请求Body参数 
| 参数                 | 是否必选 | 参数类型                                                                                                                          | 描述     |
|:---|:---|:---|:---|
| edge_app_id        | 是    | String                                                                                                                        | 边缘应用名称 |
| app_version        | 是    | String                                                                                                                        | 边缘应用版本 |
| module_name        | 否    | String                                                                                                                        | 边缘模块名称 |
| container_settings | 否    | [ContainerSettingsReqDTO] object | 容器相关配置 |
   
 表4ContainerSettingsReqDTO 
| 参数          | 是否必选 | 参数类型                                                                                                                        | 描述                                                       |
|:---|:---|:---|:---|
| configs     | 否    | [ContainerConfigsReqDTO] object | 容器相关配置                                                   |
| custom_envs | 否    | Object                                                                                                                      | 自定义环境变量                                                  |
| extra_hosts | 否    | Object                                                                                                                      | 域名解析配置集合。示例：\[{"hostname":"endpoint","ip":"127.0.0.1"}\] |
   
 表5ContainerConfigsReqDTO 
| 参数                  | 是否必选 | 参数类型                                                                                                                      | 描述      |
|:---|:---|:---|:---|
| container_port_list | 否    | Array of [ContainerPortDTO] objects | 容器端口映射值 |
   
 表6ContainerPortDTO 
| 参数             | 是否必选 | 参数类型    | 描述               |
|:---|:---|:---|:---|
| container_port | 否    | Integer | 构成一对映射的容器端口      |
| host_port      | 否    | Integer | 构成一对映射的物理机对应网卡端口 |
| host_ip        | 否    | String  | 对应网卡地址           |
   
表7DNSConfigDTO 
| 参数       | 是否必选 | 参数类型   | 描述       |
|:---|:---|:---|:---|
| hostname | 否    | String | 域名       |
| ip       | 否    | String | 域名解析对应IP |
   
#### 响应参数
**状态码：201**
表8响应Body参数 
| 参数                 | 参数类型                                                                                                                                       | 描述                |
|:---|:---|:---|
| edge_app_id        | String                                                                                                                                     | 应用ID              |
| app_version        | String                                                                                                                                     | 应用版本              |
| state              | String                                                                                                                                     | 模块运行状态            |
| liveness_state     | String                                                                                                                                     | 模块健康状态            |
| control_status     | String                                                                                                                                     | 模块管控状态            |
| node_id            | String                                                                                                                                     | 边缘节点（同deviceID）ID |
| module_name        | String                                                                                                                                     | 模块名称              |
| module_id          | String                                                                                                                                     | 模块ID              |
| create_time        | String                                                                                                                                     | 创建时间              |
| update_time        | String                                                                                                                                     | 最后一次修改时间          |
| app_type           | String                                                                                                                                     | 应用类型              |
| function_type      | String                                                                                                                                     | 功能类型              |
| container_settings | [ModuleContainerSettingsResDTO] object | 容器相关配置            |
   
 表9ModuleContainerSettingsResDTO 
| 参数          | 参数类型                                                                                                                         | 描述       |
|:---|:---|:---|
| configs     | [ContainerConfigsResDTO] object | 容器相关配置   |
| custom_envs | Object                                                                                                                       | 自定义环境变量  |
| extra_hosts | Array of [DNSConfigDTO] objects           | 域名解析配置集合 |
   
 表10ContainerConfigsResDTO 
| 参数                  | 参数类型                                                                                                                       | 描述         |
|:---|:---|:---|
| host_network        | Boolean                                                                                                                    | 是否使用主机网络模式 |
| container_port_list | Array of [ContainerPortDTO] objects | 容器端口映射值    |
   
 表11ContainerPortDTO 
| 参数             | 参数类型    | 描述               |
|:---|:---|:---|
| container_port | Integer | 构成一对映射的容器端口      |
| host_port      | Integer | 构成一对映射的物理机对应网卡端口 |
| host_ip        | String  | 对应网卡地址           |
   
 表12DNSConfigDTO 
| 参数       | 参数类型   | 描述       |
|:---|:---|:---|
| hostname | String | 域名       |
| ip       | String | 域名解析对应IP |
   
#### 请求示例
```
POST https://{endpoint}/v2/{project_id}/edge-nodes/{edge_node_id}/modules
{
  "edge_app_id" : "test-app",
  "app_version" : "1.0.0",
  "module_name" : "edge_module",
  "container_settings" : {
    "configs" : {
      "container_port_list" : [ {
        "container_port" : 65535,
        "host_port" : 65535,
        "host_ip" : "string"
      } ]
    }
  }
}
```
#### 响应示例
**状态码：201**
```
{
  "edge_app_id" : "test-app",
  "app_version" : "1.0.0",
  "state" : "PENDING",
  "control_status" : "0000000000000000",
  "node_id" : "test-node",
  "module_name" : "edge_module",
  "module_id" : "test-module-id",
  "create_time" : "2020-05-28T11:31:29.740Z",
  "update_time" : "2020-05-28T11:31:29.740Z",
  "app_type" : "SYSTEM_REQUIRED",
  "function_type" : "DATA_PROCESSING",
  "container_settings" : {
    "configs" : {
      "container_port_list" : [ {
        "container_port" : 65535,
        "host_port" : 65535,
        "host_ip" : "string"
      } ]
    }
  }
}
```
#### 状态码
| 状态码 | 描述                    |
|:---|:---|
| 201 | create                |
| 401 | Bad Request           |
| 500 | Internal Server Error |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-iotedge/ErrorCode.html)。
