
# 创建任务
#### 功能介绍
调用该接口添加迁移任务。创建任务成功后，任务会被自动启动，不需要额外调用启动任务命令。
注意事项：
- 单个租户在过去24小时内最多可创建200个迁移任务。
- 单个租户名下处于"等待中"状态的迁移任务达到50个时不可再创建任务。
 
#### URI
POST /v1/{project_id}/objectstorage/task
表1参数说明 
| 参数         | 是否必选 | 描述    |
|:---|:---|:---|
| project_id | 是    | 项目ID。 |
   
#### 请求消息
**请求参数**
 表2请求参数 
| 参数                             | 是否必选 | 参数类型       | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| src_node                       | 是    | JSONObject | 源端节点信息，参见[表3]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| dst_node                       | 是    | JSONObject | 目的端节点信息，参见[表6]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| enableKMS                      | 是    | boolean    | 是否使用KMS加密。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| thread_num                     | 是    | int        | 该迁移任务使用的线程数，不能超过50个。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| description                    | 否    | String     | 任务描述，不能超过255个字符，且不能包含\<\>()"'\&等特殊字符。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| smnInfo                        | 否    | JSONObject | 当需要发送SMN消息时使用该字段，参见[表7]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| migrate_since                  | 否    | long       | 以时间戳方式表示的迁移指定时间（单位：s），表示仅迁移在指定时间之后修改的源端待迁移对象。默认不设置迁移指定时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| source_cdn                     | 否    | JSONObject | 指定是否启用CDN迁移支持，若包含此字段则为支持，否则为不支持，启用CDN迁移支持后，迁移时将从CDN域名获取源端对象，参见[表8]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| auto_restore                   | 否    | boolean    | 是否自动解冻归档数据，默认否。 开启后，如果遇到归档类型数据，会自动解冻再进行迁移。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| bandwidth_policy               | 否    | JSONArray  | 配置流量控制策略。数组中一个元素对应一个时段的最大带宽，最多允许5个时段，且时段不能重叠。具体参见[表9]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| task_type                      | 否    | String     | 任务类型，为空默认设置为object。 - list：对象列表迁移  - object：文件/文件夹迁移  - prefix：对象前缀迁移  - url_list：URL列表迁移 说明： 当task_type为list或url_list时，[表3]中list_file为必选参数。当task_type为object或prefix时，[表3]中object_key为必选参数。    |
| enable_failed_object_recording | 否    | Boolean    | 是否记录失败对象，默认开启。 开启后，如果有迁移失败对象，会在目的端存储失败对象信息。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
   
 表3src_node数据结构 
| 参数         | 是否必选 | 参数类型              | 描述                                                                                                                                                                                                                                                                                                                                                       |
|:---|:---|:---|:---|
| region     | 是    | String            | 源端桶所处的区域。                                                                                                                                                                                                                                                                                                                                                |
| ak         | 是    | String            | 源端桶的AK（最大长度100个字符）。 说明： 当[表2]中task_type为url_list时，ak为非必选。其他任务类型ak为必选。                                                                                                                                                                                        |
| sk         | 是    | String            | 源端桶的SK（最大长度100个字符）。 说明： 当[表2]中task_type为url_list时，sk为非必选。其他任务类型sk为必选。                                                                                                                                                                                       |
| list_file  | 否    | JSONObject        | 对象列表文件配置，具体请参见[表4]。 说明： 当[表2]中task_type为list或url_list时，list_file为必选参数。                                                                                                                                                        |
| object_key | 否    | String/JSONObject | 源端桶选择的对象名称，可以选择JSONObject格式或者String格式。 如果选择多个源端对象，则选用JSONObject格式，具体请参见[表5]。 说明： 当[表2]中task_type为object或prefix时，object_key为必选参数。                                                        |
| bucket     | 是    | String            | 源端桶的名称。 说明： 当[表2]中task_type为url_list时，bucket为非必选。其他任务类型bucket为必选。                                                                                                                                                                                                |
| app_id     | 否    | String            | 只在其他云服务提供商的账户存在appID这个标识时，需要填写此参数。                                                                                                                                                                                                                                                                                                                       |
| cloud_type | 否    | String            | 源端云服务提供商。 可选值有AWS、 Aliyun、Tencent、HuaweiCloud、QingCloud、KingsoftCloud、Baidu、Qiniu或URLSource（HTTP/HTTPS数据源）。默认值为Aliyun。 若不设置或为空，则使用默认值。 说明： 当[表2]中task_type为url_list时，cloud_type必须为URLSource。 |
   
 表4list_file数据结构 
