# 操作WAF独享引擎 - UpdatePremiumInstance
#### 功能介绍
操作WAF独享引擎
#### 调用方法
请参见[如何调用API](https://support.huaweicloud.com/api-waf/waf_02_0007.html)。
#### 授权信息
账号具备所有API的调用权限，如果使用账号下的IAM用户调用当前API，该IAM用户需具备调用API所需的权限。
- 如果使用角色与策略授权，具体权限要求请参见[权限和授权项](https://support.huaweicloud.com/api-waf/waf_02_0119.html)。
- 如果使用身份策略授权，当前API调用无需身份策略权限。
 
#### URI
POST /v1/{project_id}/premium-waf/instance/{instance_id}/action
表1路径参数 
| 参数          | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|:---|
| project_id  | 是    | String | **参数解释：** 租户Project ID **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
| instance_id | 是    | String | **参数解释：** 独享引擎ID **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及       |
   
#### 请求参数
表2请求Header参数 
| 参数           | 是否必选 | 参数类型   | 描述                                                                                                                                                                                                                                                                                                                                                         |
|:---|:---|:---|:---|
| X-Auth-Token | 否    | String | **参数解释：** 租户token **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及 |
   
表3请求Body参数 
| 参数     | 是否必选 | 参数类型             | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|:---|:---|:---|:---|
| action | 是    | String           | **参数解释：** 独享引擎操作名称，目前支持 upgrade（升级） ，rollback（升级后回滚），security_groups（切换安全组） **约束限制：** 不涉及 **取值范围：** - upgrade   - rollback   - security_groups    **默认取值：** 不涉及 |
| params | 否    | Array of strings | **参数解释：** 具体的请求参数，操作为upgrade（升级） 、rollback（升级后回滚）时无需填写，操作为 security_groups（切换安全组）时，参数为安全组的id **约束限制：** 不涉及 **取值范围：** 不涉及 **默认取值：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   
#### 响应参数
**状态码：200**
表4响应Body参数 
| 参数                 | 参数类型                                                                                 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|:---|
| id                 | String                                                                               | **参数解释：** 独享引擎ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| instancename       | String                                                                               | **参数解释：** 独享引擎名称 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| serverId           | String                                                                               | **参数解释：** 独享引擎ECS ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| region             | String                                                                               | **参数解释：** Region代码 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| zone               | String                                                                               | **参数解释：** 可用区代码 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| arch               | String                                                                               | **参数解释：** CPU架构代码 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| cpu_flavor         | String                                                                               | **参数解释：** ECS规格代码 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| vpc_id             | String                                                                               | **参数解释：** 独享引擎所在VPC ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| subnet_id          | String                                                                               | **参数解释：** 独享引擎所在VPC的子网ID **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| service_ip         | String                                                                               | **参数解释：** 独享引擎的业务面IP **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| service_ipv6       | String                                                                               | **参数解释：** 独享引擎的业务面IPV6地址 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| floatIp            | String                                                                               | **参数解释：** 独享引擎的管理面IP **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| security_group_ids | Array of strings                                                                     | **参数解释：** 独享引擎ECS绑定的安全组 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| status             | Integer                                                                              | **参数解释：** 独享引擎计费状态标识，用于指示独享引擎当前的计费使用状态 **取值范围：** - 0：正常计费   - 1：冻结，资源和数据会保留，但租户无法再正常使用云服务   - 2：终止，资源和数据将清除                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| run_status         | Integer                                                                              | **参数解释：** 独享引擎运行状态标识，用于反映独享引擎当前的运行生命周期状态 **取值范围：** - 0：创建中   - 1：运行中   - 2：删除中   - 3：已删除   - 4：创建失败   - 5：已冻结   - 6：异常   - 7：更新中   - 8：更新失败    |
| access_status      | Integer                                                                              | **参数解释：** 独享引擎接入状态 **取值范围：** - 0: 未接入   - 1: 已接入                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| upgradable         | Integer                                                                              | **参数解释：** 独享引擎是否可升级（0：不可升级，1：可升级） **取值范围：** - 0: 不可升级   - 1: 可升级                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| cloudServiceType   | String                                                                               | **参数解释：** 云服务代码 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| resourceType       | String                                                                               | **参数解释：** 云服务资源类型 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| resourceSpecCode   | String                                                                               | **参数解释：** 云服务资源代码 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| specification      | String                                                                               | **参数解释：** 独享引擎ECS规格，如"8vCPUs \| 16GB" **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| hosts              | Array of [IdHostnameEntry] objects | **参数解释：** 独享引擎防护的域名 **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| volume_type        | String                                                                               | **参数解释：** 存储类型（可选） **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| cluster_id         | String                                                                               | **参数解释：** 存储资源池ID（可选） **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| pool_id            | String                                                                               | **参数解释：** 独享引擎所在WAF组的ID（仅适用特殊独享模式） **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| charge_mode        | Integer                                                                              | **参数解释：** '计费模式。0: 包周期；1:按需' **取值范围：** 不涉及                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   
 表5IdHostnameEntry 
| 参数       | 参数类型   | 描述     |
|:---|:---|:---|
| id       | String | 防护域名ID |
| hostname | String | 防护域名   |
   
**状态码：400**
表6响应Body参数 
| 参数                            | 参数类型                                                                                   | 描述                                                                                                 |
|:---|:---|:---|
| error_code                    | String                                                                                 | 错误码                                                                                                |
| error_msg                     | String                                                                                 | 错误信息                                                                                               |
| encoded_authorization_message | String                                                                                 | 编码 (加密) 后的详细拒绝原因，用户可以自行调用 STS 服务的decode-authorization-message接口进行解码，可参考STS5联调自验证。IAM5鉴权错误时才会返回此字段。 |
| details                       | Array of [IAM5ErrorDetails] objects | 调用下游服务的报错信息集合，IAM5鉴权错误时才会返回此字段。                                                                    |
   
 表7IAM5ErrorDetails 
| 参数         | 参数类型   | 描述       |
|:---|:---|:---|
| error_code | String | 下游服务错误码  |
| error_msg  | String | 下游服务报错信息 |
   
**状态码：401**
表8响应Body参数 
| 参数                            | 参数类型                                                                                     | 描述                                                                                                 |
|:---|:---|:---|
| error_code                    | String                                                                                   | 错误码                                                                                                |
| error_msg                     | String                                                                                   | 错误信息                                                                                               |
| encoded_authorization_message | String                                                                                   | 编码 (加密) 后的详细拒绝原因，用户可以自行调用 STS 服务的decode-authorization-message接口进行解码，可参考STS5联调自验证。IAM5鉴权错误时才会返回此字段。 |
| details                       | Array of [IAM5ErrorDetails] objects | 调用下游服务的报错信息集合，IAM5鉴权错误时才会返回此字段。                                                                    |
   
 表9IAM5ErrorDetails 
| 参数         | 参数类型   | 描述       |
|:---|:---|:---|
| error_code | String | 下游服务错误码  |
| error_msg  | String | 下游服务报错信息 |
   
**状态码：500**
表10响应Body参数 
| 参数                            | 参数类型                                                                                     | 描述                                                                                                 |
|:---|:---|:---|
| error_code                    | String                                                                                   | 错误码                                                                                                |
| error_msg                     | String                                                                                   | 错误信息                                                                                               |
| encoded_authorization_message | String                                                                                   | 编码 (加密) 后的详细拒绝原因，用户可以自行调用 STS 服务的decode-authorization-message接口进行解码，可参考STS5联调自验证。IAM5鉴权错误时才会返回此字段。 |
| details                       | Array of [IAM5ErrorDetails] objects | 调用下游服务的报错信息集合，IAM5鉴权错误时才会返回此字段。                                                                    |
   
 表11IAM5ErrorDetails 
| 参数         | 参数类型   | 描述       |
|:---|:---|:---|
| error_code | String | 下游服务错误码  |
| error_msg  | String | 下游服务报错信息 |
   
#### 请求示例
```
{
  "action" : "upgrade"
}
```
#### 响应示例
**状态码：200**
```
{
  "id" : "9ea89e662ba940af932258f510c3cfaf",
  "region" : "cn-north-7",
  "zone" : "cn-north-7c",
  "specification" : "2vCPUs | 8GB",
  "arch" : "x86",
  "upgradable" : 1,
  "status" : 0,
  "serverId" : "e10ceb6a-c59d-4671-88b1-f2ceaccf28da",
  "cloudServiceType" : "hws.service.type.waf",
  "resourceType" : "hws.resource.type.waf.instance",
  "resourceSpecCode" : "waf.instance.professional",
  "charge_mode" : 0,
  "vpc_id" : "0c32b303-70fc-4afa-bb4e-ec3de412103f",
  "subnet_id" : "66d467e1-8826-43e1-8236-62383f0fe4b3",
  "service_ip" : "10.0.1.14",
  "security_group_ids" : [ "06294861-8747-42d2-a770-0a6a5dc0df58" ],
  "cpu_flavor" : "c6.large.4",
  "run_status" : 1,
  "access_status" : 0,
  "instancename" : "60102527-SVqO"
}
```
#### SDK代码示例
SDK代码示例如下。
- [Java]
  ```
  package com.huaweicloud.sdk.test;
  import com.huaweicloud.sdk.core.auth.ICredential;
  import com.huaweicloud.sdk.core.auth.BasicCredentials;
  import com.huaweicloud.sdk.core.exception.ConnectionException;
  import com.huaweicloud.sdk.core.exception.RequestTimeoutException;
  import com.huaweicloud.sdk.core.exception.ServiceResponseException;
  import com.huaweicloud.sdk.waf.v1.region.WafRegion;
  import com.huaweicloud.sdk.waf.v1.*;
  import com.huaweicloud.sdk.waf.v1.model.*;
  public class UpdatePremiumInstanceSolution {
      public static void main(String[] args) {
          // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
          // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
          String ak = System.getenv("CLOUD_SDK_AK");
          String sk = System.getenv("CLOUD_SDK_SK");
          String projectId = "{project_id}";
          ICredential auth = new BasicCredentials()
                  .withProjectId(projectId)
                  .withAk(ak)
                  .withSk(sk);
          WafClient client = WafClient.newBuilder()
                  .withCredential(auth)
                  .withRegion(WafRegion.valueOf("<YOUR REGION>"))
                  .build();
          UpdatePremiumInstanceRequest request = new UpdatePremiumInstanceRequest();
          request.withInstanceId("{instance_id}");
          try {
              UpdatePremiumInstanceResponse response = client.updatePremiumInstance(request);
              System.out.println(response.toString());
          } catch (ConnectionException e) {
              e.printStackTrace();
          } catch (RequestTimeoutException e) {
              e.printStackTrace();
          } catch (ServiceResponseException e) {
              e.printStackTrace();
              System.out.println(e.getHttpStatusCode());
              System.out.println(e.getRequestId());
              System.out.println(e.getErrorCode());
              System.out.println(e.getErrorMsg());
          }
      }
  }
  ```
- [Python]
  ```
  # coding: utf-8
  import os
  from huaweicloudsdkcore.auth.credentials import BasicCredentials
  from huaweicloudsdkwaf.v1.region.waf_region import WafRegion
  from huaweicloudsdkcore.exceptions import exceptions
  from huaweicloudsdkwaf.v1 import *
  if __name__ == "__main__":
      # The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      # In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak = os.environ["CLOUD_SDK_AK"]
      sk = os.environ["CLOUD_SDK_SK"]
      projectId = "{project_id}"
      credentials = BasicCredentials(ak, sk, projectId)
      client = WafClient.new_builder() \
          .with_credentials(credentials) \
          .with_region(WafRegion.value_of("<YOUR REGION>")) \
          .build()
      try:
          request = UpdatePremiumInstanceRequest()
          request.instance_id = "{instance_id}"
          response = client.update_premium_instance(request)
          print(response)
      except exceptions.ClientRequestException as e:
          print(e.status_code)
          print(e.request_id)
          print(e.error_code)
          print(e.error_msg)
  ```
- [Go]
  ```
  package main
  import (
  "fmt"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/core/auth/basic"
      waf "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1"
  "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/model"
      region "github.com/huaweicloud/huaweicloud-sdk-go-v3/services/waf/v1/region"
  )
  func main() {
      // The AK and SK used for authentication are hard-coded or stored in plaintext, which has great security risks. It is recommended that the AK and SK be stored in ciphertext in configuration files or environment variables and decrypted during use to ensure security.
      // In this example, AK and SK are stored in environment variables for authentication. Before running this example, set environment variables CLOUD_SDK_AK and CLOUD_SDK_SK in the local environment
      ak := os.Getenv("CLOUD_SDK_AK")
      sk := os.Getenv("CLOUD_SDK_SK")
      projectId := "{project_id}"
      auth, err := basic.NewCredentialsBuilder().
          WithAk(ak).
          WithSk(sk).
          WithProjectId(projectId).
          SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      hcClient, err := waf.WafClientBuilder().
           WithRegion(region.ValueOf("<YOUR REGION>")).
           WithCredential(auth).
           SafeBuild()
      if err != nil {
          fmt.Println(err)
          return
      }
      client := waf.NewWafClient(hcClient)
      request := &model.UpdatePremiumInstanceRequest{}
  request.InstanceId = "{instance_id}"
  response, err := client.UpdatePremiumInstance(request)
  if err == nil {
          fmt.Printf("%+v\n", response)
      } else {
          fmt.Println(err)
      }
  }
  ```
- [更多]
  更多编程语言的SDK代码示例，请参见[API Explorer](https://console.huaweicloud.com/apiexplorer/#/openapi/WAF/sdk?api=UpdatePremiumInstance)的代码示例页签，可生成自动对应的SDK代码示例。
#### 状态码
| 状态码 | 描述        |
|:---|:---|
| 200 | 独享引擎信息    |
| 400 | 请求失败      |
| 401 | token权限不足 |
| 500 | 服务器内部错误   |
   
#### 错误码
请参见[错误码](https://support.huaweicloud.com/api-waf/ErrorCode.html)。
