Endpoint配置
Endpoint又叫服務接入點,是請求接口服務的網絡域名,如產品ECS在杭州地域的Endpoint:ecs.cn-hangzhou.aliyuncs.com。每個產品都有其獨立的Endpoint,并且Endpoint與服務區域RegionId有關,不同地域可能是不同的Endpoint。本節主要介紹V2.0 SDK對于Endpoint的配置。
Endpoint類型
服務接入點主要有兩類:公網服務地址、VPC服務地址,更多信息請參見服務接入點。
Endpoint設置
V2.0 SDK提供了兩種Endpoint設置方式,下面按優先級排列:
建議您使用自定義Endpoint方式設置。
自定義Endpoint:用戶可以通過在初始化客戶端時指定Endpoint,產品的Endpoint可以通過OpenAPI 開發者門戶的產品主頁中查找,具體參考文末。
import com.aliyun.ecs20140526.Client; import com.aliyun.teaopenapi.models.Config; public class Sample { public static void main(String[] args) throws Exception { com.aliyun.teaopenapi.models.Config config = new Config(); config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")); config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // 設置服務域名 endpoint config.setEndpoint("<endpoint>"); Client client = new Client(config); } }
自定義RegionId:
若請求的產品SDK中存在RegionId和Endpoint關系對象,且傳入的RegionId在該對象中時,則從關系對象中獲取Endpoint。
若請求的產品SDK沒有RegionId和Endpoint關系對象,或者傳入的RegionId不在關系對象中時,則根據拼接規則自動拼接Endpoint。
import com.aliyun.ecs20140526.Client; import com.aliyun.teaopenapi.models.Config; public class Sample { public static void main(String[] args) throws Exception { Config config = new Config(); config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")); config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")); // 通過 regionId 映射到 endpoint config.setRegionId("<regionId>"); Client client = new Client(config); } }
VPC Endpoint使用場景
使用阿里云SDK方式調用OpenAPI時,若業務場景有以下需求,建議設置阿里云VPC Endpoint:
業務系統同時存在于本地機房和云上機房,基于阿里云VPC搭建不同的業務模塊,構建完全隔離的云上環境,云上云下通過公網進行業務交互。
基于阿里云VPC搭建云上數據中心,通過專線與云下內部數據中心打通,進行用戶核心數據安全保障,完美應對業務激增及數據快速同步,實現混合云方案。
基于阿里云VPC搭建多個應用,各應用都需要對外提供服務,且其波峰時間點不一致,希望多IP共享帶寬,盡量減小波峰波谷效應從而降低成本。
云上業務完全基于VPC構建,用戶遍布各個區域,為提升用戶訪問速度,業務系統同樣位于不同節點,需實現各節點之間的網絡高速互聯。
獲取文件上傳授權碼的Endpoint
部分OpenAPI支持設置開放平臺Endpoint,如果不設置,則使用默認的公網服務地址。它底層業務邏輯是調用文件上傳鑒權服務,獲取鑒權和默認對象存儲(OSS)的相關信息。
以視覺智能開放平臺的檢測人體計數接口設置VPC Endpoint為例:
import com.aliyun.facebody20191230.models.DetectBodyCountAdvanceRequest;
import com.aliyun.facebody20191230.models.DetectBodyCountResponse;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teautil.models.RuntimeOptions;
import com.google.gson.Gson;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
public class Sample {
public static void main(String[] args) throws Exception {
Config config = new com.aliyun.teaopenapi.models.Config();
config.setAccessKeyId(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"));
config.setAccessKeySecret(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
config.setRegionId("<regionId>");
// 設置通過 OSS 內網地址上傳文件,如需完全內網環境請打開注釋
// config.setEndpointType("internal");
com.aliyun.facebody20191230.Client client = new com.aliyun.facebody20191230.Client(config);
// 根據 regionId 設置鑒權服務的 VPC請求地址,例如杭州 openplatform-vpc.cn-hangzhou.aliyuncs.com
client._openPlatformEndpoint="openplatform-vpc.<regionId>.aliyuncs.com";
RuntimeOptions runtimeOptions = new RuntimeOptions();
// 讀取文件并實例化文件流
File f = new File("<your-file-path>");
InputStream in =new FileInputStream(f);
DetectBodyCountAdvanceRequest request = new DetectBodyCountAdvanceRequest();
request.setImageURLObject(in);
DetectBodyCountResponse resp = client.detectBodyCountAdvance(request, runtimeOptions);
// response 包含服務端響應的 body 和 headers
System.out.println(new Gson().toJson(resp.body));
System.out.println(new Gson().toJson(resp.headers));
}
}
附:Endpoint查找方式
產品的Endpoint可以通過在OpenAPI門戶上尋找:
在門戶頂部菜單選擇云產品,例如ECS:
2. 在云產品主頁找到服務區域列表:
3. 選擇相應RegionId所對應的Endpoint,進行復制粘貼即可。
還可以在API調試界面,在左側欄單擊服務區域,查看云產品支持的Endpoint。