路由
更新时间:2023-09-11
获取Endpoint
在确认您使用SDK配置Endpoint时,可先阅读开发人员指南中关于服务域名的部分,理解Endpoint相关的概念。 百度智能云目前开放了多区域支持,请参考区域选择说明中网络产品VPC的部分,Route服务是VPC服务的一部分,使用VPC服务域名。
获取密钥
要使用百度云产品,您需要拥有一个百度云账号和一个有效的 AK(Access Key ID)、SK(Secret Access Key)用来进行签名认证。可以通过如下步骤获得并了解您的AK/SK信息:
RouteClient
RouteClient是Route服务的客户端,为开发者与Route服务进行交互提供了一系列的方法。 新建RouteClient时,需要先使用Endpoint、AK、SK对BceClientConfigurationl类型的config实例进行配置,再使用config实例对RouteClient进行配置,具体配置方法如下:
HOST = b''
AK = b''
SK = b''
config = BceClientConfiguration(credentials=BceCredentials(AK, SK), endpoint=HOST)
self.the_client = route_client.RouteClient(config)
查询路由表
查询路由表,请求参数routeTableId和vpcId不可以同时为空。
查询路由表实例代码如下
def get_route(self, vpc_id=None, route_table_id=None, config=None):
path = b'/route'
params = {}
if route_table_id is not None:
params[b'routeTableId'] = route_table_id
if vpc_id is not None:
params[b'vpcId'] = vpc_id
return self._send_request(http_methods.GET, path, params=params, config=config)
参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
vpc_id | bytes或str | 否 | VPC的id,该参数和route_table_id两者之间至少选一个 |
route_table_id | bytes或str | 否 | 路由表id,该参数和vpc_id两者之间至少选一个 |
config | BceClientConfiguration | 否 | 默认为初始化route_client时的config |
:
创建路由规则
创建路由表规则,有以下几点需要注意:
- 源网段选择自定义时,自定义网段需在已有子网范围内,0.0.0.0/0除外;
- 目标网段不能与当前所在VPC cidr重叠(目标网段或本VPC cidr为0.0.0.0/0时例外);
- 新增路由条目的源网段和目标网段,不能与路由表中已有条目源网段和目标网段完全一致。
创建路由规则代码如下:
def create_route(self, route_table_id, source_address, destination_address,
next_hop_type, description, next_hop_id=None, client_token=None,
config=None):
path = b'/route/rule'
params = {}
if client_token is None:
params[b'clientToken'] = generate_client_token()
else:
params[b'clientToken'] = client_token
body = {
'routeTableId': compat.convert_to_string(route_table_id),
'sourceAddress': compat.convert_to_string(source_address),
'destinationAddress': compat.convert_to_string(destination_address),
'nexthopType': compat.convert_to_string(next_hop_type),
'description': compat.convert_to_string(description)
}
if next_hop_id is not None:
body['nexthopId'] = compat.convert_to_string(next_hop_id)
return self._send_request(http_methods.POST, path, body=json.dumps(body), params=params, config=config)
参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
route_table_id | bytes或str | 是 | 路由表id |
source_address | bytes或str | 是 | 源网段,可填全部网段0.0.0.0/0、VPC内已有子网网段或子网范围内网段 |
destination_address | bytes或str | 是 | 目标网段,可以是0.0.0.0/0,否则目的地址不能与本VPC cidr重叠(目的网段或本VPC cidr为0.0.0.0/0时例外) |
next_hop_type | bytes或str | 是 | 路由类型。Bcc类型是"custom";VPN类型是"vpn";NAT类型是"nat" |
description | bytes或str | 是 | 描述 |
next_hop_id | bytes或str | 否 | 下一跳id |
client_token | bytes或str | 否 | 幂等性Token,是一个长度不超过64位的ASCII字符串。 |
config | BceClientConfiguration | 否 | 默认为初始化route_client时的config |
删除路由规则
根据routeRuleId删除路由规则,代码如下:
def delete_route(self, route_rule_id, client_token=None, config=None):
path = b'/route/rule/%s' % compat.convert_to_bytes(route_rule_id)
params = {}
if client_token is None:
params[b'clientToken'] = generate_client_token()
else:
params[b'clientToken'] = client_token
return self._send_request(http_methods.DELETE, path, params=params, config=config)
参数说明如下:
参数名称 | 类型 | 是否必需 | 描述 |
---|---|---|---|
route_rule_id | bytes或str | 是 | 路由规则id |
client_token | bytes或str | 否 | 幂等性Token,是一个长度不超过64位的ASCII字符串。 |
config | BceClientConfiguration | 否 | 默认为初始化route_client时的config |