| 参数            | 是否必选 | 参数类型   | 描述                                                                                                          |
|:---|:---|:---|:---|
| obs_bucket    | 是    | String | 存放对象列表文件的OBS桶名。 说明： 请确保与目的端桶处于同一区域，否则将导致任务创建失败。 |
| list_file_key | 是    | String | 对象列表文件或URL文件列表对象名。                                                                                          |
   
 表5object_key数据结构 
| 参数   | 是否必选 | 参数类型      | 描述                                                                                                                                                                                                                                                                                                                                |
|:---|:---|:---|:---|
| path | 否    | String    | 云服务提供商的根路径，以空字符串""表示。若使用该参数，请设置为""，否则会报错。                                                                                                                                                                                                                                                                                         |
| keys | 是    | JSONArray | 源端对象参数，含义取决于参数task_type。 - 当task_type为prefix时，keys中的字符串代表待迁移对象的前缀。  - 当task_type为object时，keys中"/"结尾的字符串代表待迁移的文件夹，非"/"结尾的字符串代表待迁移的文件。   |
   
 表6dst_node数据结构 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                                |
|:---|:---|:---|:---|
| region     | 是    | String | 目的端桶所处的区域。 说明： 请与Endpoint对应的区域保持一致。 |
| ak         | 是    | String | 目的端桶的AK（最大长度100个字符）。                                                                              |
| sk         | 是    | String | 目的端桶的SK（最大长度100个字符）。                                                                              |
| object_key | 是    | String | 目的端桶选择的对象名称（最大长度1024个字符）。                                                                         |
| bucket     | 是    | String | 目的端桶的名称。                                                                                          |
| cloud_type | 否    | String | 目的端云服务提供商。 默认值为华为云。若不设置或为空，则使用默认值。                                   |
   
 表7smnInfo数据结构 
| 参数                | 是否必选 | 参数类型      | 描述                                                                                                                                                                                                                                                                                                                            |
|:---|:---|:---|:---|
| topicUrn          | 是    | String    | 迁移任务所绑定的SMN消息主题的urn号。 说明： topicUrn所属区域需要与Endpoint对应的区域保持一致。                                                                                                                                                                                                    |
| language          | 否    | String    | 当前用户所使用的管理控制台的语言。 可以选择zh-cn或者en-us。                                                                                                                                                                                                                                                            |
| triggerConditions | 是    | JSONArray | SMN消息的触发条件，取决于迁移任务状态。 迁移任务状态的取值范围为SUCCESS或者FAIL。 - FAIL表示任务失败后发送SMN消息。  - SUCCESS表示任务成功后发送SMN消息。   |
   
 表8source_cdn数据结构 
| 参数                  | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|:---|:---|
| protocol            | 是    | String | 协议类型：https或http。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| domain              | 是    | String | 从指定域名获取对象。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| authentication_type | 是    | String | 鉴权方式。 - 无需鉴权：NONE  - Qiniu：QINIU_PRIVATE_AUTHENTICATION    - Aliyun： ALIYUN_OSS_A、ALIYUN_OSS_B、ALIYUN_OSS_C   - KingsoftCloud：KSYUN_PRIVATE_AUTHENTICATION   |
| authentication_key  | 否    | String | CDN鉴权密钥。 - 无需授权：无需配置此项。  - Qiniu：无需配置此项。    - Aliyun：根据authentication_type指定的鉴权方式配置此项。  - KingsoftCloud：无需配置此项。                                                                                                  |
   
 表9bandwidth_policy数据结构 
