
# 更新服务配置
#### 功能介绍
更新模型服务配置。也可以使用此接口启停服务。
#### 调试
您可以在[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/ModelArts/doc?api=UpdateService)中调试该接口，支持自动认证鉴权。API Explorer可以自动生成SDK代码示例，并提供SDK代码示例调试功能。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-modelarts/modelarts_03_0138.html)。
- 如果使用身份策略授权，需具备如下身份策略权限。
  
  | 授权项                      | 访问级别  | 资源类型（\*为必须） | 条件键                       | 别名 | 依赖的授权项 |
  |:---|:---|:---|:---|:---|:---|
  | modelarts:service:update | Write | service \*  | g:ResourceTag/\<tag-key\> | -  | -      |
     
  
 
#### URI
PUT /v1/{project_id}/services/{service_id}
表1路径参数 
| 参数         | 是否必选 | 参数类型   | 描述                                                                                               |
|:---|:---|:---|:---|
| project_id | 是    | String | 用户项目ID。获取方法请参见[获取项目ID和名称](https://support.huaweicloud.com/api-modelarts/modelarts_03_0147.html)。 |
| service_id | 是    | String | 服务ID。                                                                                            |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                       |
|:---|:---|:---|:---|
| X-Auth-Token | 是    | String | 用户Token。通过调用IAM服务获取用户Token接口获取（响应消息头中X-Subject-Token的值）。 |
   
表3请求Body参数 
| 参数                    | 是否必选 | 参数类型                                                                                                            | 描述                                                                                      |
|:---|:---|:---|:---|
| schedule              | 否    | Array of [Schedule] objects                                    | 服务调度配置，仅在线服务可配置，默认不使用，服务长期运行。                                                           |
| description           | 否    | String                                                                                                          | 服务描述，不超过100个字符，不能包含字符有!\<\>=\&"'。不设置此参数表示不更新。                                           |
| config                | 否    | Array of [ServiceConfig] objects                          | 服务配置，不设置此参数表示不更新。                                                                       |
| status                | 否    | String                                                                                                          | 服务状态，可设置状态为running或stopped来启动、停止服务，不设置此参数则不修改状态。status不可跟config同时修改，同时存在则只修改status。     |
| additional_properties | 否    | Map\<String,[ServiceAdditionalProperties]\> | 服务级别附加属性，便于服务管理。                                                                        |
| load_balancer_policy  | 否    | String                                                                                                          | 只支持在线同步服务设置后端elb转发策略，枚举值：ROUND_ROBIN(加权轮询算法)，LEAST_CONNECTIONS(加权最少连接)，SOURCE_IP(源ip算法) |
| service_secrets       | 否    | Array of [ServiceSecret] objects                          | 挂载到服务的密钥列表，不设置此参数表示不更新                                                                  |
| priority              | 否    | Integer                                                                                                         | 抢占优先级，取值范围\[1， 3\]，通过设置优先级保障高优先级的业务调度。infer_type为real-time、batch时支持抢占优先级设置。             |
   
 表4Schedule 
| 参数        | 是否必选 | 参数类型    | 描述                                              |
|:---|:---|:---|:---|
| duration  | 是    | Integer | 对应时间单位的数值，比如2小时后停止，则time_unit填HOURS，duration填2。 |
| time_unit | 是    | String  | 调度时间单位，可选DAYS/HOURS/MINUTES。                    |
| type      | 是    | String  | 调度类型，当前仅支持取值为stop，即运行指定时间后自动停止。                 |
   
 表5ServiceConfig 
| 参数                        | 是否必选 | 参数类型                                                                                                        | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|:---|:---|:---|:---|
| custom_spec               | 否    | [CustomSpec] object                                      | 自定义资源规格配置，仅当specification配置为custom时返回。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| envs                      | 否    | Map\<String,String\>                                                                                        | 公共参数。运行模型需要的环境变量键值对，可选填，默认为空。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| specification             | 是    | String                                                                                                      | 公共参数。资源规格，可通过查询支持的服务部署规格可获取规格列表。当前版本可选modelarts.vm.cpu.2u/modelarts.vm.gpu.pnt004(需申请)/modelarts.vm.ai1.snt3(需申请)/custom(仅支持在部署到专属资源池时使用)，需申请的规格请提交工单，由ModelArts运维工程师添加权限。若配置为custom，需同时指定custom_spec参数。                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| weight                    | 否    | Integer                                                                                                     | real-time类型必选。权重百分比，分配到此模型的流量权重，仅当infer_type为real-time时需要配置，多个权重相加必须等于100；当在一个在线服务中同时配置了多个模型版本且设置不同的流量权重比例时，持续地访问此服务的预测接口，ModelArts会按此权重比例将预测请求转发到对应的模型版本实例。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| deploy_timeout_in_seconds | 否    | Integer                                                                                                     | 单个模型实例部署的超时时间。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| model_id                  | 是    | String                                                                                                      | 公共参数。模型ID。通过调用查询AI应用列表接口可以获取。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| src_path                  | 否    | String                                                                                                      | batch服务类型必选。批量任务输入数据的OBS路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| req_uri                   | 否    | String                                                                                                      | batch服务类型必选。批量任务中调用的推理接口，即模型镜像中暴露的REST接口，需要从模型的config.json文件中选取一个api路径用于此次推理；如使用ModelArts提供的预置推理镜像，则此接口为/。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| mapping_type              | 否    | String                                                                                                      | batch服务类型必选。输入数据的映射类型，可选file或csv。 - 选择file时，指每个推理请求对应到输入数据目录下的一个文件，当使用此方式时，此模型对应req_uri只能有一个输入参数且此参数的类型是file。   - 选择csv时，指每个推理请求对应到csv里的一行数据，当使用此方式时，输入数据目录下的文件只能以.csv为后缀，且需配置mapping_rule参数，以表达推理请求体中各个参数对应到csv的索引。    |
| cluster_id                | 否    | String                                                                                                      | 可选，部署服务时使用的资源池ID。对于rel-time和batch服务类型，为旧版专属资源池ID，配置此参数后，则使用集群的网络配置，vpc_id参数不生效，使用专属资源池部署服务时需确保集群状态正常，该参数优先级低于pool_name，配置该参数时需要同时配置服务层级的cluster_id或pool_name参数，且该参数优先级高于服务层级的cluster_id及pool_name，当config内的cluster_id与pool_name均未配置时，会使用服务层级的cluster_id及pool_name参数，均不配置时则会使用共享资源池；对于edge服务类型，为边缘资源池ID，使用边缘资源池部署服务时需确保资源池状态正常，配置该参数时需要同时配置服务层级的cluster_id参数，且该参数优先级高于服务层级的cluster_id；当该参数未配置时，会使用服务层级的cluster_id参数。                                                                                                                                                                                                                                         |
| pool_name                 | 否    | String                                                                                                      | real-time和batch服务类型可选。部署服务时使用的AI专属资源池弹性集群的资源池ID，使用专属资源池部署服务时需确保集群状态正常；该参数优先级高于cluster_id，配置该参数时需要同时配置服务层级的cluster_id或pool_name参数，且该参数优先级高于服务层级的cluster_id及pool_name；当config内的cluster_id与pool_name均未配置时，会使用服务层级的cluster_id及pool_name参数，均不配置时则会使用共享资源池。                                                                                                                                                                                                                                                                                                                                                                                                       |
| nodes                     | 否    | Array of strings                                                                                            | edge服务类型可选。边缘节点ID数组，节点ID为IEF（智能边缘平台）的边缘节点ID，在IEF上创建边缘节点后可得到。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| mapping_rule              | 否    | Object                                                                                                      | batch服务类型可选。输入参数与csv数据的映射关系，仅当mapping_type为csv时需要填写。映射规则与模型配置文件config.json中输入参数的定义方式相似，只需要在每一个基本类型（string/number/integer/boolean）的参数下配置index参数，指定使用csv数据中对应索引下标的数据作为此参数的值去发送推理请求，csv数据必须以英文半角逗号分隔，index从0开始计数，特殊地，当index为-1时忽略此参数。具体可参考创建批量服务的样例。                                                                                                                                                                                                                                                                                                                                                                                                           |
| src_type                  | 否    | String                                                                                                      | batch服务类型必选。数据来源类型，可选填ManifestFile；默认为空，表示只读取src_path目录下的文件；当取值为ManifestFile时，src_path必须为具体的manifest路径，在manifest文件中可指定多个数据路径（参考推理manifest规范）。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| dest_path                 | 否    | String                                                                                                      | batch服务类型必选。批量任务输出结果的OBS路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| instance_count            | 是    | Integer                                                                                                     | 公共参数。模型部署的实例数，当前限制最大实例数为128，如需使用更多的实例数，需提交工单申请。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| additional_properties     | 否    | Map\<String,[ModelAdditionalProperties]\> | 模型部署附加属性，便于服务实例管理。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| affinity                  | 否    | [ServiceAffinity] object                            | 服务亲和部署                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
 表6CustomSpec 
| 参数          | 是否必选 | 参数类型    | 描述                                                       |
|:---|:---|:---|:---|
| gpu_p4      | 否    | Float   | GPU个数，可选，默认不使用，支持配置小数，输入值不能小于0（最多支持2位小数，小数点后第3位做四舍五入处理）。 |
| memory      | 是    | Integer | 内存，单位为MB，仅支持整数。                                          |
| cpu         | 是    | Float   | CPU核数，支持配置小数，输入值不能小于0.01（最多支持2位小数，小数点后第3位做四舍五入处理）。       |
| ascend_a310 | 否    | Integer | Ascend芯片个数，可选，默认不使用，不支持与gpu同时配置。                         |
   
 表7ModelAdditionalProperties 
| 参数                               | 是否必选 | 参数类型                                                                                           | 描述                                                                                                          |
|:---|:---|:---|:---|
| log_volume                       | 否    | Array of [LogVolume] objects                 | 主机日志目录挂载。 仅支持使用专属资源池部署服务场景。如果用户使用公共资源池部署服务，则不支持配置该参数，否则会报错。 |
| max_surge                        | 否    | Float                                                                                          | 必须大于0，不配置默认值为1。当小于1时，代表滚动升级时增加的实例数的百分比；当大于1时，代表滚动升级时最大扩容的实例数。                                               |
| max_unavailable                  | 否    | Float                                                                                          | 必须大于0，不配置默认值为0。当小于1时，代表滚动升级时允许缩容的实例数的百分比；当大于1时，代表滚动升级时允许缩容的实例数。                                             |
| termination_grace_period_seconds | 否    | Integer                                                                                        | 容器优雅停止时间。                                                                                                   |
| persistent_volumes               | 否    | Array of [PersistentVolumes] objects | 持久化存储挂载配置。                                                                                                  |
| dew_secret                       | 否    | [DewSecret] object                           | DEW凭据                                                                                                       |
   
 表8LogVolume 
| 参数         | 是否必选 | 参数类型   | 描述           |
|:---|:---|:---|:---|
| host_path  | 是    | String | 主机上要映射的日志路径。 |
| mount_path | 是    | String | 容器中的日志路径。    |
   
 表9PersistentVolumes 
| 参数             | 是否必选 | 参数类型   | 描述                                                                                                                     |
|:---|:---|:---|:---|
| name           | 否    | String | 存储卷的名称。                                                                                                                |
| mount_path     | 是    | String | 存储卷在容器中的挂载路径。如：/tmp。请不要挂载在系统目录下，如"/"、"/var/run"等，会导致容器异常。建议挂载在空目录下，若目录不为空，请确保目录下无影响容器启动的文件，否则文件会被替换，导致容器启动异常，工作负载创建失败。 |
| storage_type   | 否    | String | 挂载类型sfs_turbo极速文件系统挂载。                                                                                                 |
| source_address | 否    | String | 挂载源路径，挂载为极速文件时为sfs turbo id。                                                                                           |
   
 表10DewSecret 
| 参数          | 是否必选 | 参数类型   | 描述      |
|:---|:---|:---|:---|
| secret_name | 否    | String | DEW凭据名称 |
   
 表11ServiceAffinity 
| 参数            | 是否必选 | 参数类型                                                                       | 描述           |
|:---|:---|:---|:---|
| node_affinity | 否    | [NodeAffinity] object | 节点亲和的时候填入该字段 |
   
 表12NodeAffinity 
| 参数         | 是否必选 | 参数类型                                                                                         | 描述                                                                                                  |
|:---|:---|:---|:---|
| mode       | 是    | String                                                                                       | 节点亲和的方式，required表示强亲和，服务实例只能调度到指定节点，指定节点不存在则失败。preferred表示弱亲和，服务实例倾向于调度到指定节点，指定节点不满足调度条件，则会调度到其他节点。 |
| pool_infos | 否    | Array of [AffinityPoolInfo] objects | 配置亲和策略到指定的集群，并指定集群的节点。                                                                              |
   
 表13AffinityPoolInfo 
| 参数        | 是否必选 | 参数类型                                                                                         | 描述                       |
|:---|:---|:---|:---|
| pool_name | 是    | String                                                                                       | 集群名称，集群名称必须在外层pool_name中 |
| nodes     | 是    | Array of [AffinityNodeInfo] objects | 亲和的节点列表信息                |
   
 表14AffinityNodeInfo 
| 参数   | 是否必选 | 参数类型   | 描述                  |
|:---|:---|:---|:---|
| name | 是    | String | 节点名称，实际上对应的是节点的私有ip |
   
 表15ServiceAdditionalProperties 
| 参数                  | 是否必选 | 参数类型                                                                                           | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
|:---|:---|:---|:---|
| smn_notification    | 是    | Map\<String,[SmnNotification]\>        | smn消息通知结构，用于通知用户服务状态变化。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| log_report_channels | 否    | Array of [LogReportPipeline] objects | 日志通道组。没有配置或者数组长度为0时部署代表未启用LTS日志对接。开启后不支持修改。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| websocket_upgrade   | 否    | Boolean                                                                                        | 服务接口是否升级为WebSocket。部署服务时，默认值为false；更新服务配置时，默认值为上一次设置的值。 - false：不升级为WebSocket。   - true：升级为WebSocket。开启后，不支持修改。开启WebSocket时，不支持同时设置"服务流量限制"。    |
   
 表16SmnNotification 
| 参数        | 是否必选 | 参数类型              | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|:---|:---|
| topic_urn | 是    | String            | smn主题urn地址。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| events    | 是    | Array of integers | 事件ID，目前已有事件ID如下： - 1：failed   - 3：running   - 7：concerning   - 11：pending    |
   
 表17LogReportPipeline 
| 参数            | 是否必选 | 参数类型                                                                               | 描述               |
|:---|:---|:---|:---|
| type          | 是    | String                                                                             | 日志通道类型（目前支持LTS）。 |
| configuration | 否    | [LtsConfiguration] object | LTS日志配置。         |
   
 表18LtsConfiguration 
| 参数            | 是否必选 | 参数类型   | 描述             |
|:---|:---|:---|:---|
| log_group_id  | 是    | String | LTS日志组id，长度64。 |
| log_stream_id | 是    | String | LTS日志流id，长度64。 |
   
 表19ServiceSecret 
| 参数         | 是否必选 | 参数类型   | 描述   |
|:---|:---|:---|:---|
| secretId   | 是    | String | 密钥id |
| mount_path | 是    | String | 挂载路径 |
   
#### 响应参数
**状态码：200**
更新服务成功。
无
#### 请求示例
如下以更新"real-time"类型的服务为例。
```
PUT https://{endpoint}/v1/{project_id}/services/{service_id}
{
  "description" : "",
  "status" : "running",
  "config" : [ {
    "model_id" : "xxxx",
    "weight" : "100",
    "specification" : "modelarts.vm.cpu.2u",
    "instance_count" : 1
  } ]
}
```
#### 响应示例
**状态码：200**
更新服务成功。
```
{ }
```
#### 状态码
| 状态码 | 描述      |
|:---|:---|
| 200 | 更新服务成功。 |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-modelarts/modelarts_03_0095.html)。
