在使用SDK調用OpenAPI時,必須正確配置目標雲產品的Endpoint。例如,在建立資源時,應優先選擇與業務物理位置最近的地區Endpoint,以降低網路延遲並提高響應速度。在進行查詢、更新或刪除資源時,必須選擇資源所在地區的Endpoint,因為資源儲存具有地區屬性,跨地區操作可能導致訪問失敗或資料一致性風險。本節主要介紹V2.0 SDK對於Endpoint的配置。
Endpoint類型
Endpoint主要分為兩類:公網Endpoint和VPC Endpoint。當您的業務部署在VPC網路(例如ECS、ACK等)時,為了提高安全性並降低網路延遲,您可以選擇通過VPC Endpoint訪問該VPC內的雲上資源。更多資訊請參見服務存取點。
Endpoint設定
V2.0 SDK提供了兩種Endpoint設定方式,分別為指定Endpoint和通過指定RegionId自動擷取Endpoint。
方式一:指定Endpoint(推薦)
可以在初始化雲產品用戶端對象時指定Endpoint,支援公網Endpoint和VPC Endpoint。
範例程式碼:
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
// 設定endpoint
config.setEndpoint("<ENDPOINT>");方式二:指定RegionId
在未指定Endpoint的情況下,可以在初始化雲產品用戶端對象時指定RegionId,SDK底層將通過自動定址的方式擷取相應的Endpoint。
定址邏輯如下:
在大多數雲產品SDK中,定義了RegionId與Endpoint之間的映射關係endpointMap。例如,ECS SDK中的endpointMap內容如下:
{
"ap-northeast-2-pop": "ecs.aliyuncs.com",
"cn-beijing-finance-pop": "ecs.aliyuncs.com",
"cn-beijing-gov-1": "ecs.aliyuncs.com",
"cn-beijing-nu16-b01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-edge-1": "ecs.cn-qingdao-nebula.aliyuncs.com",
"cn-fujian": "ecs-cn-hangzhou.aliyuncs.com",
"cn-haidian-cm12-c01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou-bj-b01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou-finance": "ecs.aliyuncs.com",
"cn-hangzhou-internal-prod-1": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou-internal-test-1": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou-internal-test-2": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou-internal-test-3": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hangzhou-test-306": "ecs-cn-hangzhou.aliyuncs.com",
"cn-hongkong-finance-pop": "ecs.aliyuncs.com",
"cn-huhehaote-nebula-1": "ecs.cn-qingdao-nebula.aliyuncs.com",
"cn-north-2-gov-1": "ecs.aliyuncs.com",
"cn-shanghai-et15-b01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-shanghai-et2-b01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-shanghai-finance-1": "ecs-cn-hangzhou.aliyuncs.com",
"cn-shanghai-inner": "ecs.aliyuncs.com",
"cn-shanghai-internal-test-1": "ecs-cn-hangzhou.aliyuncs.com",
"cn-shenzhen-finance-1": "ecs-cn-hangzhou.aliyuncs.com",
"cn-shenzhen-inner": "ecs.aliyuncs.com",
"cn-shenzhen-st4-d01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-shenzhen-su18-b01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-wuhan": "ecs.aliyuncs.com",
"cn-yushanfang": "ecs.aliyuncs.com",
"cn-zhangbei": "ecs.aliyuncs.com",
"cn-zhangbei-na61-b01": "ecs-cn-hangzhou.aliyuncs.com",
"cn-zhangjiakou-na62-a01": "ecs.cn-zhangjiakou.aliyuncs.com",
"cn-zhengzhou-nebula-1": "ecs.cn-qingdao-nebula.aliyuncs.com",
"eu-west-1-oxs": "ecs.cn-shenzhen-cloudstone.aliyuncs.com",
"rus-west-1-pop": "ecs.aliyuncs.com"
}首先判斷是否存在endpointMap,若不存在,則根據拼接規則自動拼接Endpoint。
若endpointMap存在且包含指定的RegionId時,則Endpoint為指定的RegionId對應的值。
若endpointMap中不包含指定的RegionId時,則根據拼接規則自動拼接Endpoint。
拼接規則如下:
地區化部署產品:
<PRODUCT_CODE><SUFFIX><NET_WORK>.<REGION_ID>.aliyuncs.com中心化部署產品:
<PRODUCT_CODE><SUFFIX><NET_WORK>.aliyuncs.com
其中,部署類型和<PRODUCT_CODE>由所使用的雲產品SDK決定,其他三個參數需根據實際情況填寫:
<SUFFIX>:VPC Endpoint中尾碼。如何填寫請參照雲產品VPC Endpoint中的尾碼,請注意無需添加中橫線(-)。<NET_WORK>:Endpoint類型,預設使用公網Endpoint,可通過以下可選值修改Endpoint類型:vpc:可通過該值擷取VPC服務存取點。intranet:使用Log ServiceSDK(sls20201230)時,可通過該值擷取Log Service的VPC存取點。accelerate:使用Log ServiceSDK(sls20201230)時,可通過該值擷取Log Service的傳輸加速服務入口。
<REGION_ID>:資源所在地區。
由於VPC Endpoint格式多樣,因此不建議使用該方式拼接VPC Endpoint,建議使用指定Endpoint的方式配置VPC Endpoint。
範例程式碼:
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config();
// 指定regionId
config.setRegionId("<REGION_ID>");
config.setNetwork("<NET_WORK>"); // 公網Endpoint無需設定該參數,VPC Endpoint:vpc。
config.setSuffix("SUFFIX"); // 公網Endpoint無需設定該參數,VPC Endpoint請參照雲產品VPC Endpoint中的尾碼,請注意無需添加中橫線(-)。附:Endpoint尋找方式
產品的Endpoint可以通過在OpenAPI門戶上尋找:
在門戶頂部菜單選擇雲產品,例如ECS。
在雲產品首頁找到服務地區列表。
選擇相應RegionId所對應的Endpoint,進行複製粘貼即可。
還可以在API調試介面,在左側欄單擊服務地區,查看雲產品支援的Endpoint。