Endpoint配置
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文為您介紹V1.0 SDK如何設置Endpoint。
Endpoint是請求接口服務的網絡域名,如ecs.cn-hangzhou.aliyuncs.com,V1.0 SDK提供了四種Endpoint的尋址方式。下面按優先級排列的方式,為您詳細介紹尋址流程。
Endpoint尋址流程
用戶自定義Endpoint
它是優先級最高的尋址邏輯,用戶可以直接指定endpoint的具體內容。
只對當前Request請求生效,優先級最高。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider; import com.aliyuncs.ecs.model.v20140526.DescribeRegionsRequest; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.HttpResponse; import com.aliyuncs.profile.DefaultProfile; public class Sample { public static void main(String[] args) throws ClientException { // 從環境變量中獲取阿里云訪問憑證,確保已設置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider(); DefaultProfile profile = DefaultProfile.getProfile(); // 通過 SDK Core 初始化 client DefaultAcsClient client = new DefaultAcsClient(profile, credentialsProvider); DescribeRegionsRequest request = new DescribeRegionsRequest(); // 只對當前 Request 生效 request.setSysEndpoint("ecs.cn-shanghai.aliyuncs.com"); HttpResponse httpResponse = client.doAction(request); System.out.println(httpResponse.getHttpContentString()); } }
全局生效,支持添加多個endpoint。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider; import com.aliyuncs.ecs.model.v20140526.DescribeRegionsRequest; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.HttpResponse; import com.aliyuncs.profile.DefaultProfile; public class Sample { public static void main(String[] args) throws ClientException { // 從環境變量中獲取阿里云訪問憑證,確保已設置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider(); String regionId = "cn-hangzhou"; DefaultProfile profile = DefaultProfile.getProfile(regionId); // 全局生效 DefaultProfile.addEndpoint("cn-hangzhou", "ecs", "ecs.cn-hangzhou.aliyuncs.com"); DefaultProfile.addEndpoint("cn-shanghai", "ecs", "ecs.cn-shanghai.aliyuncs.com"); // 通過 SDK Core 初始化 client DefaultAcsClient client = new DefaultAcsClient(profile, credentialsProvider); DescribeRegionsRequest request = new DescribeRegionsRequest(); HttpResponse httpResponse = client.doAction(request); System.out.println(httpResponse.getHttpContentString()); } }
云產品SDK尋址
若用戶未設置自定義Endpoint,會校驗云產品SDK中是否存在Endpoint文件,Endpoint文件示例Ecs Endpoint Data File。如果存在,尋址邏輯如下:
若productNetwork(云產品網絡)的值是
public
,且Endpoint文件中包含傳入的regionId時,則會根據regionId在云產品SDK的Endpoint中自動尋址。若productNetwork的值非
public
,或者Endpoint文件不存在傳入的regionId時,則會根據規則自動拼接endpoint。
如果不存在,則進行Core SDK尋址。
import com.aliyuncs.DefaultAcsClient; import com.aliyuncs.auth.EnvironmentVariableCredentialsProvider; import com.aliyuncs.ecs.model.v20140526.DescribeRegionsRequest; import com.aliyuncs.exceptions.ClientException; import com.aliyuncs.http.HttpResponse; import com.aliyuncs.profile.DefaultProfile; public class Sample { public static void main(String[] args) throws ClientException { // 從環境變量中獲取阿里云訪問憑證,確保已設置環境變量ALIBABA_CLOUD_ACCESS_KEY_ID和ALIBABA_CLOUD_ACCESS_KEY_SECRET。 EnvironmentVariableCredentialsProvider credentialsProvider = new EnvironmentVariableCredentialsProvider(); // 設置阿里云區域ID,此處以“cn-shanghai”為例。 String regionId = "cn-shanghai"; // 初始化阿里云配置profile,用于創建客戶端。 DefaultProfile profile = DefaultProfile.getProfile(regionId); // 使用profile和訪問憑證創建DefaultAcsClient實例,用于發送請求。 DefaultAcsClient client = new DefaultAcsClient(profile, credentialsProvider); // 請求參數 DescribeRegionsRequest request = new DescribeRegionsRequest(); // 產品網絡訪問方式,productNetwork的默認值為 public(公網請求)。 // 還可設置的值share(跨域請求)、ipv6(Ipv6 請求)、proxy(代理請求)、inner(內部請求)、dualstack(Ipv4/Ipv6 雙協議棧)、vpc(vpc網絡) request.productNetwork = "public"; // // 針對于vpc網絡,還可以通過啟用enableUsingVpcEndpoint配置 // profile.enableUsingVpcEndpoint(); HttpResponse httpResponse = client.doAction(request); System.out.println(httpResponse.getHttpContentString()); } }
Core SDK尋址
若云產品SDK中不存在Endpoint文件時,根據regionId在SDK Core中的endpoints.json數據文件進行尋址。Core SDK尋址邏輯:優先從數據文件中云產品的Endpoint中尋址,如果沒有匹配到符合的endpoint,則會繼續根據云產品的productCode在global endpoints中尋址。
調用Location服務尋址
若通過Core SDK還未尋址成功,則會通過云產品的serviceCode和regionId調用Location服務接口獲取endpoint。
serviceCode:已在您要調用的接口的Request對象中默認設置,不需要手動設置。
regionId:初始化客戶端時傳入的regionId。
不是所有的云產品都支持該尋址模式,建議使用自定義的方式。