# ModifySnatEntry

## 1. 接口描述

本接口(ModifySnatEntry)用于修改SNAT规则。

## 2. 请求参数

以下请求参数列表仅列出了接口中需要的请求参数

| 参数名称             | 必选 | 类型              | 描述                                                                                                                 |
| ---------------- | -- | --------------- | ------------------------------------------------------------------------------------------------------------------ |
| snatEntryId      | 是  | String          | SNAT规则 ID。                                                                                                         |
| eipIds           | 否  | Array of String | <p>SNAT规则添加的弹性公网IP ID集合。</p><p>如果需要修改为NAT网关所有上弹性公网IP，请指定<code>isAllEip</code>=<code>true</code>。</p>               |
| isAllEip         | 否  | Boolean         | 弹性公网IP是否为所有的NAT网关上的公网弹性IP。                                                                                         |
| cidr             | 否  | String          | <p>源CIDR网段。</p><p>该字段已废弃，请使用<code>sourceCidrBlocks</code>。</p>                                                     |
| sourceCidrBlocks | 否  | Array of String | <p>源CIDR地址段列表。</p><p>与<code>subnetIds</code>必须指定其中的一种。</p><p>如果使用全地址段，指定为<code>0.0.0.0/0</code>。</p>               |
| subnetIds        | 否  | Array of String | <p>要修改子网ID集合。</p><p>该参数表示该子网内的实例均可以通过<code>SNAT</code>规则访问外部网络。</p><p>与<code>sourceCidrBlocks</code>必须指定其中的一种。</p> |

## 3. 响应结果

| 参数名称      | 类型     | 描述                                                       |
| --------- | ------ | -------------------------------------------------------- |
| requestId | String | <p>唯一请求 ID。</p><p>每次请求都会返回。定位问题时需要提供该次请求的 requestId。</p> |

## 4. 代码示例

{% tabs %}
{% tab title="示例" %}
**1. 修改成一个子网类型的SNAT。**

```json
POST /api/v2/zec HTTP/1.1
Host: console.zenlayer.com
Content-Type: application/json
X-ZC-Action: ModifySnatEntry
<Common Request Params>

Request：
{
  "snatEntryId": "<snatEntryId>",
  "subnetIds": ["<subnetId>"],
  "eipIds": ["<eipId>"]
}

Response：
{
  "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3",
  "response": {
    "requestId": "T05992D0C-7E8B-4047-B0C0-780F2CD549D3"
  }
}
```

{% endtab %}
{% endtabs %}

## 5. 开发者工具

Zenlayer Cloud API 2.0 提供了配套的[开发工具集（SDK）](https://docs.console.zenlayer.com/api-reference/cn/api-introduction/toolkit)，未来会陆续支持更多开发语言，方便快速接入和使用Zenlayer的产品和服务。

## 6. 错误码

下面包含业务逻辑中遇到的错误码，其他错误码见[公共错误码](https://docs.console.zenlayer.com/api-reference/cn/api-introduction/instruction/commonerrorcode)

| HTTP状态码 | 错误码                                                    | 说明                     |
| ------- | ------------------------------------------------------ | ---------------------- |
| 404     | INVALID\_SNAT\_ENTRY\_NOT\_FOUND                       | SNAT规则不存在。             |
| 404     | INVALID\_NAT\_NOT\_FOUND                               | NAT网关不存在。              |
| 400     | OPERATION\_DENIED\_NAT\_STATUS                         | NAT网关状态不是RUNNING。      |
| 404     | INVALID\_EIP\_NOT\_FOUND                               | EIP不存在。                |
| 400     | OPERATION\_DENIED\_EIP\_NOT\_ASSIGNED                  | EIP状态未绑定。              |
| 400     | OPERATION\_DENIED\_EIP\_NOT\_ASSIGN\_NAT               | EIP没有与NAT网关绑定。         |
| 400     | OPERATION\_DENIED\_ANYPORT\_DNAT\_ENTRY                | DNAT规则存在ANY PORT。      |
| 400     | OPERATION\_DENIED\_SNAT\_ENTRY\_COUNT\_LIMIT           | SNAT规则数量限制。            |
| 400     | INVALID\_CIDR\_FORMAT                                  | 指定的cidr格式不正确。          |
| 404     | INVALID\_NAT\_SUBNET\_NOT\_FOUND                       | 指定的subnet在nat网关上不存在。   |
| 400     | OPERATION\_DENIED\_CIDR\_CONFLICT\_WITH\_SNAT\_ENTRY   | 指定的cidr与其它SNAT规则上存在。   |
| 400     | OPERATION\_DENIED\_NAT\_SUBNET\_CONFLICT               | NAT的Subnet配置冲突。        |
| 400     | OPERATION\_DENIED\_NAT\_ENTRY\_CONFIG\_CONFLICT        | NAT规则配置冲突。             |
| 400     | OPERATION\_DENIED\_SUBNET\_CONFLICT\_WITH\_SNAT\_ENTRY | 指定的subnet在其它SNAT规则上存在。 |