| 参数                                        | 是否必选 | 参数类型   | 描述                                              |
|:---|:---|:---|:---|
| start                                     | 是    | String | 流量控制开始时间（包含），格式为"hh:mm"。例如"10:03"表示10时03分。      |
| end  | 是    | String | 流量控制结束时间（包含），格式和start参数相同。                      |
| max_bandwidth                             | 是    | int    | 时段内允许的最大流量带宽，单位Byte/s，取值范围为\>= 5MB/s且\<=10GB/s。 |
   
#### 响应消息
**响应参数**
表10响应参数 
| 参数        | 参数类型   | 描述      |
|:---|:---|:---|
| id        | long   | 迁移任务ID。 |
| task_name | String | 迁移任务名称。 |
   
#### 示例
**请求示例**
POST /v1/{project_id}/objectstorage/task
```
{
"src_node": {
"region": "source_region",
"ak": "source_ak",
"sk": "source_sk",
"list_file": {
"obs_bucket": "oms-file",
"list_file_key": "object-keys.txt"
},
"bucket": "source_bucket",
"cloud_type": XXX
},
"thread_num": 50,
"enableKMS": true,
"description": "xxx",
"dst_node": {
"region": "target_region",
"ak": "target_ak",
"sk": "target_sk",
"object_key": "targetkey",
"bucket": "targetbucket",
"cloud_type": XXX
},
"smnInfo": {
"topicUrn": "urn:smn:region:3cfb09080bd944d0b4cdd72ef26857bd:OMS",
"triggerConditions": ["SUCCESS", "FAIL"],
"language": "en-us"
},
"task_type": "list",
"migrate_since": 123456789
}
```
或
POST /v1/{project_id}/objectstorage/task
```
{
"src_node": {
"region": "source_region",
"ak": "source_ak",
"sk": "source_sk",
"object_key": {
"path": "",
"keys": ["object1", "object2"]
},
"bucket": "source_bucket",
"cloud_type": "XXX"
},
"thread_num": 50,
"enableKMS": true,
"description": "xxx",
"dst_node": {
"region": "target_region",
"ak": "target_ak",
"sk": "target_sk",
"object_key": "targetkey",
"bucket": "targetbucket",
"cloud_type": "XXX"
},
"smnInfo": {
"topicUrn": "urn:smn:region:3cfb09080bd944d0b4cdd72ef26857bd:OMS",
"triggerConditions": ["SUCCESS", "FAIL"],
"language": "en-us"
},
"source_cdn": {
"protocol": "https",
"domain": "xxx.xxx.xxx",
"authentication_type": "NONE"
},
        "bandwidth_policy": [ 
        { 
                "start": "00:00", 
                "end": "23:59", 
                "max_bandwidth": 50000000
        }
       ]
}
```
或（URL列表迁移方式）
POST /v1/{project_id}/objectstorage/task
```
{
    "src_node": {
           "list_file": {
                  "obs_bucket": "oms-file",
                  "list_file_key": "url-list.txt"
           },
           "cloud_type": "URLSource"
    },
    "thread_num": 50,
    "enableKMS": true,
    "description": "xxx",
    "dst_node": {
           "region": "target_region",
           "ak": "target_ak",
           "sk": "target_sk",
           "object_key": "targetkey",
           "bucket": "targetbucket"
    },
    "smnInfo": {
           "topicUrn": "urn:smn:region:3cfb09080bd944d0b4cdd72ef26857bd:OMS",
           "triggerConditions": ["SUCCESS", "FAIL"],
           "language": "en-us"
    },
    "task_type": "url_list",
    "migrate_since": 123456789
}
```
**响应示例**
```
{
  "id": 16,
  "task_name": "task_name"
}
```
#### 状态码
状态码请参见[状态码](https://support.huaweicloud.com/api-oms/oms_api_0024.html)。
