Endpoint 配置

本节主要介绍原版 SDK 如何设置 Endpoint。

Endpoint 是请求接口服务的网络域名,如 ecs.cn-hangzhou.aliyuncs.com。

原版 SDK 提供了四种 Endpoint 的寻址方式,下面按优先级排列:

  1. 用户自定义: 是优先级最高的寻址逻辑,可以直接指定 Endpoint 的具体内容。

// 全局生效
DefaultProfile.addEndpoint("<RegionID>", "<Product>", "<Endpoint>");

// 只对当前 Request 生效
DescribeRegionsRequest request = new DescribeRegionsRequest();
request.setSysEndpoint("<Endpoint>");

2. Endpoint 拼接规则:在请求 VPC 网络时或产品 SDK 具有 Endpoint 数据文件时,当前寻址逻辑才会生效。 Endpoint 数据文件示例(Ecs Endpoint Data File)。

// 公网请求
request.productNetwork = "public"; // 因为 `productNetwork` 的默认值为 `public`,所以默认情况下不需要配置 `productNetwork`

// 跨域请求
request.productNetwork = "share";

// Ipv6 请求
request.productNetwork = "ipv6";

// 代理请求
request.productNetwork = "proxy";

// 内部请求
request.productNetwork = "inner";

// Ipv4/Ipv6 双协议栈
request.productNetwork = "dualstack";

// vpc 请求
request.productNetwork = "vpc";
// 或者通过启用`enableUsingVpcEndpoint`配置来访问 vpc 网络
DefaultProfile profile = DefaultProfile.getProfile("<RegionID>", "<AccessKeyId>", "<AccessKeySecret>");
profile.enableUsingVpcEndpoint();

3. SDK Core 寻址: 根据 Java SDK Core 中的endpoints.json数据文件进行寻址。

4. Location 服务寻址: 请求 Location 服务接口从远端获取,需要产品 SDK 具备 ServiceCode,该方式为原版 SDK 主要寻址方式,但是 Location 服务只能公网访问所以容易出现异常的报错,导致增加了开发者的排查问题成本。