NAT
获取Endpoint
在确认您使用SDK配置Endpoint时,可先阅读开发人员指南中关于 VPC服务域名的部分,理解Endpoint相关的概念。 百度智能云目前开放了多区域支持,请参考区域选择说明中网络产品VPC的部分,NAT服务是VPC服务的一部分,使用VPC服务域名。
获取密钥
要使用百度云产品,您需要拥有一个百度云账号和一个有效的 AK(Access Key ID)、SK(Secret Access Key)用来进行签名认证。可以通过如下步骤获得并了解您的AK/SK信息: 1. 注册百度云账号 2. 创建AK/SK
nat_client
nat_client是NAT服务的Python客户端,nat_client将NAT服务的API进行封装,简化了开发者与NAT服务的交互,用户可调用nat_client中的方法对NAT网关进行配置。
新建nat_client
新建nat_client时,需要先使用Endpoint、AK、SK对BceClientConfiguration类型config实例进行配置,再使用config实例对nat_client进行配置,具体配置方法如下:
HOST = b''
AK = b''
SK = b''
config = BceClientConfiguration(
credentials=BceCredentials(AK, SK), endpoint=HOST)
self.client = nat_client.NatClient(config)
创建NAT网关
使用以下代码可以创建NAT网关
函数声明
def create_nat(self, name, vpc_id, spec=None, billing=None, eips=None,
dnat_eips=None, client_token=None, config=None, cu_num=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Xjwvyul3d
返回值
操作成功:
{
"natId": "nat-b58rnkn1g98h"
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_create_nat.py
查询NAT网关列表
使用以下代码可以查询NAT网关列表
函数声明
def list_nats(self, vpc_id=None, nat_id=None, name=None,
ip=None, marker=None, max_keys=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Tjwvyukbd
返回值
操作成功:
{
"nats":[
{
"id":"nat-bir8biqwr45e",
"name":"mynat",
"vpcId":"vpc-13vuxu016dew",
"spec":"small",
"status":"unconfigured",
"eips":[
],
"paymentTiming":"Prepaid",
"expiredTime":"2018-08-13T08:10:59Z",
"createTime": "2021-04-25 17:22:34"
},
{
"id":"nat-b9q8n98mdxwc",
"name":"mynat",
"vpcId":"vpc-13vuxu016dew",
"spec":"small",
"status":"unconfigured",
"eips":[
],
"paymentTiming":"Prepaid",
"expiredTime":"2018-07-27T13:18:00Z",
"createTime": "2021-04-25 17:22:34"
}
]
}
"marker":"nat-b58rnkn1g98h",
"isTruncated": true,
"nextMarker": "nat-bi72s924x5xu",
"maxKeys": 2
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_list_nat.py
查询NAT网关详情
使用以下代码可以查询NAT网关详情
函数声明
def get_nat(self, nat_id, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Mjwvyuj7m
返回值
操作成功:
{
"id":"nat-bir8biqwr45e",
"name":"mynat",
"vpcId":"vpc-13vuxu016dew",
"spec":"small",
"status":"unconfigured",
"eips":[
],
"dnatEips":[
],
"paymentTiming":"Prepaid",
"expiredTime":"2018-08-13T08:10:59Z",
"createTime": "2021-04-25 17:22:34",
"tags":[
{
"tagKey": "tagKey",
"tagValue": "tagValue"
}
]
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_get_nat.py
更新NAT网关名称
使用以下代码可以更新NAT网关名称
函数声明
def update_nat(self, nat_id, name, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/ojwvyuisy
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_update_nat.py
释放NAT网关
使用以下代码可以释放NAT网关
函数声明
def delete_nat(self, nat_id, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/yjwvyujjq
返回值
操作成功:
无特殊返回参数。
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_delete_nat.py
NAT网关续费
使用以下代码可以续费NAT网关
函数声明
def purchase_reserved_nat(self, nat_id, billing, client_token=None,
config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Vjwvyukqv
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_purchase_reserved_nat.py
NAT网关绑定SNAT EIP
使用以下代码可以绑定SNAT EIP
函数声明
def bind_eip(self, nat_id, eips, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Ljwvyujy8
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_bind_eip.py
NAT网关解绑SNAT EIP
使用以下代码可以解绑SNAT EIP
函数声明
def unbind_eip(self, nat_id, eips, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/qjwvyuigl
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_unbind_eip.py
NAT网关绑定DNAT EIP
使用以下代码可以绑定DNAT EIP
函数声明
def bind_dnat_eip(self, nat_id, eips, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/iki4chiu4
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_bind_dnat_eip.py
NAT网关解绑DNAT EIP
使用以下代码可以解绑DNAT EIP
函数声明
def unbind_dnat_eip(self, nat_id, eips, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Uki4cj64l
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_unbind_dnat_eip.py
创建SNAT规则
使用以下代码可以创建SNAT规则
函数声明
def create_snat_rule(self, nat_id, rule_name, source_cidr, public_ip_address, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Iki4clqjv
返回值
操作成功:
{
"ruleId": "rule-zrsaybxm7nrn"
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_create_snat_rule.py
批量创建SNAT规则
使用以下代码可以批量创建SNAT规则
函数声明
def batch_create_snat_rule(self, nat_id, snat_rules, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/oktlo8qfr
返回值
操作成功:
{
"snatRuleIds": [
"rule-zrsaybxm7nrn",
"rule-f5kid5g50nua"
]
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_batch_create_snat_rule.py
删除SNAT规则
使用以下代码可以删除SNAT规则
函数声明
def delete_snat_rule(self, nat_id, snat_rule_id, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/vki4cot86
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_delete_snat_rule.py
更新SNAT规则
使用以下代码可以更新SNAT规则
函数声明
def update_snat_rule(self, nat_id, snat_rule_id, rule_name=None, source_cidr=None,
public_ip_address=None, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Vki4cn14y
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_update_snat_rule.py
查询SNAT规则
使用以下代码可以查询SNAT规则
函数声明
def list_snat_rule(self, nat_id, marker=None, maxKeys=None, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Pki4cq2nu
返回值
操作成功:
{
"isTruncated": true,
"nextMarker": "rule-vza86i2k6dqu",
"maxKeys": 2,
"rules": [
{
"ruleId": "rule-k1jenum3v9s6",
"ruleName": "s3",
"publicIpsAddress": [
"100.88.10.185"
],
"sourceCIDR": "1.1.1.1/32",
"status": "configuring"
},
{
"ruleId": "rule-kdgqkwpske2q",
"ruleName": "s2",
"publicIpsAddress": [
"100.88.10.185"
],
"sourceCIDR": "192.168.1.0/24",
"status": "configuring"
}
]
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_list_snat_rule.py
创建DNAT规则
使用以下代码可以创建DNAT规则
函数声明
def create_dnat_rule(self, nat_id, public_ip_address, private_ip_address, protocol, rule_name=None,
public_port=None, private_port=None, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/fki4c1gb3
返回值
操作成功:
{
"ruleId": "rule-zrsaybxm7nrn"
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_create_dnat_rule.py
批量创建DNAT规则
使用以下代码可以批量创建DNAT规则
函数声明
def batch_create_dnat_rule(self, nat_id, dnat_rules, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Aktl8mzvd
返回值
操作成功:
{
"ruleIds": [
"rule-zrsaybxm7nrn",
"rule-f5kid5g50nua"
]
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_batch_create_dnat_rule.py
删除DNAT规则
使用以下代码可以删除DNAT规则
函数声明
def delete_dnat_rule(self, nat_id, dnat_rule_id, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/zki4cbkkf
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_delete_dnat_rule.py
更新DNAT规则
使用以下代码可以更新DNAT规则
函数声明
def update_dnat_rule(self, nat_id, dnat_rule_id,
public_ip_address=None, private_ip_address=None,
rule_name=None, protocol=None, public_port=None,
private_port=None, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Aki4c9crm
返回值
操作成功:
无特殊返回参数
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_update_dnat_rule.py
查询DNAT规则
使用以下代码可以查询DNAT规则
函数声明
def list_dnat_rule(self, nat_id, marker=None, maxKeys=None, client_token=None, config=None):
参数含义
请参考OpenAPI文档:https://cloud.baidu.com/doc/VPC/s/Hki4cf6bf
返回值
操作成功:
{
"isTruncated": true,
"nextMarker": "rule-pej10dar6pxd",
"maxKeys": 2,
"rules": [
{
"ruleId": "rule-29d9jpprcm75",
"ruleName": "sg",
"publicIpAddress": "100.88.6.197",
"privateIpAddress": "192.168.3.3",
"publicPort": 333,
"privatePort": 333,
"status": "active",
"protocol": "TCP"
},
{
"ruleId": "rule-72z6p8ni6rce",
"ruleName": "sd",
"publicIpAddress": "100.88.6.197",
"privateIpAddress": "192.168.2.2",
"publicPort": 222,
"privatePort": 222,
"status": "active",
"protocol": "UDP"
}
]
}
操作失败:
抛出异常,异常列表参考:NAT网关异常列表
代码示例
具体代码示例参考:example_list_dnat_rule.py